diff options
Diffstat (limited to 'dist/Mesa/src/glsl')
197 files changed, 14576 insertions, 24955 deletions
diff --git a/dist/Mesa/src/glsl/SConscript b/dist/Mesa/src/glsl/SConscript index c4ab97c1e..fe9d50732 100644 --- a/dist/Mesa/src/glsl/SConscript +++ b/dist/Mesa/src/glsl/SConscript @@ -53,55 +53,25 @@ if env['msvc']: env.Prepend(CPPPATH = ['#/src/getopt']) env.PrependUnique(LIBS = [getopt]) -if env['crosscompile'] and not env['embedded']: - Import('builtin_glsl_function') -else: - # Copy these files to avoid generation object files into src/mesa/program - env.Prepend(CPPPATH = ['#src/mesa/main']) - env.Command('hash_table.c', '#src/mesa/main/hash_table.c', Copy('$TARGET', '$SOURCE')) - env.Command('imports.c', '#src/mesa/main/imports.c', Copy('$TARGET', '$SOURCE')) - # Copy these files to avoid generation object files into src/mesa/program - env.Prepend(CPPPATH = ['#src/mesa/program']) - env.Command('prog_hash_table.c', '#src/mesa/program/prog_hash_table.c', Copy('$TARGET', '$SOURCE')) - env.Command('symbol_table.c', '#src/mesa/program/symbol_table.c', Copy('$TARGET', '$SOURCE')) - - compiler_objs = env.StaticObject(source_lists['GLSL_COMPILER_CXX_FILES']) - - mesa_objs = env.StaticObject([ - 'hash_table.c', - 'imports.c', - 'prog_hash_table.c', - 'symbol_table.c', - ]) - - compiler_objs += mesa_objs - - builtin_compiler = env.Program( - target = 'builtin_compiler/builtin_compiler', - source = compiler_objs + glsl_sources + \ - source_lists['BUILTIN_COMPILER_CXX_FILES'], - ) - - # SCons builtin dependency scanner doesn't detect that glsl_lexer.ll - # depends on glsl_parser.h - env.Depends(builtin_compiler, glsl_parser) - - builtin_glsl_function = env.CodeGenerate( - target = 'builtin_function.cpp', - script = 'builtins/tools/generate_builtins.py', - source = builtin_compiler, - command = python_cmd + ' $SCRIPT $SOURCE > $TARGET' - ) - - env.Depends(builtin_glsl_function, ['builtins/tools/generate_builtins.py', '#src/glsl/builtins/tools/texture_builtins.py'] + Glob('builtins/ir/*')) - - Export('builtin_glsl_function') - - if env['hostonly']: - Return() - +# Copy these files to avoid generation object files into src/mesa/program +env.Prepend(CPPPATH = ['#src/mesa/main']) +env.Command('hash_table.c', '#src/mesa/main/hash_table.c', Copy('$TARGET', '$SOURCE')) +env.Command('imports.c', '#src/mesa/main/imports.c', Copy('$TARGET', '$SOURCE')) +# Copy these files to avoid generation object files into src/mesa/program +env.Prepend(CPPPATH = ['#src/mesa/program']) +env.Command('prog_hash_table.c', '#src/mesa/program/prog_hash_table.c', Copy('$TARGET', '$SOURCE')) +env.Command('symbol_table.c', '#src/mesa/program/symbol_table.c', Copy('$TARGET', '$SOURCE')) + +compiler_objs = env.StaticObject(source_lists['GLSL_COMPILER_CXX_FILES']) + +mesa_objs = env.StaticObject([ + 'hash_table.c', + 'imports.c', + 'prog_hash_table.c', + 'symbol_table.c', +]) -glsl_sources += builtin_glsl_function +compiler_objs += mesa_objs glsl = env.ConvenienceLibrary( target = 'glsl', @@ -128,11 +98,11 @@ if env['platform'] == 'windows': env.Prepend(LIBS = [glsl]) -glsl2 = env.Program( - target = 'glsl2', +glsl_compiler = env.Program( + target = 'glsl_compiler', source = compiler_objs, ) -env.Alias('glsl2', glsl2) +env.Alias('glsl_compiler', glsl_compiler) glcpp = env.Program( target = 'glcpp/glcpp', diff --git a/dist/Mesa/src/glsl/ast.h b/dist/Mesa/src/glsl/ast.h index e129d5d88..6b136f518 100644 --- a/dist/Mesa/src/glsl/ast.h +++ b/dist/Mesa/src/glsl/ast.h @@ -49,24 +49,7 @@ struct YYLTYPE; */ class ast_node { public: - /* Callers of this ralloc-based new need not call delete. It's - * easier to just ralloc_free 'ctx' (or any of its ancestors). */ - static void* operator new(size_t size, void *ctx) - { - void *node; - - node = rzalloc_size(ctx, size); - assert(node != NULL); - - return node; - } - - /* If the user *does* call delete, that's OK, we will just - * ralloc_free in that case. */ - static void operator delete(void *table) - { - ralloc_free(table); - } + DECLARE_RALLOC_CXX_OPERATORS(ast_node); /** * Print an AST node in something approximating the original GLSL code @@ -92,10 +75,10 @@ public: struct YYLTYPE locp; locp.source = this->location.source; - locp.first_line = this->location.line; - locp.first_column = this->location.column; - locp.last_line = locp.first_line; - locp.last_column = locp.first_column; + locp.first_line = this->location.first_line; + locp.first_column = this->location.first_column; + locp.last_line = this->location.last_line; + locp.last_column = this->location.last_column; return locp; } @@ -108,17 +91,35 @@ public: void set_location(const struct YYLTYPE &locp) { this->location.source = locp.source; - this->location.line = locp.first_line; - this->location.column = locp.first_column; + this->location.first_line = locp.first_line; + this->location.first_column = locp.first_column; + this->location.last_line = locp.last_line; + this->location.last_column = locp.last_column; + } + + /** + * Set the source location range of an AST node using two location nodes + * + * \sa ast_node::set_location + */ + void set_location_range(const struct YYLTYPE &begin, const struct YYLTYPE &end) + { + this->location.source = begin.source; + this->location.first_line = begin.first_line; + this->location.last_line = end.last_line; + this->location.first_column = begin.first_column; + this->location.last_column = end.last_column; } /** * Source location of the AST node. */ struct { - unsigned source; /**< GLSL source number. */ - unsigned line; /**< Line number within the source string. */ - unsigned column; /**< Column in the line. */ + unsigned source; /**< GLSL source number. */ + unsigned first_line; /**< First line number within the source string. */ + unsigned first_column; /**< First column in the first line. */ + unsigned last_line; /**< Last line number within the source string. */ + unsigned last_column; /**< Last column in the last line. */ } location; exec_node link; @@ -216,6 +217,13 @@ public: virtual ir_rvalue *hir(exec_list *instructions, struct _mesa_glsl_parse_state *state); + virtual void hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + + ir_rvalue *do_hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + bool needs_rvalue); + virtual void print(void) const; enum ast_operators oper; @@ -286,6 +294,9 @@ public: virtual ir_rvalue *hir(exec_list *instructions, struct _mesa_glsl_parse_state *state); + virtual void hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + private: /** * Is this function call actually a constructor? @@ -293,6 +304,39 @@ private: bool cons; }; +class ast_array_specifier : public ast_node { +public: + /** Unsized array specifier ([]) */ + explicit ast_array_specifier(const struct YYLTYPE &locp) + : is_unsized_array(true) + { + set_location(locp); + } + + /** Sized array specifier ([dim]) */ + ast_array_specifier(const struct YYLTYPE &locp, ast_expression *dim) + : is_unsized_array(false) + { + set_location(locp); + array_dimensions.push_tail(&dim->link); + } + + void add_dimension(ast_expression *dim) + { + array_dimensions.push_tail(&dim->link); + } + + virtual void print(void) const; + + /* If true, this means that the array has an unsized outermost dimension. */ + bool is_unsized_array; + + /* This list contains objects of type ast_node containing the + * sized dimensions only, in outermost-to-innermost order. + */ + exec_list array_dimensions; +}; + /** * C-style aggregate initialization class * @@ -313,9 +357,21 @@ public: /* empty */ } - ast_type_specifier *constructor_type; + /** + * glsl_type of the aggregate, which is inferred from the LHS of whatever + * the aggregate is being used to initialize. This can't be inferred at + * parse time (since the parser deals with ast_type_specifiers, not + * glsl_types), so the parser leaves it NULL. However, the ast-to-hir + * conversion code makes sure to fill it in with the appropriate type + * before hir() is called. + */ + const glsl_type *constructor_type; + virtual ir_rvalue *hir(exec_list *instructions, struct _mesa_glsl_parse_state *state); + + virtual void hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state); }; /** @@ -342,14 +398,14 @@ public: class ast_declaration : public ast_node { public: - ast_declaration(const char *identifier, bool is_array, ast_expression *array_size, - ast_expression *initializer); + ast_declaration(const char *identifier, + ast_array_specifier *array_specifier, + ast_expression *initializer); virtual void print(void) const; const char *identifier; - - bool is_array; - ast_expression *array_size; + + ast_array_specifier *array_specifier; ast_expression *initializer; }; @@ -363,24 +419,7 @@ enum { }; struct ast_type_qualifier { - /* Callers of this ralloc-based new need not call delete. It's - * easier to just ralloc_free 'ctx' (or any of its ancestors). */ - static void* operator new(size_t size, void *ctx) - { - void *node; - - node = rzalloc_size(ctx, size); - assert(node != NULL); - - return node; - } - - /* If the user *does* call delete, that's OK, we will just - * ralloc_free in that case. */ - static void operator delete(void *table) - { - ralloc_free(table); - } + DECLARE_RALLOC_CXX_OPERATORS(ast_type_qualifier); union { struct { @@ -391,6 +430,7 @@ struct ast_type_qualifier { unsigned in:1; unsigned out:1; unsigned centroid:1; + unsigned sample:1; unsigned uniform:1; unsigned smooth:1; unsigned flat:1; @@ -419,6 +459,12 @@ struct ast_type_qualifier { */ unsigned explicit_binding:1; + /** + * Flag set if GL_ARB_shader_atomic counter "offset" layout + * qualifier is used. + */ + unsigned explicit_offset:1; + /** \name Layout qualifiers for GL_AMD_conservative_depth */ /** \{ */ unsigned depth_any:1; @@ -435,17 +481,48 @@ struct ast_type_qualifier { unsigned column_major:1; unsigned row_major:1; /** \} */ + + /** \name Layout qualifiers for GLSL 1.50 geometry shaders */ + /** \{ */ + unsigned prim_type:1; + unsigned max_vertices:1; + /** \} */ + + /** + * local_size_{x,y,z} flags for compute shaders. Bit 0 represents + * local_size_x, and so on. + */ + unsigned local_size:3; + + /** \name Layout and memory qualifiers for ARB_shader_image_load_store. */ + /** \{ */ + unsigned early_fragment_tests:1; + unsigned explicit_image_format:1; + unsigned coherent:1; + unsigned _volatile:1; + unsigned restrict_flag:1; + unsigned read_only:1; /**< "readonly" qualifier. */ + unsigned write_only:1; /**< "writeonly" qualifier. */ + /** \} */ + + /** \name Layout qualifiers for GL_ARB_gpu_shader5 */ + /** \{ */ + unsigned invocations:1; + /** \} */ } /** \brief Set of flags, accessed by name. */ q; /** \brief Set of flags, accessed as a bitmask. */ - unsigned i; + uint64_t i; } flags; /** Precision of the type (highp/medium/lowp). */ unsigned precision:2; + /** Geometry shader invocations for GL_ARB_gpu_shader5. */ + int invocations; + /** * Location specified via GL_ARB_explicit_attrib_location layout * @@ -461,6 +538,12 @@ struct ast_type_qualifier { */ int index; + /** Maximum output vertices in GLSL 1.50 geometry shaders. */ + int max_vertices; + + /** Input or output primitive type in GLSL 1.50 geometry shaders */ + GLenum prim_type; + /** * Binding specified via GL_ARB_shading_language_420pack's "binding" keyword. * @@ -470,6 +553,41 @@ struct ast_type_qualifier { int binding; /** + * Offset specified via GL_ARB_shader_atomic_counter's "offset" + * keyword. + * + * \note + * This field is only valid if \c explicit_offset is set. + */ + int offset; + + /** + * Local size specified via GL_ARB_compute_shader's "local_size_{x,y,z}" + * layout qualifier. Element i of this array is only valid if + * flags.q.local_size & (1 << i) is set. + */ + int local_size[3]; + + /** + * Image format specified with an ARB_shader_image_load_store + * layout qualifier. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + GLenum image_format; + + /** + * Base type of the data read from or written to this image. Only + * the following enumerants are allowed: GLSL_TYPE_UINT, + * GLSL_TYPE_INT, GLSL_TYPE_FLOAT. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + glsl_base_type image_base_type; + + /** * Return true if and only if an interpolation qualifier is present. */ bool has_interpolation() const; @@ -504,6 +622,12 @@ struct ast_type_qualifier { bool merge_qualifier(YYLTYPE *loc, _mesa_glsl_parse_state *state, ast_type_qualifier q); + + bool merge_in_qualifier(YYLTYPE *loc, + _mesa_glsl_parse_state *state, + ast_type_qualifier q, + ast_node* &node); + }; class ast_declarator_list; @@ -547,10 +671,10 @@ public: * Use only if the objects are allocated from the same context and will not * be modified. Zeros the inherited ast_node's fields. */ - ast_type_specifier(const ast_type_specifier *that, bool is_array, - ast_expression *array_size) + ast_type_specifier(const ast_type_specifier *that, + ast_array_specifier *array_specifier) : ast_node(), type_name(that->type_name), structure(that->structure), - is_array(is_array), array_size(array_size), + array_specifier(array_specifier), default_precision(that->default_precision) { /* empty */ @@ -558,8 +682,7 @@ public: /** Construct a type specifier from a type name */ ast_type_specifier(const char *name) - : type_name(name), structure(NULL), - is_array(false), array_size(NULL), + : type_name(name), structure(NULL), array_specifier(NULL), default_precision(ast_precision_none) { /* empty */ @@ -567,8 +690,7 @@ public: /** Construct a type specifier from a structure definition */ ast_type_specifier(ast_struct_specifier *s) - : type_name(s->name), structure(s), - is_array(false), array_size(NULL), + : type_name(s->name), structure(s), array_specifier(NULL), default_precision(ast_precision_none) { /* empty */ @@ -585,8 +707,7 @@ public: const char *type_name; ast_struct_specifier *structure; - bool is_array; - ast_expression *array_size; + ast_array_specifier *array_specifier; /** For precision statements, this is the given precision; otherwise none. */ unsigned default_precision:2; @@ -598,6 +719,10 @@ public: virtual void print(void) const; bool has_qualifiers() const; + ast_fully_specified_type() : qualifier(), specifier(NULL) + { + } + const struct glsl_type *glsl_type(const char **name, struct _mesa_glsl_parse_state *state) const; @@ -635,8 +760,7 @@ public: ast_parameter_declarator() : type(NULL), identifier(NULL), - is_array(false), - array_size(NULL), + array_specifier(NULL), formal_parameter(false), is_void(false) { @@ -650,8 +774,7 @@ public: ast_fully_specified_type *type; const char *identifier; - bool is_array; - ast_expression *array_size; + ast_array_specifier *array_specifier; static void parameters_to_hir(exec_list *ast_parameters, bool formal, exec_list *ir_parameters, @@ -849,14 +972,13 @@ public: ast_node *body; -private: /** * Generate IR from the condition of a loop * * This is factored out of ::hir because some loops have the condition * test at the top (for and while), and others have it at the end (do-while). */ - void condition_to_hir(class ir_loop *, struct _mesa_glsl_parse_state *); + void condition_to_hir(exec_list *, struct _mesa_glsl_parse_state *); }; @@ -881,6 +1003,10 @@ public: class ast_function_definition : public ast_node { public: + ast_function_definition() : prototype(NULL), body(NULL) + { + } + virtual void print(void) const; virtual ir_rvalue *hir(exec_list *instructions, @@ -893,12 +1019,11 @@ public: class ast_interface_block : public ast_node { public: ast_interface_block(ast_type_qualifier layout, - const char *instance_name, - ast_expression *array_size) + const char *instance_name, + ast_array_specifier *array_specifier) : layout(layout), block_name(NULL), instance_name(instance_name), - array_size(array_size) + array_specifier(array_specifier) { - /* empty */ } virtual ir_rvalue *hir(exec_list *instructions, @@ -921,14 +1046,54 @@ public: /** * Declared array size of the block instance * - * If the block is not declared as an array, this field will be \c NULL. - * - * \note - * A block can only be an array if it also has an instance name. If this - * field is not \c NULL, ::instance_name must also not be \c NULL. + * If the block is not declared as an array or if the block instance array + * is unsized, this field will be \c NULL. */ - ast_expression *array_size; + ast_array_specifier *array_specifier; +}; + + +/** + * AST node representing a declaration of the input layout for geometry + * shaders. + */ +class ast_gs_input_layout : public ast_node +{ +public: + ast_gs_input_layout(const struct YYLTYPE &locp, GLenum prim_type) + : prim_type(prim_type) + { + set_location(locp); + } + + virtual ir_rvalue *hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + +private: + const GLenum prim_type; }; + + +/** + * AST node representing a decalaration of the input layout for compute + * shaders. + */ +class ast_cs_input_layout : public ast_node +{ +public: + ast_cs_input_layout(const struct YYLTYPE &locp, const unsigned *local_size) + { + memcpy(this->local_size, local_size, sizeof(this->local_size)); + set_location(locp); + } + + virtual ir_rvalue *hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + +private: + unsigned local_size[3]; +}; + /*@}*/ extern void @@ -946,9 +1111,8 @@ _mesa_ast_array_index_to_hir(void *mem_ctx, YYLTYPE &loc, YYLTYPE &idx_loc); extern void -_mesa_ast_set_aggregate_type(const ast_type_specifier *type, - ast_expression *expr, - _mesa_glsl_parse_state *state); +_mesa_ast_set_aggregate_type(const glsl_type *type, + ast_expression *expr); void emit_function(_mesa_glsl_parse_state *state, ir_function *f); diff --git a/dist/Mesa/src/glsl/ast_function.cpp b/dist/Mesa/src/glsl/ast_function.cpp index e34c1ddba..4b8447067 100644 --- a/dist/Mesa/src/glsl/ast_function.cpp +++ b/dist/Mesa/src/glsl/ast_function.cpp @@ -93,6 +93,57 @@ prototype_string(const glsl_type *return_type, const char *name, return str; } +static bool +verify_image_parameter(YYLTYPE *loc, _mesa_glsl_parse_state *state, + const ir_variable *formal, const ir_variable *actual) +{ + /** + * From the ARB_shader_image_load_store specification: + * + * "The values of image variables qualified with coherent, + * volatile, restrict, readonly, or writeonly may not be passed + * to functions whose formal parameters lack such + * qualifiers. [...] It is legal to have additional qualifiers + * on a formal parameter, but not to have fewer." + */ + if (actual->data.image.coherent && !formal->data.image.coherent) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`coherent' qualifier", formal->name); + return false; + } + + if (actual->data.image._volatile && !formal->data.image._volatile) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`volatile' qualifier", formal->name); + return false; + } + + if (actual->data.image.restrict_flag && !formal->data.image.restrict_flag) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`restrict' qualifier", formal->name); + return false; + } + + if (actual->data.image.read_only && !formal->data.image.read_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`readonly' qualifier", formal->name); + return false; + } + + if (actual->data.image.write_only && !formal->data.image.write_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`writeonly' qualifier", formal->name); + return false; + } + + return true; +} + /** * Verify that 'out' and 'inout' actual parameters are lvalues. Also, verify * that 'const_in' formal parameters (an extension in our IR) correspond to @@ -123,7 +174,7 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, YYLTYPE loc = actual_ast->get_location(); /* Verify that 'const_in' parameters are ir_constants. */ - if (formal->mode == ir_var_const_in && + if (formal->data.mode == ir_var_const_in && actual->ir_type != ir_type_constant) { _mesa_glsl_error(&loc, state, "parameter `in %s' must be a constant expression", @@ -132,10 +183,10 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, } /* Verify that 'out' and 'inout' actual parameters are lvalues. */ - if (formal->mode == ir_var_function_out - || formal->mode == ir_var_function_inout) { + if (formal->data.mode == ir_var_function_out + || formal->data.mode == ir_var_function_inout) { const char *mode = NULL; - switch (formal->mode) { + switch (formal->data.mode) { case ir_var_function_out: mode = "out"; break; case ir_var_function_inout: mode = "inout"; break; default: assert(false); break; @@ -155,9 +206,9 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, ir_variable *var = actual->variable_referenced(); if (var) - var->assigned = true; + var->data.assigned = true; - if (var && var->read_only) { + if (var && var->data.read_only) { _mesa_glsl_error(&loc, state, "function parameter '%s %s' references the " "read-only variable '%s'", @@ -180,6 +231,13 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, } } + if (formal->type->is_image() && + actual->variable_referenced()) { + if (!verify_image_parameter(&loc, state, formal, + actual->variable_referenced())) + return false; + } + actual_ir_node = actual_ir_node->next; actual_ast_node = actual_ast_node->next; } @@ -274,37 +332,32 @@ fix_parameter(void *mem_ctx, ir_rvalue *actual, const glsl_type *formal_type, } /** - * If a function call is generated, \c call_ir will point to it on exit. - * Otherwise \c call_ir will be set to \c NULL. + * Generate a function call. + * + * For non-void functions, this returns a dereference of the temporary variable + * which stores the return value for the call. For void functions, this returns + * NULL. */ static ir_rvalue * generate_call(exec_list *instructions, ir_function_signature *sig, exec_list *actual_parameters, - ir_call **call_ir, struct _mesa_glsl_parse_state *state) { void *ctx = state; exec_list post_call_conversions; - *call_ir = NULL; - /* Perform implicit conversion of arguments. For out parameters, we need * to place them in a temporary variable and do the conversion after the * call takes place. Since we haven't emitted the call yet, we'll place * the post-call conversions in a temporary exec_list, and emit them later. */ - exec_list_iterator actual_iter = actual_parameters->iterator(); - exec_list_iterator formal_iter = sig->parameters.iterator(); - - while (actual_iter.has_next()) { - ir_rvalue *actual = (ir_rvalue *) actual_iter.get(); - ir_variable *formal = (ir_variable *) formal_iter.get(); - - assert(actual != NULL); - assert(formal != NULL); + foreach_two_lists(formal_node, &sig->parameters, + actual_node, actual_parameters) { + ir_rvalue *actual = (ir_rvalue *) actual_node; + ir_variable *formal = (ir_variable *) formal_node; if (formal->type->is_numeric() || formal->type->is_boolean()) { - switch (formal->mode) { + switch (formal->data.mode) { case ir_var_const_in: case ir_var_function_in: { ir_rvalue *converted @@ -316,16 +369,13 @@ generate_call(exec_list *instructions, ir_function_signature *sig, case ir_var_function_inout: fix_parameter(ctx, actual, formal->type, instructions, &post_call_conversions, - formal->mode == ir_var_function_inout); + formal->data.mode == ir_var_function_inout); break; default: assert (!"Illegal formal parameter mode"); break; } } - - actual_iter.next(); - formal_iter.next(); } /* If the function call is a constant expression, don't generate any @@ -388,7 +438,8 @@ match_function_by_name(const char *name, if (f != NULL) { /* Look for a match in the local shader. If exact, we're done. */ bool is_exact = false; - sig = local_sig = f->matching_signature(actual_parameters, &is_exact); + sig = local_sig = f->matching_signature(state, actual_parameters, + &is_exact); if (is_exact) goto done; @@ -402,33 +453,8 @@ match_function_by_name(const char *name, } /* Local shader has no exact candidates; check the built-ins. */ - _mesa_glsl_initialize_functions(state); - for (unsigned i = 0; i < state->num_builtins_to_link; i++) { - ir_function *builtin = - state->builtins_to_link[i]->symbols->get_function(name); - if (builtin == NULL) - continue; - - bool is_exact = false; - ir_function_signature *builtin_sig = - builtin->matching_signature(actual_parameters, &is_exact); - - if (builtin_sig == NULL) - continue; - - /* If the built-in signature is exact, we can stop. */ - if (is_exact) { - sig = builtin_sig; - goto done; - } - - if (sig == NULL) { - /* We found an inexact match, which is better than nothing. However, - * we should keep searching for an exact match. - */ - sig = builtin_sig; - } - } + _mesa_glsl_initialize_builtin_functions(); + sig = _mesa_glsl_find_builtin_function(state, name, actual_parameters); done: if (sig != NULL) { @@ -445,6 +471,25 @@ done: return sig; } +static void +print_function_prototypes(_mesa_glsl_parse_state *state, YYLTYPE *loc, + ir_function *f) +{ + if (f == NULL) + return; + + foreach_list (node, &f->signatures) { + ir_function_signature *sig = (ir_function_signature *) node; + + if (sig->is_builtin() && !sig->is_builtin_available(state)) + continue; + + char *str = prototype_string(sig->return_type, f->name, &sig->parameters); + _mesa_glsl_error(loc, state, " %s", str); + ralloc_free(str); + } +} + /** * Raise a "no matching function" error, listing all possible overloads the * compiler considered so developers can figure out what went wrong. @@ -455,27 +500,23 @@ no_matching_function_error(const char *name, exec_list *actual_parameters, _mesa_glsl_parse_state *state) { - char *str = prototype_string(NULL, name, actual_parameters); - _mesa_glsl_error(loc, state, "no matching function for call to `%s'", str); - ralloc_free(str); - - const char *prefix = "candidates are: "; + gl_shader *sh = _mesa_glsl_get_builtin_function_shader(); - for (int i = -1; i < (int) state->num_builtins_to_link; i++) { - glsl_symbol_table *syms = i >= 0 ? state->builtins_to_link[i]->symbols - : state->symbols; - ir_function *f = syms->get_function(name); - if (f == NULL) - continue; - - foreach_list (node, &f->signatures) { - ir_function_signature *sig = (ir_function_signature *) node; + if (state->symbols->get_function(name) == NULL + && (!state->uses_builtin_functions + || sh->symbols->get_function(name) == NULL)) { + _mesa_glsl_error(loc, state, "no function with name '%s'", name); + } else { + char *str = prototype_string(NULL, name, actual_parameters); + _mesa_glsl_error(loc, state, + "no matching function for call to `%s'; candidates are:", + str); + ralloc_free(str); - str = prototype_string(sig->return_type, f->name, &sig->parameters); - _mesa_glsl_error(loc, state, "%s%s", prefix, str); - ralloc_free(str); + print_function_prototypes(state, loc, state->symbols->get_function(name)); - prefix = " "; + if (state->uses_builtin_functions) { + print_function_prototypes(state, loc, sh->symbols->get_function(name)); } } } @@ -626,7 +667,7 @@ process_vec_mat_constructor(exec_list *instructions, * int i = { 1 }; // illegal, i is not an aggregate" */ if (constructor_type->vector_elements <= 1) { - _mesa_glsl_error(loc, state, "Aggregates can only initialize vectors, " + _mesa_glsl_error(loc, state, "aggregates can only initialize vectors, " "matrices, arrays, and structs"); return ir_rvalue::error_value(ctx); } @@ -753,21 +794,21 @@ process_array_constructor(exec_list *instructions, exec_list actual_parameters; const unsigned parameter_count = process_parameters(instructions, &actual_parameters, parameters, state); + bool is_unsized_array = constructor_type->is_unsized_array(); - if ((parameter_count == 0) - || ((constructor_type->length != 0) - && (constructor_type->length != parameter_count))) { - const unsigned min_param = (constructor_type->length == 0) - ? 1 : constructor_type->length; + if ((parameter_count == 0) || + (!is_unsized_array && (constructor_type->length != parameter_count))) { + const unsigned min_param = is_unsized_array + ? 1 : constructor_type->length; _mesa_glsl_error(loc, state, "array constructor must have %s %u " "parameter%s", - (constructor_type->length == 0) ? "at least" : "exactly", + is_unsized_array ? "at least" : "exactly", min_param, (min_param <= 1) ? "" : "s"); return ir_rvalue::error_value(ctx); } - if (constructor_type->length == 0) { + if (is_unsized_array) { constructor_type = glsl_type::get_array_instance(constructor_type->element_type(), parameter_count); @@ -1672,7 +1713,7 @@ ast_function_expression::hir(exec_list *instructions, } else { const ast_expression *id = subexpressions[0]; const char *func_name = id->primary_expression.identifier; - YYLTYPE loc = id->get_location(); + YYLTYPE loc = get_location(); exec_list actual_parameters; process_parameters(instructions, &actual_parameters, &this->expressions, @@ -1681,7 +1722,6 @@ ast_function_expression::hir(exec_list *instructions, ir_function_signature *sig = match_function_by_name(func_name, &actual_parameters, state); - ir_call *call = NULL; ir_rvalue *value = NULL; if (sig == NULL) { no_matching_function_error(func_name, &loc, &actual_parameters, state); @@ -1690,8 +1730,7 @@ ast_function_expression::hir(exec_list *instructions, /* an error has already been emitted */ value = ir_rvalue::error_value(ctx); } else { - value = generate_call(instructions, sig, &actual_parameters, - &call, state); + value = generate_call(instructions, sig, &actual_parameters, state); } return value; @@ -1706,14 +1745,12 @@ ast_aggregate_initializer::hir(exec_list *instructions, { void *ctx = state; YYLTYPE loc = this->get_location(); - const char *name; if (!this->constructor_type) { _mesa_glsl_error(&loc, state, "type of C-style initializer unknown"); return ir_rvalue::error_value(ctx); } - const glsl_type *const constructor_type = - this->constructor_type->glsl_type(&name, state); + const glsl_type *const constructor_type = this->constructor_type; if (!state->ARB_shading_language_420pack_enable) { _mesa_glsl_error(&loc, state, "C-style initialization requires the " @@ -1721,12 +1758,12 @@ ast_aggregate_initializer::hir(exec_list *instructions, return ir_rvalue::error_value(ctx); } - if (this->constructor_type->is_array) { + if (constructor_type->is_array()) { return process_array_constructor(instructions, constructor_type, &loc, &this->expressions, state); } - if (this->constructor_type->structure) { + if (constructor_type->is_record()) { return process_record_constructor(instructions, constructor_type, &loc, &this->expressions, state); } diff --git a/dist/Mesa/src/glsl/ast_to_hir.cpp b/dist/Mesa/src/glsl/ast_to_hir.cpp index b06a0816e..332f934ff 100644 --- a/dist/Mesa/src/glsl/ast_to_hir.cpp +++ b/dist/Mesa/src/glsl/ast_to_hir.cpp @@ -56,10 +56,17 @@ #include "glsl_types.h" #include "program/hash_table.h" #include "ir.h" +#include "ir_builder.h" + +using namespace ir_builder; static void detect_conflicting_assignments(struct _mesa_glsl_parse_state *state, exec_list *instructions); +static void +remove_per_vertex_blocks(exec_list *instructions, + _mesa_glsl_parse_state *state, ir_variable_mode mode); + void _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) @@ -72,6 +79,9 @@ _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) state->toplevel_ir = instructions; + state->gs_input_prim_type_specified = false; + state->cs_input_local_size_specified = false; + /* Section 4.2 of the GLSL 1.20 specification states: * "The built-in functions are scoped in a scope outside the global scope * users declare global variables in. That is, a shader's global scope, @@ -112,6 +122,45 @@ _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) var->remove(); instructions->push_head(var); } + + /* Figure out if gl_FragCoord is actually used in fragment shader */ + ir_variable *const var = state->symbols->get_variable("gl_FragCoord"); + if (var != NULL) + state->fs_uses_gl_fragcoord = var->data.used; + + /* From section 7.1 (Built-In Language Variables) of the GLSL 4.10 spec: + * + * If multiple shaders using members of a built-in block belonging to + * the same interface are linked together in the same program, they + * must all redeclare the built-in block in the same way, as described + * in section 4.3.7 "Interface Blocks" for interface block matching, or + * a link error will result. + * + * The phrase "using members of a built-in block" implies that if two + * shaders are linked together and one of them *does not use* any members + * of the built-in block, then that shader does not need to have a matching + * redeclaration of the built-in block. + * + * This appears to be a clarification to the behaviour established for + * gl_PerVertex by GLSL 1.50, therefore implement it regardless of GLSL + * version. + * + * The definition of "interface" in section 4.3.7 that applies here is as + * follows: + * + * The boundary between adjacent programmable pipeline stages: This + * spans all the outputs in all compilation units of the first stage + * and all the inputs in all compilation units of the second stage. + * + * Therefore this rule applies to both inter- and intra-stage linking. + * + * The easiest way to implement this is to check whether the shader uses + * gl_PerVertex right after ast-to-ir conversion, and if it doesn't, simply + * remove all the relevant variable declaration from the IR, so that the + * linker won't see them and complain about mismatches. + */ + remove_per_vertex_blocks(instructions, state, ir_var_shader_in); + remove_per_vertex_blocks(instructions, state, ir_var_shader_out); } @@ -130,7 +179,7 @@ _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) */ bool apply_implicit_conversion(const glsl_type *to, ir_rvalue * &from, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; if (to->base_type == from->type->base_type) @@ -181,8 +230,8 @@ apply_implicit_conversion(const glsl_type *to, ir_rvalue * &from, static const struct glsl_type * arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, - bool multiply, - struct _mesa_glsl_parse_state *state, YYLTYPE *loc) + bool multiply, + struct _mesa_glsl_parse_state *state, YYLTYPE *loc) { const glsl_type *type_a = value_a->type; const glsl_type *type_b = value_b->type; @@ -195,7 +244,7 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, */ if (!type_a->is_numeric() || !type_b->is_numeric()) { _mesa_glsl_error(loc, state, - "Operands to arithmetic operators must be numeric"); + "operands to arithmetic operators must be numeric"); return glsl_type::error_type; } @@ -207,8 +256,8 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, if (!apply_implicit_conversion(type_a, value_b, state) && !apply_implicit_conversion(type_b, value_a, state)) { _mesa_glsl_error(loc, state, - "Could not implicitly convert operands to " - "arithmetic operator"); + "could not implicitly convert operands to " + "arithmetic operator"); return glsl_type::error_type; } type_a = value_a->type; @@ -225,7 +274,7 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, */ if (type_a->base_type != type_b->base_type) { _mesa_glsl_error(loc, state, - "base type mismatch for arithmetic operator"); + "base type mismatch for arithmetic operator"); return glsl_type::error_type; } @@ -247,7 +296,7 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, */ if (type_a->is_scalar()) { if (!type_b->is_scalar()) - return type_b; + return type_b; } else if (type_b->is_scalar()) { return type_a; } @@ -265,11 +314,11 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, */ if (type_a->is_vector() && type_b->is_vector()) { if (type_a == type_b) { - return type_a; + return type_a; } else { - _mesa_glsl_error(loc, state, - "vector size mismatch for arithmetic operator"); - return glsl_type::error_type; + _mesa_glsl_error(loc, state, + "vector size mismatch for arithmetic operator"); + return glsl_type::error_type; } } @@ -300,64 +349,64 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, */ if (! multiply) { if (type_a == type_b) - return type_a; + return type_a; } else { if (type_a->is_matrix() && type_b->is_matrix()) { - /* Matrix multiply. The columns of A must match the rows of B. Given - * the other previously tested constraints, this means the vector type - * of a row from A must be the same as the vector type of a column from - * B. - */ - if (type_a->row_type() == type_b->column_type()) { - /* The resulting matrix has the number of columns of matrix B and - * the number of rows of matrix A. We get the row count of A by - * looking at the size of a vector that makes up a column. The - * transpose (size of a row) is done for B. - */ - const glsl_type *const type = - glsl_type::get_instance(type_a->base_type, - type_a->column_type()->vector_elements, - type_b->row_type()->vector_elements); - assert(type != glsl_type::error_type); - - return type; - } + /* Matrix multiply. The columns of A must match the rows of B. Given + * the other previously tested constraints, this means the vector type + * of a row from A must be the same as the vector type of a column from + * B. + */ + if (type_a->row_type() == type_b->column_type()) { + /* The resulting matrix has the number of columns of matrix B and + * the number of rows of matrix A. We get the row count of A by + * looking at the size of a vector that makes up a column. The + * transpose (size of a row) is done for B. + */ + const glsl_type *const type = + glsl_type::get_instance(type_a->base_type, + type_a->column_type()->vector_elements, + type_b->row_type()->vector_elements); + assert(type != glsl_type::error_type); + + return type; + } } else if (type_a->is_matrix()) { - /* A is a matrix and B is a column vector. Columns of A must match - * rows of B. Given the other previously tested constraints, this - * means the vector type of a row from A must be the same as the - * vector the type of B. - */ - if (type_a->row_type() == type_b) { - /* The resulting vector has a number of elements equal to - * the number of rows of matrix A. */ - const glsl_type *const type = - glsl_type::get_instance(type_a->base_type, - type_a->column_type()->vector_elements, - 1); - assert(type != glsl_type::error_type); - - return type; - } + /* A is a matrix and B is a column vector. Columns of A must match + * rows of B. Given the other previously tested constraints, this + * means the vector type of a row from A must be the same as the + * vector the type of B. + */ + if (type_a->row_type() == type_b) { + /* The resulting vector has a number of elements equal to + * the number of rows of matrix A. */ + const glsl_type *const type = + glsl_type::get_instance(type_a->base_type, + type_a->column_type()->vector_elements, + 1); + assert(type != glsl_type::error_type); + + return type; + } } else { - assert(type_b->is_matrix()); - - /* A is a row vector and B is a matrix. Columns of A must match rows - * of B. Given the other previously tested constraints, this means - * the type of A must be the same as the vector type of a column from - * B. - */ - if (type_a == type_b->column_type()) { - /* The resulting vector has a number of elements equal to - * the number of columns of matrix B. */ - const glsl_type *const type = - glsl_type::get_instance(type_a->base_type, - type_b->row_type()->vector_elements, - 1); - assert(type != glsl_type::error_type); - - return type; - } + assert(type_b->is_matrix()); + + /* A is a row vector and B is a matrix. Columns of A must match rows + * of B. Given the other previously tested constraints, this means + * the type of A must be the same as the vector type of a column from + * B. + */ + if (type_a == type_b->column_type()) { + /* The resulting vector has a number of elements equal to + * the number of columns of matrix B. */ + const glsl_type *const type = + glsl_type::get_instance(type_a->base_type, + type_b->row_type()->vector_elements, + 1); + assert(type != glsl_type::error_type); + + return type; + } } _mesa_glsl_error(loc, state, "size mismatch for matrix multiplication"); @@ -374,7 +423,7 @@ arithmetic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, static const struct glsl_type * unary_arithmetic_result_type(const struct glsl_type *type, - struct _mesa_glsl_parse_state *state, YYLTYPE *loc) + struct _mesa_glsl_parse_state *state, YYLTYPE *loc) { /* From GLSL 1.50 spec, page 57: * @@ -386,7 +435,7 @@ unary_arithmetic_result_type(const struct glsl_type *type, */ if (!type->is_numeric()) { _mesa_glsl_error(loc, state, - "Operands to arithmetic operators must be numeric"); + "operands to arithmetic operators must be numeric"); return glsl_type::error_type; } @@ -460,8 +509,8 @@ bit_logic_result_type(const struct glsl_type *type_a, static const struct glsl_type * modulus_result_type(const struct glsl_type *type_a, - const struct glsl_type *type_b, - struct _mesa_glsl_parse_state *state, YYLTYPE *loc) + const struct glsl_type *type_b, + struct _mesa_glsl_parse_state *state, YYLTYPE *loc) { if (!state->check_version(130, 300, loc, "operator '%%' is reserved")) { return glsl_type::error_type; @@ -473,16 +522,16 @@ modulus_result_type(const struct glsl_type *type_a, * unsigned." */ if (!type_a->is_integer()) { - _mesa_glsl_error(loc, state, "LHS of operator %% must be an integer."); + _mesa_glsl_error(loc, state, "LHS of operator %% must be an integer"); return glsl_type::error_type; } if (!type_b->is_integer()) { - _mesa_glsl_error(loc, state, "RHS of operator %% must be an integer."); + _mesa_glsl_error(loc, state, "RHS of operator %% must be an integer"); return glsl_type::error_type; } if (type_a->base_type != type_b->base_type) { _mesa_glsl_error(loc, state, - "operands of %% must have the same base type"); + "operands of %% must have the same base type"); return glsl_type::error_type; } @@ -493,8 +542,8 @@ modulus_result_type(const struct glsl_type *type_a, */ if (type_a->is_vector()) { if (!type_b->is_vector() - || (type_a->vector_elements == type_b->vector_elements)) - return type_a; + || (type_a->vector_elements == type_b->vector_elements)) + return type_a; } else return type_b; @@ -508,7 +557,7 @@ modulus_result_type(const struct glsl_type *type_a, static const struct glsl_type * relational_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, - struct _mesa_glsl_parse_state *state, YYLTYPE *loc) + struct _mesa_glsl_parse_state *state, YYLTYPE *loc) { const glsl_type *type_a = value_a->type; const glsl_type *type_b = value_b->type; @@ -523,8 +572,8 @@ relational_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, || !type_a->is_scalar() || !type_b->is_scalar()) { _mesa_glsl_error(loc, state, - "Operands to relational operators must be scalar and " - "numeric"); + "operands to relational operators must be scalar and " + "numeric"); return glsl_type::error_type; } @@ -535,8 +584,8 @@ relational_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, if (!apply_implicit_conversion(type_a, value_b, state) && !apply_implicit_conversion(type_b, value_a, state)) { _mesa_glsl_error(loc, state, - "Could not implicitly convert operands to " - "relational operator"); + "could not implicitly convert operands to " + "relational operator"); return glsl_type::error_type; } type_a = value_a->type; @@ -579,13 +628,13 @@ shift_result_type(const struct glsl_type *type_a, */ if (!type_a->is_integer()) { _mesa_glsl_error(loc, state, "LHS of operator %s must be an integer or " - "integer vector", ast_expression::operator_string(op)); + "integer vector", ast_expression::operator_string(op)); return glsl_type::error_type; } if (!type_b->is_integer()) { _mesa_glsl_error(loc, state, "RHS of operator %s must be an integer or " - "integer vector", ast_expression::operator_string(op)); + "integer vector", ast_expression::operator_string(op)); return glsl_type::error_type; } @@ -593,9 +642,9 @@ shift_result_type(const struct glsl_type *type_a, * a scalar as well." */ if (type_a->is_scalar() && !type_b->is_scalar()) { - _mesa_glsl_error(loc, state, "If the first operand of %s is scalar, the " - "second must be scalar as well", - ast_expression::operator_string(op)); + _mesa_glsl_error(loc, state, "if the first operand of %s is scalar, the " + "second must be scalar as well", + ast_expression::operator_string(op)); return glsl_type::error_type; } @@ -605,9 +654,9 @@ shift_result_type(const struct glsl_type *type_a, if (type_a->is_vector() && type_b->is_vector() && type_a->vector_elements != type_b->vector_elements) { - _mesa_glsl_error(loc, state, "Vector operands to operator %s must " - "have same number of elements", - ast_expression::operator_string(op)); + _mesa_glsl_error(loc, state, "vector operands to operator %s must " + "have same number of elements", + ast_expression::operator_string(op)); return glsl_type::error_type; } @@ -635,8 +684,8 @@ shift_result_type(const struct glsl_type *type_a, */ ir_rvalue * validate_assignment(struct _mesa_glsl_parse_state *state, - const glsl_type *lhs_type, ir_rvalue *rhs, - bool is_initializer) + YYLTYPE loc, const glsl_type *lhs_type, + ir_rvalue *rhs, bool is_initializer) { /* If there is already some error in the RHS, just return it. Anything * else will lead to an avalanche of error message back to the user. @@ -649,17 +698,22 @@ validate_assignment(struct _mesa_glsl_parse_state *state, if (rhs->type == lhs_type) return rhs; - /* If the array element types are the same and the size of the LHS is zero, + /* If the array element types are the same and the LHS is unsized, * the assignment is okay for initializers embedded in variable * declarations. * * Note: Whole-array assignments are not permitted in GLSL 1.10, but this * is handled by ir_dereference::is_lvalue. */ - if (is_initializer && lhs_type->is_array() && rhs->type->is_array() - && (lhs_type->element_type() == rhs->type->element_type()) - && (lhs_type->array_size() == 0)) { - return rhs; + if (lhs_type->is_unsized_array() && rhs->type->is_array() + && (lhs_type->element_type() == rhs->type->element_type())) { + if (is_initializer) { + return rhs; + } else { + _mesa_glsl_error(&loc, state, + "implicitly sized arrays cannot be assigned"); + return NULL; + } } /* Check for implicit conversion in GLSL 1.20 */ @@ -668,6 +722,12 @@ validate_assignment(struct _mesa_glsl_parse_state *state, return rhs; } + _mesa_glsl_error(&loc, state, + "%s of type %s cannot be assigned to " + "variable of type %s", + is_initializer ? "initializer" : "value", + rhs->type->name, lhs_type->name); + return NULL; } @@ -677,83 +737,95 @@ mark_whole_array_access(ir_rvalue *access) ir_dereference_variable *deref = access->as_dereference_variable(); if (deref && deref->var) { - deref->var->max_array_access = deref->type->length - 1; + deref->var->data.max_array_access = deref->type->length - 1; } } -ir_rvalue * +static bool do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state, - const char *non_lvalue_description, - ir_rvalue *lhs, ir_rvalue *rhs, bool is_initializer, - YYLTYPE lhs_loc) + const char *non_lvalue_description, + ir_rvalue *lhs, ir_rvalue *rhs, + ir_rvalue **out_rvalue, bool needs_rvalue, + bool is_initializer, + YYLTYPE lhs_loc) { void *ctx = state; bool error_emitted = (lhs->type->is_error() || rhs->type->is_error()); + ir_rvalue *extract_channel = NULL; /* If the assignment LHS comes back as an ir_binop_vector_extract * expression, move it to the RHS as an ir_triop_vector_insert. */ if (lhs->ir_type == ir_type_expression) { - ir_expression *const expr = lhs->as_expression(); + ir_expression *const lhs_expr = lhs->as_expression(); - if (unlikely(expr->operation == ir_binop_vector_extract)) { + if (unlikely(lhs_expr->operation == ir_binop_vector_extract)) { ir_rvalue *new_rhs = - validate_assignment(state, lhs->type, rhs, is_initializer); + validate_assignment(state, lhs_loc, lhs->type, + rhs, is_initializer); if (new_rhs == NULL) { - _mesa_glsl_error(& lhs_loc, state, "type mismatch"); return lhs; } else { + /* This converts: + * - LHS: (expression float vector_extract <vec> <channel>) + * - RHS: <scalar> + * into: + * - LHS: <vec> + * - RHS: (expression vec2 vector_insert <vec> <channel> <scalar>) + * + * The LHS type is now a vector instead of a scalar. Since GLSL + * allows assignments to be used as rvalues, we need to re-extract + * the channel from assignment_temp when returning the rvalue. + */ + extract_channel = lhs_expr->operands[1]; rhs = new(ctx) ir_expression(ir_triop_vector_insert, - expr->operands[0]->type, - expr->operands[0], + lhs_expr->operands[0]->type, + lhs_expr->operands[0], new_rhs, - expr->operands[1]); - lhs = expr->operands[0]->clone(ctx, NULL); + extract_channel); + lhs = lhs_expr->operands[0]->clone(ctx, NULL); } } } ir_variable *lhs_var = lhs->variable_referenced(); if (lhs_var) - lhs_var->assigned = true; + lhs_var->data.assigned = true; if (!error_emitted) { if (non_lvalue_description != NULL) { _mesa_glsl_error(&lhs_loc, state, "assignment to %s", - non_lvalue_description); - error_emitted = true; + non_lvalue_description); + error_emitted = true; } else if (lhs->variable_referenced() != NULL - && lhs->variable_referenced()->read_only) { + && lhs->variable_referenced()->data.read_only) { _mesa_glsl_error(&lhs_loc, state, "assignment to read-only variable '%s'", lhs->variable_referenced()->name); error_emitted = true; - } else if (lhs->type->is_array() && !state->check_version(120, 300, &lhs_loc, "whole array assignment forbidden")) { - /* From page 32 (page 38 of the PDF) of the GLSL 1.10 spec: - * - * "Other binary or unary expressions, non-dereferenced - * arrays, function names, swizzles with repeated fields, - * and constants cannot be l-values." + /* From page 32 (page 38 of the PDF) of the GLSL 1.10 spec: + * + * "Other binary or unary expressions, non-dereferenced + * arrays, function names, swizzles with repeated fields, + * and constants cannot be l-values." * * The restriction on arrays is lifted in GLSL 1.20 and GLSL ES 3.00. - */ - error_emitted = true; + */ + error_emitted = true; } else if (!lhs->is_lvalue()) { - _mesa_glsl_error(& lhs_loc, state, "non-lvalue in assignment"); - error_emitted = true; + _mesa_glsl_error(& lhs_loc, state, "non-lvalue in assignment"); + error_emitted = true; } } ir_rvalue *new_rhs = - validate_assignment(state, lhs->type, rhs, is_initializer); - if (new_rhs == NULL) { - _mesa_glsl_error(& lhs_loc, state, "type mismatch"); - } else { + validate_assignment(state, lhs_loc, lhs->type, rhs, is_initializer); + if (new_rhs != NULL) { rhs = new_rhs; /* If the LHS array was not declared with a size, it takes it size from @@ -761,28 +833,30 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state, * dereference of a variable. Any other case would require that the LHS * is either not an l-value or not a whole array. */ - if (lhs->type->array_size() == 0) { - ir_dereference *const d = lhs->as_dereference(); + if (lhs->type->is_unsized_array()) { + ir_dereference *const d = lhs->as_dereference(); - assert(d != NULL); + assert(d != NULL); - ir_variable *const var = d->variable_referenced(); + ir_variable *const var = d->variable_referenced(); - assert(var != NULL); + assert(var != NULL); - if (var->max_array_access >= unsigned(rhs->type->array_size())) { - /* FINISHME: This should actually log the location of the RHS. */ - _mesa_glsl_error(& lhs_loc, state, "array size must be > %u due to " - "previous access", - var->max_array_access); - } + if (var->data.max_array_access >= unsigned(rhs->type->array_size())) { + /* FINISHME: This should actually log the location of the RHS. */ + _mesa_glsl_error(& lhs_loc, state, "array size must be > %u due to " + "previous access", + var->data.max_array_access); + } - var->type = glsl_type::get_array_instance(lhs->type->element_type(), - rhs->type->array_size()); - d->type = var->type; + var->type = glsl_type::get_array_instance(lhs->type->element_type(), + rhs->type->array_size()); + d->type = var->type; + } + if (lhs->type->is_array()) { + mark_whole_array_access(rhs); + mark_whole_array_access(lhs); } - mark_whole_array_access(rhs); - mark_whole_array_access(lhs); } /* Most callers of do_assignment (assign, add_assign, pre_inc/dec, @@ -790,22 +864,33 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state, * to handle things like: * * i = j += 1; - * - * So we always just store the computed value being assigned to a - * temporary and return a deref of that temporary. If the rvalue - * ends up not being used, the temp will get copy-propagated out. */ - ir_variable *var = new(ctx) ir_variable(rhs->type, "assignment_tmp", - ir_var_temporary); - ir_dereference_variable *deref_var = new(ctx) ir_dereference_variable(var); - instructions->push_tail(var); - instructions->push_tail(new(ctx) ir_assignment(deref_var, rhs)); - deref_var = new(ctx) ir_dereference_variable(var); + if (needs_rvalue) { + ir_variable *var = new(ctx) ir_variable(rhs->type, "assignment_tmp", + ir_var_temporary); + instructions->push_tail(var); + instructions->push_tail(assign(var, rhs)); - if (!error_emitted) - instructions->push_tail(new(ctx) ir_assignment(lhs, deref_var)); + if (!error_emitted) { + ir_dereference_variable *deref_var = new(ctx) ir_dereference_variable(var); + instructions->push_tail(new(ctx) ir_assignment(lhs, deref_var)); + } + ir_rvalue *rvalue = new(ctx) ir_dereference_variable(var); - return new(ctx) ir_dereference_variable(var); + if (extract_channel) { + rvalue = new(ctx) ir_expression(ir_binop_vector_extract, + rvalue, + extract_channel->clone(ctx, NULL)); + } + + *out_rvalue = rvalue; + } else { + if (!error_emitted) + instructions->push_tail(new(ctx) ir_assignment(lhs, rhs)); + *out_rvalue = NULL; + } + + return error_emitted; } static ir_rvalue * @@ -817,7 +902,7 @@ get_lvalue_copy(exec_list *instructions, ir_rvalue *lvalue) var = new(ctx) ir_variable(lvalue->type, "_post_incdec_tmp", ir_var_temporary); instructions->push_tail(var); - var->mode = ir_var_auto; + var->data.mode = ir_var_auto; instructions->push_tail(new(ctx) ir_assignment(new(ctx) ir_dereference_variable(var), lvalue)); @@ -827,8 +912,7 @@ get_lvalue_copy(exec_list *instructions, ir_rvalue *lvalue) ir_rvalue * -ast_node::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) +ast_node::hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) { (void) instructions; (void) state; @@ -836,6 +920,20 @@ ast_node::hir(exec_list *instructions, return NULL; } +void +ast_function_expression::hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + (void)hir(instructions, state); +} + +void +ast_aggregate_initializer::hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + (void)hir(instructions, state); +} + static ir_rvalue * do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) { @@ -856,19 +954,19 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) case GLSL_TYPE_ARRAY: { for (unsigned int i = 0; i < op0->type->length; i++) { - ir_rvalue *e0, *e1, *result; - - e0 = new(mem_ctx) ir_dereference_array(op0->clone(mem_ctx, NULL), - new(mem_ctx) ir_constant(i)); - e1 = new(mem_ctx) ir_dereference_array(op1->clone(mem_ctx, NULL), - new(mem_ctx) ir_constant(i)); - result = do_comparison(mem_ctx, operation, e0, e1); - - if (cmp) { - cmp = new(mem_ctx) ir_expression(join_op, cmp, result); - } else { - cmp = result; - } + ir_rvalue *e0, *e1, *result; + + e0 = new(mem_ctx) ir_dereference_array(op0->clone(mem_ctx, NULL), + new(mem_ctx) ir_constant(i)); + e1 = new(mem_ctx) ir_dereference_array(op1->clone(mem_ctx, NULL), + new(mem_ctx) ir_constant(i)); + result = do_comparison(mem_ctx, operation, e0, e1); + + if (cmp) { + cmp = new(mem_ctx) ir_expression(join_op, cmp, result); + } else { + cmp = result; + } } mark_whole_array_access(op0); @@ -878,20 +976,20 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) case GLSL_TYPE_STRUCT: { for (unsigned int i = 0; i < op0->type->length; i++) { - ir_rvalue *e0, *e1, *result; - const char *field_name = op0->type->fields.structure[i].name; - - e0 = new(mem_ctx) ir_dereference_record(op0->clone(mem_ctx, NULL), - field_name); - e1 = new(mem_ctx) ir_dereference_record(op1->clone(mem_ctx, NULL), - field_name); - result = do_comparison(mem_ctx, operation, e0, e1); - - if (cmp) { - cmp = new(mem_ctx) ir_expression(join_op, cmp, result); - } else { - cmp = result; - } + ir_rvalue *e0, *e1, *result; + const char *field_name = op0->type->fields.structure[i].name; + + e0 = new(mem_ctx) ir_dereference_record(op0->clone(mem_ctx, NULL), + field_name); + e1 = new(mem_ctx) ir_dereference_record(op1->clone(mem_ctx, NULL), + field_name); + result = do_comparison(mem_ctx, operation, e0, e1); + + if (cmp) { + cmp = new(mem_ctx) ir_expression(join_op, cmp, result); + } else { + cmp = result; + } } break; } @@ -899,7 +997,9 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) case GLSL_TYPE_ERROR: case GLSL_TYPE_VOID: case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_INTERFACE: + case GLSL_TYPE_ATOMIC_UINT: /* I assume a comparison of a struct containing a sampler just * ignores the sampler present in the type. */ @@ -934,8 +1034,8 @@ get_scalar_boolean_operand(exec_list *instructions, if (!*error_emitted) { YYLTYPE loc = expr->get_location(); _mesa_glsl_error(&loc, state, "%s of `%s' must be scalar boolean", - operand_name, - parent_expr->operator_string(parent_expr->oper)); + operand_name, + parent_expr->operator_string(parent_expr->oper)); *error_emitted = true; } @@ -958,7 +1058,7 @@ check_builtin_array_max_size(const char *name, unsigned size, * gl_MaxTextureCoords." */ _mesa_glsl_error(&loc, state, "`gl_TexCoord' array size cannot " - "be larger than gl_MaxTextureCoords (%u)\n", + "be larger than gl_MaxTextureCoords (%u)", state->Const.MaxTextureCoords); } else if (strcmp("gl_ClipDistance", name) == 0 && size > state->Const.MaxClipPlanes) { @@ -972,7 +1072,7 @@ check_builtin_array_max_size(const char *name, unsigned size, * gl_MaxClipDistances." */ _mesa_glsl_error(&loc, state, "`gl_ClipDistance' array size cannot " - "be larger than gl_MaxClipDistances (%u)\n", + "be larger than gl_MaxClipDistances (%u)", state->Const.MaxClipPlanes); } } @@ -1001,7 +1101,22 @@ constant_one_for_inc_dec(void *ctx, const glsl_type *type) ir_rvalue * ast_expression::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) +{ + return do_hir(instructions, state, true); +} + +void +ast_expression::hir_no_rvalue(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + do_hir(instructions, state, false); +} + +ir_rvalue * +ast_expression::do_hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + bool needs_rvalue) { void *ctx = state; static const int operations[AST_NUM_OPERATORS] = { @@ -1069,18 +1184,18 @@ ast_expression::hir(exec_list *instructions, switch (this->oper) { case ast_aggregate: - assert(!"ast_aggregate: Should never get here."); - break; + assert(!"ast_aggregate: Should never get here."); + break; case ast_assign: { op[0] = this->subexpressions[0]->hir(instructions, state); op[1] = this->subexpressions[1]->hir(instructions, state); - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0], op[1], false, - this->subexpressions[0]->get_location()); - error_emitted = result->type->is_error(); + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0], op[1], &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); break; } @@ -1102,7 +1217,7 @@ ast_expression::hir(exec_list *instructions, error_emitted = type->is_error(); result = new(ctx) ir_expression(operations[this->oper], type, - op[0], NULL); + op[0], NULL); break; case ast_add: @@ -1113,12 +1228,12 @@ ast_expression::hir(exec_list *instructions, op[1] = this->subexpressions[1]->hir(instructions, state); type = arithmetic_result_type(op[0], op[1], - (this->oper == ast_mul), - state, & loc); + (this->oper == ast_mul), + state, & loc); error_emitted = type->is_error(); result = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); break; case ast_mod: @@ -1130,7 +1245,7 @@ ast_expression::hir(exec_list *instructions, assert(operations[this->oper] == ir_binop_mod); result = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); error_emitted = type->is_error(); break; @@ -1166,7 +1281,7 @@ ast_expression::hir(exec_list *instructions, && type->is_scalar())); result = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); error_emitted = type->is_error(); break; @@ -1185,22 +1300,26 @@ ast_expression::hir(exec_list *instructions, * case this conversion is done." */ if ((!apply_implicit_conversion(op[0]->type, op[1], state) - && !apply_implicit_conversion(op[1]->type, op[0], state)) - || (op[0]->type != op[1]->type)) { - _mesa_glsl_error(& loc, state, "operands of `%s' must have the same " - "type", (this->oper == ast_equal) ? "==" : "!="); - error_emitted = true; + && !apply_implicit_conversion(op[1]->type, op[0], state)) + || (op[0]->type != op[1]->type)) { + _mesa_glsl_error(& loc, state, "operands of `%s' must have the same " + "type", (this->oper == ast_equal) ? "==" : "!="); + error_emitted = true; } else if ((op[0]->type->is_array() || op[1]->type->is_array()) && !state->check_version(120, 300, &loc, "array comparisons forbidden")) { - error_emitted = true; + error_emitted = true; + } else if ((op[0]->type->contains_opaque() || + op[1]->type->contains_opaque())) { + _mesa_glsl_error(&loc, state, "opaque type comparisons forbidden"); + error_emitted = true; } if (error_emitted) { - result = new(ctx) ir_constant(false); + result = new(ctx) ir_constant(false); } else { - result = do_comparison(ctx, operations[this->oper], op[0], op[1]); - assert(result->type == glsl_type::bool_type); + result = do_comparison(ctx, operations[this->oper], op[0], op[1]); + assert(result->type == glsl_type::bool_type); } break; @@ -1212,7 +1331,7 @@ ast_expression::hir(exec_list *instructions, type = bit_logic_result_type(op[0]->type, op[1]->type, this->oper, state, &loc); result = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); error_emitted = op[0]->type->is_error() || op[1]->type->is_error(); break; @@ -1220,12 +1339,12 @@ ast_expression::hir(exec_list *instructions, op[0] = this->subexpressions[0]->hir(instructions, state); if (!state->check_bitwise_operations_allowed(&loc)) { - error_emitted = true; + error_emitted = true; } if (!op[0]->type->is_integer()) { - _mesa_glsl_error(&loc, state, "operand of `~' must be an integer"); - error_emitted = true; + _mesa_glsl_error(&loc, state, "operand of `~' must be an integer"); + error_emitted = true; } type = error_emitted ? glsl_type::error_type : op[0]->type; @@ -1235,35 +1354,35 @@ ast_expression::hir(exec_list *instructions, case ast_logic_and: { exec_list rhs_instructions; op[0] = get_scalar_boolean_operand(instructions, state, this, 0, - "LHS", &error_emitted); + "LHS", &error_emitted); op[1] = get_scalar_boolean_operand(&rhs_instructions, state, this, 1, - "RHS", &error_emitted); + "RHS", &error_emitted); if (rhs_instructions.is_empty()) { - result = new(ctx) ir_expression(ir_binop_logic_and, op[0], op[1]); - type = result->type; + result = new(ctx) ir_expression(ir_binop_logic_and, op[0], op[1]); + type = result->type; } else { - ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type, - "and_tmp", - ir_var_temporary); - instructions->push_tail(tmp); - - ir_if *const stmt = new(ctx) ir_if(op[0]); - instructions->push_tail(stmt); - - stmt->then_instructions.append_list(&rhs_instructions); - ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); - ir_assignment *const then_assign = - new(ctx) ir_assignment(then_deref, op[1]); - stmt->then_instructions.push_tail(then_assign); - - ir_dereference *const else_deref = new(ctx) ir_dereference_variable(tmp); - ir_assignment *const else_assign = - new(ctx) ir_assignment(else_deref, new(ctx) ir_constant(false)); - stmt->else_instructions.push_tail(else_assign); - - result = new(ctx) ir_dereference_variable(tmp); - type = tmp->type; + ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type, + "and_tmp", + ir_var_temporary); + instructions->push_tail(tmp); + + ir_if *const stmt = new(ctx) ir_if(op[0]); + instructions->push_tail(stmt); + + stmt->then_instructions.append_list(&rhs_instructions); + ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); + ir_assignment *const then_assign = + new(ctx) ir_assignment(then_deref, op[1]); + stmt->then_instructions.push_tail(then_assign); + + ir_dereference *const else_deref = new(ctx) ir_dereference_variable(tmp); + ir_assignment *const else_assign = + new(ctx) ir_assignment(else_deref, new(ctx) ir_constant(false)); + stmt->else_instructions.push_tail(else_assign); + + result = new(ctx) ir_dereference_variable(tmp); + type = tmp->type; } break; } @@ -1271,35 +1390,35 @@ ast_expression::hir(exec_list *instructions, case ast_logic_or: { exec_list rhs_instructions; op[0] = get_scalar_boolean_operand(instructions, state, this, 0, - "LHS", &error_emitted); + "LHS", &error_emitted); op[1] = get_scalar_boolean_operand(&rhs_instructions, state, this, 1, - "RHS", &error_emitted); + "RHS", &error_emitted); if (rhs_instructions.is_empty()) { - result = new(ctx) ir_expression(ir_binop_logic_or, op[0], op[1]); - type = result->type; + result = new(ctx) ir_expression(ir_binop_logic_or, op[0], op[1]); + type = result->type; } else { - ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type, - "or_tmp", - ir_var_temporary); - instructions->push_tail(tmp); - - ir_if *const stmt = new(ctx) ir_if(op[0]); - instructions->push_tail(stmt); - - ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); - ir_assignment *const then_assign = - new(ctx) ir_assignment(then_deref, new(ctx) ir_constant(true)); - stmt->then_instructions.push_tail(then_assign); - - stmt->else_instructions.append_list(&rhs_instructions); - ir_dereference *const else_deref = new(ctx) ir_dereference_variable(tmp); - ir_assignment *const else_assign = - new(ctx) ir_assignment(else_deref, op[1]); - stmt->else_instructions.push_tail(else_assign); - - result = new(ctx) ir_dereference_variable(tmp); - type = tmp->type; + ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type, + "or_tmp", + ir_var_temporary); + instructions->push_tail(tmp); + + ir_if *const stmt = new(ctx) ir_if(op[0]); + instructions->push_tail(stmt); + + ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); + ir_assignment *const then_assign = + new(ctx) ir_assignment(then_deref, new(ctx) ir_constant(true)); + stmt->then_instructions.push_tail(then_assign); + + stmt->else_instructions.append_list(&rhs_instructions); + ir_dereference *const else_deref = new(ctx) ir_dereference_variable(tmp); + ir_assignment *const else_assign = + new(ctx) ir_assignment(else_deref, op[1]); + stmt->else_instructions.push_tail(else_assign); + + result = new(ctx) ir_dereference_variable(tmp); + type = tmp->type; } break; } @@ -1312,20 +1431,20 @@ ast_expression::hir(exec_list *instructions, * expressions and result in a Boolean expression." */ op[0] = get_scalar_boolean_operand(instructions, state, this, 0, "LHS", - &error_emitted); + &error_emitted); op[1] = get_scalar_boolean_operand(instructions, state, this, 1, "RHS", - &error_emitted); + &error_emitted); result = new(ctx) ir_expression(operations[this->oper], glsl_type::bool_type, - op[0], op[1]); + op[0], op[1]); break; case ast_logic_not: op[0] = get_scalar_boolean_operand(instructions, state, this, 0, - "operand", &error_emitted); + "operand", &error_emitted); result = new(ctx) ir_expression(operations[this->oper], glsl_type::bool_type, - op[0], NULL); + op[0], NULL); break; case ast_mul_assign: @@ -1336,17 +1455,18 @@ ast_expression::hir(exec_list *instructions, op[1] = this->subexpressions[1]->hir(instructions, state); type = arithmetic_result_type(op[0], op[1], - (this->oper == ast_mul_assign), - state, & loc); + (this->oper == ast_mul_assign), + state, & loc); ir_rvalue *temp_rhs = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); - error_emitted = (op[0]->type->is_error()); + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); /* GLSL 1.10 does not allow array assignment. However, we don't have to * explicitly test for this because none of the binary expression @@ -1366,13 +1486,14 @@ ast_expression::hir(exec_list *instructions, ir_rvalue *temp_rhs; temp_rhs = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); - - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); - error_emitted = type->is_error(); + op[0], op[1]); + + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); break; } @@ -1384,11 +1505,12 @@ ast_expression::hir(exec_list *instructions, &loc); ir_rvalue *temp_rhs = new(ctx) ir_expression(operations[this->oper], type, op[0], op[1]); - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); - error_emitted = op[0]->type->is_error() || op[1]->type->is_error(); + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); break; } @@ -1401,11 +1523,12 @@ ast_expression::hir(exec_list *instructions, state, &loc); ir_rvalue *temp_rhs = new(ctx) ir_expression(operations[this->oper], type, op[0], op[1]); - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); - error_emitted = op[0]->type->is_error() || op[1]->type->is_error(); + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); break; } @@ -1417,7 +1540,7 @@ ast_expression::hir(exec_list *instructions, * first expression, which must result in a scalar Boolean." */ op[0] = get_scalar_boolean_operand(instructions, state, this, 0, - "condition", &error_emitted); + "condition", &error_emitted); /* The :? operator is implemented by generating an anonymous temporary * followed by an if-statement. The last instruction in each branch of @@ -1440,16 +1563,16 @@ ast_expression::hir(exec_list *instructions, * expression." */ if ((!apply_implicit_conversion(op[1]->type, op[2], state) - && !apply_implicit_conversion(op[2]->type, op[1], state)) - || (op[1]->type != op[2]->type)) { - YYLTYPE loc = this->subexpressions[1]->get_location(); - - _mesa_glsl_error(& loc, state, "Second and third operands of ?: " - "operator must have matching types."); - error_emitted = true; - type = glsl_type::error_type; + && !apply_implicit_conversion(op[2]->type, op[1], state)) + || (op[1]->type != op[2]->type)) { + YYLTYPE loc = this->subexpressions[1]->get_location(); + + _mesa_glsl_error(& loc, state, "second and third operands of ?: " + "operator must have matching types"); + error_emitted = true; + type = glsl_type::error_type; } else { - type = op[1]->type; + type = op[1]->type; } /* From page 33 (page 39 of the PDF) of the GLSL 1.10 spec: @@ -1459,9 +1582,9 @@ ast_expression::hir(exec_list *instructions, */ if (type->is_array() && !state->check_version(120, 300, &loc, - "Second and third operands of ?: operator " + "second and third operands of ?: operator " "cannot be arrays")) { - error_emitted = true; + error_emitted = true; } ir_constant *cond_val = op[0]->constant_expression_value(); @@ -1469,32 +1592,32 @@ ast_expression::hir(exec_list *instructions, ir_constant *else_val = op[2]->constant_expression_value(); if (then_instructions.is_empty() - && else_instructions.is_empty() - && (cond_val != NULL) && (then_val != NULL) && (else_val != NULL)) { - result = (cond_val->value.b[0]) ? then_val : else_val; + && else_instructions.is_empty() + && (cond_val != NULL) && (then_val != NULL) && (else_val != NULL)) { + result = (cond_val->value.b[0]) ? then_val : else_val; } else { - ir_variable *const tmp = - new(ctx) ir_variable(type, "conditional_tmp", ir_var_temporary); - instructions->push_tail(tmp); - - ir_if *const stmt = new(ctx) ir_if(op[0]); - instructions->push_tail(stmt); - - then_instructions.move_nodes_to(& stmt->then_instructions); - ir_dereference *const then_deref = - new(ctx) ir_dereference_variable(tmp); - ir_assignment *const then_assign = - new(ctx) ir_assignment(then_deref, op[1]); - stmt->then_instructions.push_tail(then_assign); - - else_instructions.move_nodes_to(& stmt->else_instructions); - ir_dereference *const else_deref = - new(ctx) ir_dereference_variable(tmp); - ir_assignment *const else_assign = - new(ctx) ir_assignment(else_deref, op[2]); - stmt->else_instructions.push_tail(else_assign); - - result = new(ctx) ir_dereference_variable(tmp); + ir_variable *const tmp = + new(ctx) ir_variable(type, "conditional_tmp", ir_var_temporary); + instructions->push_tail(tmp); + + ir_if *const stmt = new(ctx) ir_if(op[0]); + instructions->push_tail(stmt); + + then_instructions.move_nodes_to(& stmt->then_instructions); + ir_dereference *const then_deref = + new(ctx) ir_dereference_variable(tmp); + ir_assignment *const then_assign = + new(ctx) ir_assignment(then_deref, op[1]); + stmt->then_instructions.push_tail(then_assign); + + else_instructions.move_nodes_to(& stmt->else_instructions); + ir_dereference *const else_deref = + new(ctx) ir_dereference_variable(tmp); + ir_assignment *const else_assign = + new(ctx) ir_assignment(else_deref, op[2]); + stmt->else_instructions.push_tail(else_assign); + + result = new(ctx) ir_dereference_variable(tmp); } break; } @@ -1502,7 +1625,7 @@ ast_expression::hir(exec_list *instructions, case ast_pre_inc: case ast_pre_dec: { this->non_lvalue_description = (this->oper == ast_pre_inc) - ? "pre-increment operation" : "pre-decrement operation"; + ? "pre-increment operation" : "pre-decrement operation"; op[0] = this->subexpressions[0]->hir(instructions, state); op[1] = constant_one_for_inc_dec(ctx, op[0]->type); @@ -1511,20 +1634,21 @@ ast_expression::hir(exec_list *instructions, ir_rvalue *temp_rhs; temp_rhs = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); - - result = do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); - error_emitted = op[0]->type->is_error(); + op[0], op[1]); + + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &result, needs_rvalue, false, + this->subexpressions[0]->get_location()); break; } case ast_post_inc: case ast_post_dec: { this->non_lvalue_description = (this->oper == ast_post_inc) - ? "post-increment operation" : "post-decrement operation"; + ? "post-increment operation" : "post-decrement operation"; op[0] = this->subexpressions[0]->hir(instructions, state); op[1] = constant_one_for_inc_dec(ctx, op[0]->type); @@ -1534,19 +1658,21 @@ ast_expression::hir(exec_list *instructions, ir_rvalue *temp_rhs; temp_rhs = new(ctx) ir_expression(operations[this->oper], type, - op[0], op[1]); + op[0], op[1]); /* Get a temporary of a copy of the lvalue before it's modified. * This may get thrown away later. */ result = get_lvalue_copy(instructions, op[0]->clone(ctx, NULL)); - (void)do_assignment(instructions, state, - this->subexpressions[0]->non_lvalue_description, - op[0]->clone(ctx, NULL), temp_rhs, false, - this->subexpressions[0]->get_location()); + ir_rvalue *junk_rvalue; + error_emitted = + do_assignment(instructions, state, + this->subexpressions[0]->non_lvalue_description, + op[0]->clone(ctx, NULL), temp_rhs, + &junk_rvalue, false, false, + this->subexpressions[0]->get_location()); - error_emitted = op[0]->type->is_error(); break; } @@ -1561,10 +1687,10 @@ ast_expression::hir(exec_list *instructions, op[1] = subexpressions[1]->hir(instructions, state); result = _mesa_ast_array_index_to_hir(ctx, state, op[0], op[1], - loc, index_loc); + loc, index_loc); if (result->type->is_error()) - error_emitted = true; + error_emitted = true; break; } @@ -1582,17 +1708,17 @@ ast_expression::hir(exec_list *instructions, * as 'variable_identifier'. */ ir_variable *var = - state->symbols->get_variable(this->primary_expression.identifier); + state->symbols->get_variable(this->primary_expression.identifier); if (var != NULL) { - var->used = true; - result = new(ctx) ir_dereference_variable(var); + var->data.used = true; + result = new(ctx) ir_dereference_variable(var); } else { - _mesa_glsl_error(& loc, state, "`%s' undeclared", - this->primary_expression.identifier); + _mesa_glsl_error(& loc, state, "`%s' undeclared", + this->primary_expression.identifier); - result = ir_rvalue::error_value(ctx); - error_emitted = true; + result = ir_rvalue::error_value(ctx); + error_emitted = true; } break; } @@ -1628,37 +1754,37 @@ ast_expression::hir(exec_list *instructions, YYLTYPE previous_operand_loc = loc; foreach_list_typed (ast_node, ast, link, &this->expressions) { - /* If one of the operands of comma operator does not generate any - * code, we want to emit a warning. At each pass through the loop - * previous_tail_pred will point to the last instruction in the - * stream *before* processing the previous operand. Naturally, - * instructions->tail_pred will point to the last instruction in the - * stream *after* processing the previous operand. If the two - * pointers match, then the previous operand had no effect. - * - * The warning behavior here differs slightly from GCC. GCC will - * only emit a warning if none of the left-hand operands have an - * effect. However, it will emit a warning for each. I believe that - * there are some cases in C (especially with GCC extensions) where - * it is useful to have an intermediate step in a sequence have no - * effect, but I don't think these cases exist in GLSL. Either way, - * it would be a giant hassle to replicate that behavior. - */ - if (previous_tail_pred == instructions->tail_pred) { - _mesa_glsl_warning(&previous_operand_loc, state, - "left-hand operand of comma expression has " - "no effect"); - } - - /* tail_pred is directly accessed instead of using the get_tail() - * method for performance reasons. get_tail() has extra code to - * return NULL when the list is empty. We don't care about that - * here, so using tail_pred directly is fine. - */ - previous_tail_pred = instructions->tail_pred; - previous_operand_loc = ast->get_location(); - - result = ast->hir(instructions, state); + /* If one of the operands of comma operator does not generate any + * code, we want to emit a warning. At each pass through the loop + * previous_tail_pred will point to the last instruction in the + * stream *before* processing the previous operand. Naturally, + * instructions->tail_pred will point to the last instruction in the + * stream *after* processing the previous operand. If the two + * pointers match, then the previous operand had no effect. + * + * The warning behavior here differs slightly from GCC. GCC will + * only emit a warning if none of the left-hand operands have an + * effect. However, it will emit a warning for each. I believe that + * there are some cases in C (especially with GCC extensions) where + * it is useful to have an intermediate step in a sequence have no + * effect, but I don't think these cases exist in GLSL. Either way, + * it would be a giant hassle to replicate that behavior. + */ + if (previous_tail_pred == instructions->tail_pred) { + _mesa_glsl_warning(&previous_operand_loc, state, + "left-hand operand of comma expression has " + "no effect"); + } + + /* tail_pred is directly accessed instead of using the get_tail() + * method for performance reasons. get_tail() has extra code to + * return NULL when the list is empty. We don't care about that + * here, so using tail_pred directly is fine. + */ + previous_tail_pred = instructions->tail_pred; + previous_operand_loc = ast->get_location(); + + result = ast->hir(instructions, state); } /* Any errors should have already been emitted in the loop above. @@ -1668,9 +1794,9 @@ ast_expression::hir(exec_list *instructions, } } type = NULL; /* use result->type, not type. */ - assert(result != NULL); + assert(result != NULL || !needs_rvalue); - if (result->type->is_error() && !error_emitted) + if (result && result->type->is_error() && !error_emitted) _mesa_glsl_error(& loc, state, "type mismatch"); return result; @@ -1679,7 +1805,7 @@ ast_expression::hir(exec_list *instructions, ir_rvalue * ast_expression_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { /* It is possible to have expression statements that don't have an * expression. This is the solitary semicolon: @@ -1691,7 +1817,7 @@ ast_expression_statement::hir(exec_list *instructions, * anything in that case. */ if (expression != NULL) - expression->hir(instructions, state); + expression->hir_no_rvalue(instructions, state); /* Statements do not have r-values. */ @@ -1701,7 +1827,7 @@ ast_expression_statement::hir(exec_list *instructions, ir_rvalue * ast_compound_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { if (new_scope) state->symbols->push_scope(); @@ -1717,80 +1843,120 @@ ast_compound_statement::hir(exec_list *instructions, return NULL; } +/** + * Evaluate the given exec_node (which should be an ast_node representing + * a single array dimension) and return its integer value. + */ +static unsigned +process_array_size(exec_node *node, + struct _mesa_glsl_parse_state *state) +{ + exec_list dummy_instructions; + + ast_node *array_size = exec_node_data(ast_node, node, link); + ir_rvalue *const ir = array_size->hir(& dummy_instructions, state); + YYLTYPE loc = array_size->get_location(); + + if (ir == NULL) { + _mesa_glsl_error(& loc, state, + "array size could not be resolved"); + return 0; + } + + if (!ir->type->is_integer()) { + _mesa_glsl_error(& loc, state, + "array size must be integer type"); + return 0; + } + + if (!ir->type->is_scalar()) { + _mesa_glsl_error(& loc, state, + "array size must be scalar type"); + return 0; + } + + ir_constant *const size = ir->constant_expression_value(); + if (size == NULL) { + _mesa_glsl_error(& loc, state, "array size must be a " + "constant valued expression"); + return 0; + } + + if (size->value.i[0] <= 0) { + _mesa_glsl_error(& loc, state, "array size must be > 0"); + return 0; + } + + assert(size->type == ir->type); + + /* If the array size is const (and we've verified that + * it is) then no instructions should have been emitted + * when we converted it to HIR. If they were emitted, + * then either the array size isn't const after all, or + * we are emitting unnecessary instructions. + */ + assert(dummy_instructions.is_empty()); + + return size->value.u[0]; +} static const glsl_type * -process_array_type(YYLTYPE *loc, const glsl_type *base, ast_node *array_size, - struct _mesa_glsl_parse_state *state) +process_array_type(YYLTYPE *loc, const glsl_type *base, + ast_array_specifier *array_specifier, + struct _mesa_glsl_parse_state *state) { - unsigned length = 0; + const glsl_type *array_type = base; - if (base == NULL) - return glsl_type::error_type; + if (array_specifier != NULL) { + if (base->is_array()) { - /* From page 19 (page 25) of the GLSL 1.20 spec: - * - * "Only one-dimensional arrays may be declared." - */ - if (base->is_array()) { - _mesa_glsl_error(loc, state, - "invalid array of `%s' (only one-dimensional arrays " - "may be declared)", - base->name); - return glsl_type::error_type; - } + /* From page 19 (page 25) of the GLSL 1.20 spec: + * + * "Only one-dimensional arrays may be declared." + */ + if (!state->ARB_arrays_of_arrays_enable) { + _mesa_glsl_error(loc, state, + "invalid array of `%s'" + "GL_ARB_arrays_of_arrays " + "required for defining arrays of arrays", + base->name); + return glsl_type::error_type; + } - if (array_size != NULL) { - exec_list dummy_instructions; - ir_rvalue *const ir = array_size->hir(& dummy_instructions, state); - YYLTYPE loc = array_size->get_location(); - - if (ir != NULL) { - if (!ir->type->is_integer()) { - _mesa_glsl_error(& loc, state, "array size must be integer type"); - } else if (!ir->type->is_scalar()) { - _mesa_glsl_error(& loc, state, "array size must be scalar type"); - } else { - ir_constant *const size = ir->constant_expression_value(); - - if (size == NULL) { - _mesa_glsl_error(& loc, state, "array size must be a " - "constant valued expression"); - } else if (size->value.i[0] <= 0) { - _mesa_glsl_error(& loc, state, "array size must be > 0"); - } else { - assert(size->type == ir->type); - length = size->value.u[0]; - - /* If the array size is const (and we've verified that - * it is) then no instructions should have been emitted - * when we converted it to HIR. If they were emitted, - * then either the array size isn't const after all, or - * we are emitting unnecessary instructions. - */ - assert(dummy_instructions.is_empty()); - } - } + if (base->length == 0) { + _mesa_glsl_error(loc, state, + "only the outermost array dimension can " + "be unsized", + base->name); + return glsl_type::error_type; + } } + + for (exec_node *node = array_specifier->array_dimensions.tail_pred; + !node->is_head_sentinel(); node = node->prev) { + unsigned array_size = process_array_size(node, state); + array_type = glsl_type::get_array_instance(array_type, array_size); + } + + if (array_specifier->is_unsized_array) + array_type = glsl_type::get_array_instance(array_type, 0); } - const glsl_type *array_type = glsl_type::get_array_instance(base, length); - return array_type != NULL ? array_type : glsl_type::error_type; + return array_type; } const glsl_type * ast_type_specifier::glsl_type(const char **name, - struct _mesa_glsl_parse_state *state) const + struct _mesa_glsl_parse_state *state) const { const struct glsl_type *type; type = state->symbols->get_type(this->type_name); *name = this->type_name; - if (this->is_array) { - YYLTYPE loc = this->get_location(); - type = process_array_type(&loc, type, this->array_size, state); - } + YYLTYPE loc = this->get_location(); + type = process_array_type(&loc, type, this->array_specifier, state); return type; } @@ -1806,7 +1972,7 @@ ast_fully_specified_type::glsl_type(const char **name, if (type->base_type == GLSL_TYPE_FLOAT && state->es_shader - && state->target == fragment_shader + && state->stage == MESA_SHADER_FRAGMENT && this->qualifier.precision == ast_precision_none && state->symbols->get_variable("#default precision") == NULL) { YYLTYPE loc = this->get_location(); @@ -1828,15 +1994,15 @@ ast_fully_specified_type::glsl_type(const char **name, * this function will produce undefined results. */ static bool -is_varying_var(ir_variable *var, _mesa_glsl_parser_targets target) +is_varying_var(ir_variable *var, gl_shader_stage target) { switch (target) { - case vertex_shader: - return var->mode == ir_var_shader_out; - case fragment_shader: - return var->mode == ir_var_shader_in; + case MESA_SHADER_VERTEX: + return var->data.mode == ir_var_shader_out; + case MESA_SHADER_FRAGMENT: + return var->data.mode == ir_var_shader_in; default: - return var->mode == ir_var_shader_out || var->mode == ir_var_shader_in; + return var->data.mode == ir_var_shader_out || var->data.mode == ir_var_shader_in; } } @@ -1846,7 +2012,7 @@ is_varying_var(ir_variable *var, _mesa_glsl_parser_targets target) */ static void validate_matrix_layout_for_type(struct _mesa_glsl_parse_state *state, - YYLTYPE *loc, + YYLTYPE *loc, const glsl_type *type, ir_variable *var) { @@ -1887,14 +2053,14 @@ validate_binding_qualifier(struct _mesa_glsl_parse_state *state, ir_variable *var, const ast_type_qualifier *qual) { - if (var->mode != ir_var_uniform) { + if (var->data.mode != ir_var_uniform) { _mesa_glsl_error(loc, state, - "the \"binding\" qualifier only applies to uniforms.\n"); + "the \"binding\" qualifier only applies to uniforms"); return false; } if (qual->binding < 0) { - _mesa_glsl_error(loc, state, "binding values must be >= 0.\n"); + _mesa_glsl_error(loc, state, "binding values must be >= 0"); return false; } @@ -1915,7 +2081,7 @@ validate_binding_qualifier(struct _mesa_glsl_parse_state *state, */ if (max_index >= ctx->Const.MaxUniformBufferBindings) { _mesa_glsl_error(loc, state, "layout(binding = %d) for %d UBOs exceeds " - "the maximum number of UBO binding points (%d).\n", + "the maximum number of UBO binding points (%d)", qual->binding, elements, ctx->Const.MaxUniformBufferBindings); return false; @@ -1929,68 +2095,322 @@ validate_binding_qualifier(struct _mesa_glsl_parse_state *state, * with an array of size N, all elements of the array from binding * through binding + N - 1 must be within this range." */ - unsigned limit; - switch (state->target) { - case vertex_shader: - limit = ctx->Const.VertexProgram.MaxTextureImageUnits; - break; - case geometry_shader: - limit = ctx->Const.GeometryProgram.MaxTextureImageUnits; - break; - case fragment_shader: - limit = ctx->Const.FragmentProgram.MaxTextureImageUnits; - break; - } + unsigned limit = ctx->Const.Program[state->stage].MaxTextureImageUnits; if (max_index >= limit) { _mesa_glsl_error(loc, state, "layout(binding = %d) for %d samplers " "exceeds the maximum number of texture image units " - "(%d).\n", qual->binding, elements, limit); + "(%d)", qual->binding, elements, limit); + + return false; + } + } else if (var->type->contains_atomic()) { + assert(ctx->Const.MaxAtomicBufferBindings <= MAX_COMBINED_ATOMIC_BUFFERS); + if (unsigned(qual->binding) >= ctx->Const.MaxAtomicBufferBindings) { + _mesa_glsl_error(loc, state, "layout(binding = %d) exceeds the " + " maximum number of atomic counter buffer bindings" + "(%d)", qual->binding, + ctx->Const.MaxAtomicBufferBindings); return false; } } else { _mesa_glsl_error(loc, state, "the \"binding\" qualifier only applies to uniform " - "blocks, samplers, or arrays of samplers.\n"); + "blocks, samplers, atomic counters, or arrays thereof"); return false; } return true; } + +static glsl_interp_qualifier +interpret_interpolation_qualifier(const struct ast_type_qualifier *qual, + ir_variable_mode mode, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + glsl_interp_qualifier interpolation; + if (qual->flags.q.flat) + interpolation = INTERP_QUALIFIER_FLAT; + else if (qual->flags.q.noperspective) + interpolation = INTERP_QUALIFIER_NOPERSPECTIVE; + else if (qual->flags.q.smooth) + interpolation = INTERP_QUALIFIER_SMOOTH; + else + interpolation = INTERP_QUALIFIER_NONE; + + if (interpolation != INTERP_QUALIFIER_NONE) { + if (mode != ir_var_shader_in && mode != ir_var_shader_out) { + _mesa_glsl_error(loc, state, + "interpolation qualifier `%s' can only be applied to " + "shader inputs or outputs.", + interpolation_string(interpolation)); + + } + + if ((state->stage == MESA_SHADER_VERTEX && mode == ir_var_shader_in) || + (state->stage == MESA_SHADER_FRAGMENT && mode == ir_var_shader_out)) { + _mesa_glsl_error(loc, state, + "interpolation qualifier `%s' cannot be applied to " + "vertex shader inputs or fragment shader outputs", + interpolation_string(interpolation)); + } + } + + return interpolation; +} + + +static void +validate_explicit_location(const struct ast_type_qualifier *qual, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + bool fail = false; + + /* Between GL_ARB_explicit_attrib_location an + * GL_ARB_separate_shader_objects, the inputs and outputs of any shader + * stage can be assigned explicit locations. The checking here associates + * the correct extension with the correct stage's input / output: + * + * input output + * ----- ------ + * vertex explicit_loc sso + * geometry sso sso + * fragment sso explicit_loc + */ + switch (state->stage) { + case MESA_SHADER_VERTEX: + if (var->data.mode == ir_var_shader_in) { + if (!state->check_explicit_attrib_location_allowed(loc, var)) + return; + + break; + } + + if (var->data.mode == ir_var_shader_out) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + + fail = true; + break; + + case MESA_SHADER_GEOMETRY: + if (var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + + fail = true; + break; + + case MESA_SHADER_FRAGMENT: + if (var->data.mode == ir_var_shader_in) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + + if (var->data.mode == ir_var_shader_out) { + if (!state->check_explicit_attrib_location_allowed(loc, var)) + return; + + break; + } + + fail = true; + break; + + case MESA_SHADER_COMPUTE: + _mesa_glsl_error(loc, state, + "compute shader variables cannot be given " + "explicit locations"); + return; + }; + + if (fail) { + _mesa_glsl_error(loc, state, + "%s cannot be given an explicit location in %s shader", + mode_string(var), + _mesa_shader_stage_to_string(state->stage)); + } else { + var->data.explicit_location = true; + + /* This bit of silliness is needed because invalid explicit locations + * are supposed to be flagged during linking. Small negative values + * biased by VERT_ATTRIB_GENERIC0 or FRAG_RESULT_DATA0 could alias + * built-in values (e.g., -16+VERT_ATTRIB_GENERIC0 = VERT_ATTRIB_POS). + * The linker needs to be able to differentiate these cases. This + * ensures that negative values stay negative. + */ + if (qual->location >= 0) { + switch (state->stage) { + case MESA_SHADER_VERTEX: + var->data.location = (var->data.mode == ir_var_shader_in) + ? (qual->location + VERT_ATTRIB_GENERIC0) + : (qual->location + VARYING_SLOT_VAR0); + break; + + case MESA_SHADER_GEOMETRY: + var->data.location = qual->location + VARYING_SLOT_VAR0; + break; + + case MESA_SHADER_FRAGMENT: + var->data.location = (var->data.mode == ir_var_shader_out) + ? (qual->location + FRAG_RESULT_DATA0) + : (qual->location + VARYING_SLOT_VAR0); + break; + case MESA_SHADER_COMPUTE: + assert(!"Unexpected shader type"); + break; + } + } else { + var->data.location = qual->location; + } + + if (qual->flags.q.explicit_index) { + /* From the GLSL 4.30 specification, section 4.4.2 (Output + * Layout Qualifiers): + * + * "It is also a compile-time error if a fragment shader + * sets a layout index to less than 0 or greater than 1." + * + * Older specifications don't mandate a behavior; we take + * this as a clarification and always generate the error. + */ + if (qual->index < 0 || qual->index > 1) { + _mesa_glsl_error(loc, state, + "explicit index may only be 0 or 1"); + } else { + var->data.explicit_index = true; + var->data.index = qual->index; + } + } + } +} + +static void +apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + const glsl_type *base_type = + (var->type->is_array() ? var->type->element_type() : var->type); + + if (base_type->is_image()) { + if (var->data.mode != ir_var_uniform && + var->data.mode != ir_var_function_in) { + _mesa_glsl_error(loc, state, "image variables may only be declared as " + "function parameters or uniform-qualified " + "global variables"); + } + + var->data.image.read_only |= qual->flags.q.read_only; + var->data.image.write_only |= qual->flags.q.write_only; + var->data.image.coherent |= qual->flags.q.coherent; + var->data.image._volatile |= qual->flags.q._volatile; + var->data.image.restrict_flag |= qual->flags.q.restrict_flag; + var->data.read_only = true; + + if (qual->flags.q.explicit_image_format) { + if (var->data.mode == ir_var_function_in) { + _mesa_glsl_error(loc, state, "format qualifiers cannot be " + "used on image function parameters"); + } + + if (qual->image_base_type != base_type->sampler_type) { + _mesa_glsl_error(loc, state, "format qualifier doesn't match the " + "base data type of the image"); + } + + var->data.image.format = qual->image_format; + } else { + if (var->data.mode == ir_var_uniform && !qual->flags.q.write_only) { + _mesa_glsl_error(loc, state, "uniforms not qualified with " + "`writeonly' must have a format layout " + "qualifier"); + } + + var->data.image.format = GL_NONE; + } + } +} + +static inline const char* +get_layout_qualifier_string(bool origin_upper_left, bool pixel_center_integer) +{ + if (origin_upper_left && pixel_center_integer) + return "origin_upper_left, pixel_center_integer"; + else if (origin_upper_left) + return "origin_upper_left"; + else if (pixel_center_integer) + return "pixel_center_integer"; + else + return " "; +} + +static inline bool +is_conflicting_fragcoord_redeclaration(struct _mesa_glsl_parse_state *state, + const struct ast_type_qualifier *qual) +{ + /* If gl_FragCoord was previously declared, and the qualifiers were + * different in any way, return true. + */ + if (state->fs_redeclares_gl_fragcoord) { + return (state->fs_pixel_center_integer != qual->flags.q.pixel_center_integer + || state->fs_origin_upper_left != qual->flags.q.origin_upper_left); + } + + return false; +} + static void apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, - ir_variable *var, - struct _mesa_glsl_parse_state *state, - YYLTYPE *loc, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc, bool is_parameter) { + STATIC_ASSERT(sizeof(qual->flags.q) <= sizeof(qual->flags.i)); + if (qual->flags.q.invariant) { - if (var->used) { - _mesa_glsl_error(loc, state, - "variable `%s' may not be redeclared " - "`invariant' after being used", - var->name); + if (var->data.used) { + _mesa_glsl_error(loc, state, + "variable `%s' may not be redeclared " + "`invariant' after being used", + var->name); } else { - var->invariant = 1; + var->data.invariant = 1; } } if (qual->flags.q.constant || qual->flags.q.attribute || qual->flags.q.uniform - || (qual->flags.q.varying && (state->target == fragment_shader))) - var->read_only = 1; + || (qual->flags.q.varying && (state->stage == MESA_SHADER_FRAGMENT))) + var->data.read_only = 1; if (qual->flags.q.centroid) - var->centroid = 1; + var->data.centroid = 1; + + if (qual->flags.q.sample) + var->data.sample = 1; - if (qual->flags.q.attribute && state->target != vertex_shader) { + if (qual->flags.q.attribute && state->stage != MESA_SHADER_VERTEX) { var->type = glsl_type::error_type; _mesa_glsl_error(loc, state, - "`attribute' variables may not be declared in the " - "%s shader", - _mesa_glsl_shader_target_name(state->target)); + "`attribute' variables may not be declared in the " + "%s shader", + _mesa_shader_stage_to_string(state->stage)); } /* Section 6.1.1 (Function Calling Conventions) of the GLSL 1.10 spec says: @@ -2012,20 +2432,27 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, * the setting alone. */ if (qual->flags.q.in && qual->flags.q.out) - var->mode = ir_var_function_inout; + var->data.mode = ir_var_function_inout; else if (qual->flags.q.in) - var->mode = is_parameter ? ir_var_function_in : ir_var_shader_in; + var->data.mode = is_parameter ? ir_var_function_in : ir_var_shader_in; else if (qual->flags.q.attribute - || (qual->flags.q.varying && (state->target == fragment_shader))) - var->mode = ir_var_shader_in; + || (qual->flags.q.varying && (state->stage == MESA_SHADER_FRAGMENT))) + var->data.mode = ir_var_shader_in; else if (qual->flags.q.out) - var->mode = is_parameter ? ir_var_function_out : ir_var_shader_out; - else if (qual->flags.q.varying && (state->target == vertex_shader)) - var->mode = ir_var_shader_out; + var->data.mode = is_parameter ? ir_var_function_out : ir_var_shader_out; + else if (qual->flags.q.varying && (state->stage == MESA_SHADER_VERTEX)) + var->data.mode = ir_var_shader_out; else if (qual->flags.q.uniform) - var->mode = ir_var_uniform; + var->data.mode = ir_var_uniform; + + if (!is_parameter && is_varying_var(var, state->stage)) { + /* User-defined ins/outs are not permitted in compute shaders. */ + if (state->stage == MESA_SHADER_COMPUTE) { + _mesa_glsl_error(loc, state, + "user-defined input and output variables are not " + "permitted in compute shaders"); + } - if (!is_parameter && is_varying_var(var, state->target)) { /* This variable is being used to link data between shader stages (in * pre-glsl-1.30 parlance, it's a "varying"). Check that it has a type * that is allowed for such purposes. @@ -2074,47 +2501,36 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, } if (state->all_invariant && (state->current_function == NULL)) { - switch (state->target) { - case vertex_shader: - if (var->mode == ir_var_shader_out) - var->invariant = true; - break; - case geometry_shader: - if ((var->mode == ir_var_shader_in) - || (var->mode == ir_var_shader_out)) - var->invariant = true; - break; - case fragment_shader: - if (var->mode == ir_var_shader_in) - var->invariant = true; - break; + switch (state->stage) { + case MESA_SHADER_VERTEX: + if (var->data.mode == ir_var_shader_out) + var->data.invariant = true; + break; + case MESA_SHADER_GEOMETRY: + if ((var->data.mode == ir_var_shader_in) + || (var->data.mode == ir_var_shader_out)) + var->data.invariant = true; + break; + case MESA_SHADER_FRAGMENT: + if (var->data.mode == ir_var_shader_in) + var->data.invariant = true; + break; + case MESA_SHADER_COMPUTE: + /* Invariance isn't meaningful in compute shaders. */ + break; } } - if (qual->flags.q.flat) - var->interpolation = INTERP_QUALIFIER_FLAT; - else if (qual->flags.q.noperspective) - var->interpolation = INTERP_QUALIFIER_NOPERSPECTIVE; - else if (qual->flags.q.smooth) - var->interpolation = INTERP_QUALIFIER_SMOOTH; - else - var->interpolation = INTERP_QUALIFIER_NONE; - - if (var->interpolation != INTERP_QUALIFIER_NONE && - !(state->target == vertex_shader && var->mode == ir_var_shader_out) && - !(state->target == fragment_shader && var->mode == ir_var_shader_in)) { - _mesa_glsl_error(loc, state, - "interpolation qualifier `%s' can only be applied to " - "vertex shader outputs and fragment shader inputs.", - var->interpolation_string()); - } + var->data.interpolation = + interpret_interpolation_qualifier(qual, (ir_variable_mode) var->data.mode, + state, loc); - var->pixel_center_integer = qual->flags.q.pixel_center_integer; - var->origin_upper_left = qual->flags.q.origin_upper_left; + var->data.pixel_center_integer = qual->flags.q.pixel_center_integer; + var->data.origin_upper_left = qual->flags.q.origin_upper_left; if ((qual->flags.q.origin_upper_left || qual->flags.q.pixel_center_integer) && (strcmp(var->name, "gl_FragCoord") != 0)) { const char *const qual_string = (qual->flags.q.origin_upper_left) - ? "origin_upper_left" : "pixel_center_integer"; + ? "origin_upper_left" : "pixel_center_integer"; _mesa_glsl_error(loc, state, "layout qualifier `%s' can only be applied to " @@ -2122,91 +2538,87 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, qual_string); } - if (qual->flags.q.explicit_location) { - const bool global_scope = (state->current_function == NULL); - bool fail = false; - const char *string = ""; + if (var->name != NULL && strcmp(var->name, "gl_FragCoord") == 0) { - /* In the vertex shader only shader inputs can be given explicit - * locations. + /* Section 4.3.8.1, page 39 of GLSL 1.50 spec says: * - * In the fragment shader only shader outputs can be given explicit - * locations. + * "Within any shader, the first redeclarations of gl_FragCoord + * must appear before any use of gl_FragCoord." + * + * Generate a compiler error if above condition is not met by the + * fragment shader. */ - switch (state->target) { - case vertex_shader: - if (!global_scope || (var->mode != ir_var_shader_in)) { - fail = true; - string = "input"; - } - break; - - case geometry_shader: - _mesa_glsl_error(loc, state, - "geometry shader variables cannot be given " - "explicit locations\n"); - break; - - case fragment_shader: - if (!global_scope || (var->mode != ir_var_shader_out)) { - fail = true; - string = "output"; - } - break; - }; - - if (fail) { - _mesa_glsl_error(loc, state, - "only %s shader %s variables can be given an " - "explicit location\n", - _mesa_glsl_shader_target_name(state->target), - string); - } else { - var->explicit_location = true; - - /* This bit of silliness is needed because invalid explicit locations - * are supposed to be flagged during linking. Small negative values - * biased by VERT_ATTRIB_GENERIC0 or FRAG_RESULT_DATA0 could alias - * built-in values (e.g., -16+VERT_ATTRIB_GENERIC0 = VERT_ATTRIB_POS). - * The linker needs to be able to differentiate these cases. This - * ensures that negative values stay negative. - */ - if (qual->location >= 0) { - var->location = (state->target == vertex_shader) - ? (qual->location + VERT_ATTRIB_GENERIC0) - : (qual->location + FRAG_RESULT_DATA0); - } else { - var->location = qual->location; - } - - if (qual->flags.q.explicit_index) { - /* From the GLSL 4.30 specification, section 4.4.2 (Output - * Layout Qualifiers): - * - * "It is also a compile-time error if a fragment shader - * sets a layout index to less than 0 or greater than 1." - * - * Older specifications don't mandate a behavior; we take - * this as a clarification and always generate the error. - */ - if (qual->index < 0 || qual->index > 1) { - _mesa_glsl_error(loc, state, - "explicit index may only be 0 or 1\n"); - } else { - var->explicit_index = true; - var->index = qual->index; - } - } + ir_variable *earlier = state->symbols->get_variable("gl_FragCoord"); + if (earlier != NULL && + earlier->data.used && + !state->fs_redeclares_gl_fragcoord) { + _mesa_glsl_error(loc, state, + "gl_FragCoord used before its first redeclaration " + "in fragment shader"); + } + + /* Make sure all gl_FragCoord redeclarations specify the same layout + * qualifiers. + */ + if (is_conflicting_fragcoord_redeclaration(state, qual)) { + const char *const qual_string = + get_layout_qualifier_string(qual->flags.q.origin_upper_left, + qual->flags.q.pixel_center_integer); + + const char *const state_string = + get_layout_qualifier_string(state->fs_origin_upper_left, + state->fs_pixel_center_integer); + + _mesa_glsl_error(loc, state, + "gl_FragCoord redeclared with different layout " + "qualifiers (%s) and (%s) ", + state_string, + qual_string); } + state->fs_origin_upper_left = qual->flags.q.origin_upper_left; + state->fs_pixel_center_integer = qual->flags.q.pixel_center_integer; + state->fs_redeclares_gl_fragcoord_with_no_layout_qualifiers = + !qual->flags.q.origin_upper_left && !qual->flags.q.pixel_center_integer; + state->fs_redeclares_gl_fragcoord = + state->fs_origin_upper_left || + state->fs_pixel_center_integer || + state->fs_redeclares_gl_fragcoord_with_no_layout_qualifiers; + } + + if (qual->flags.q.explicit_location) { + validate_explicit_location(qual, var, state, loc); } else if (qual->flags.q.explicit_index) { - _mesa_glsl_error(loc, state, - "explicit index requires explicit location\n"); + _mesa_glsl_error(loc, state, "explicit index requires explicit location"); } if (qual->flags.q.explicit_binding && validate_binding_qualifier(state, loc, var, qual)) { - var->explicit_binding = true; - var->binding = qual->binding; + var->data.explicit_binding = true; + var->data.binding = qual->binding; + } + + if (var->type->contains_atomic()) { + if (var->data.mode == ir_var_uniform) { + if (var->data.explicit_binding) { + unsigned *offset = + &state->atomic_counter_offsets[var->data.binding]; + + if (*offset % ATOMIC_COUNTER_SIZE) + _mesa_glsl_error(loc, state, + "misaligned atomic counter offset"); + + var->data.atomic.offset = *offset; + *offset += var->type->atomic_size(); + + } else { + _mesa_glsl_error(loc, state, + "atomic counters require explicit binding point"); + } + } else if (var->data.mode != ir_var_function_in) { + _mesa_glsl_error(loc, state, "atomic counters may only be declared as " + "function parameters or uniform-qualified " + "global variables"); + } } /* Does the declaration use the deprecated 'attribute' or 'varying' @@ -2240,13 +2652,13 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (qual->has_layout() && uses_deprecated_qualifier) { if (relaxed_layout_qualifier_checking) { - _mesa_glsl_warning(loc, state, - "`layout' qualifier may not be used with " - "`attribute' or `varying'"); + _mesa_glsl_warning(loc, state, + "`layout' qualifier may not be used with " + "`attribute' or `varying'"); } else { - _mesa_glsl_error(loc, state, - "`layout' qualifier may not be used with " - "`attribute' or `varying'"); + _mesa_glsl_error(loc, state, + "`layout' qualifier may not be used with " + "`attribute' or `varying'"); } } @@ -2263,7 +2675,7 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, _mesa_glsl_error(loc, state, "extension GL_AMD_conservative_depth or " "GL_ARB_conservative_depth must be enabled " - "to use depth layout qualifiers"); + "to use depth layout qualifiers"); } else if (depth_layout_count > 0 && strcmp(var->name, "gl_FragDepth") != 0) { _mesa_glsl_error(loc, state, @@ -2276,28 +2688,31 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, "gl_FragDepth"); } if (qual->flags.q.depth_any) - var->depth_layout = ir_depth_layout_any; + var->data.depth_layout = ir_depth_layout_any; else if (qual->flags.q.depth_greater) - var->depth_layout = ir_depth_layout_greater; + var->data.depth_layout = ir_depth_layout_greater; else if (qual->flags.q.depth_less) - var->depth_layout = ir_depth_layout_less; + var->data.depth_layout = ir_depth_layout_less; else if (qual->flags.q.depth_unchanged) - var->depth_layout = ir_depth_layout_unchanged; + var->data.depth_layout = ir_depth_layout_unchanged; else - var->depth_layout = ir_depth_layout_none; + var->data.depth_layout = ir_depth_layout_none; if (qual->flags.q.std140 || qual->flags.q.packed || qual->flags.q.shared) { _mesa_glsl_error(loc, state, "uniform block layout qualifiers std140, packed, and " - "shared can only be applied to uniform blocks, not " - "members"); + "shared can only be applied to uniform blocks, not " + "members"); } if (qual->flags.q.row_major || qual->flags.q.column_major) { validate_matrix_layout_for_type(state, loc, var->type, var); } + + if (var->type->contains_image()) + apply_image_qualifier_to_variable(qual, var, state, loc); } /** @@ -2311,9 +2726,10 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, * A pointer to an existing variable in the current scope if the declaration * is a redeclaration, \c NULL otherwise. */ -ir_variable * -get_variable_being_redeclared(ir_variable *var, ast_declaration *decl, - struct _mesa_glsl_parse_state *state) +static ir_variable * +get_variable_being_redeclared(ir_variable *var, YYLTYPE loc, + struct _mesa_glsl_parse_state *state, + bool allow_all_redeclarations) { /* Check if this declaration is actually a re-declaration, either to * resize an array or add qualifiers to an existing variable. @@ -2321,24 +2737,21 @@ get_variable_being_redeclared(ir_variable *var, ast_declaration *decl, * This is allowed for variables in the current scope, or when at * global scope (for built-ins in the implicit outer scope). */ - ir_variable *earlier = state->symbols->get_variable(decl->identifier); + ir_variable *earlier = state->symbols->get_variable(var->name); if (earlier == NULL || (state->current_function != NULL && - !state->symbols->name_declared_this_scope(decl->identifier))) { + !state->symbols->name_declared_this_scope(var->name))) { return NULL; } - YYLTYPE loc = decl->get_location(); - /* From page 24 (page 30 of the PDF) of the GLSL 1.50 spec, * * "It is legal to declare an array without a size and then * later re-declare the same name as an array of the same * type and specify a size." */ - if ((earlier->type->array_size() == 0) - && var->type->is_array() + if (earlier->type->is_unsized_array() && var->type->is_array() && (var->type->element_type() == earlier->type->element_type())) { /* FINISHME: This doesn't match the qualifiers on the two * FINISHME: declarations. It's not 100% clear whether this is @@ -2347,24 +2760,25 @@ get_variable_being_redeclared(ir_variable *var, ast_declaration *decl, const unsigned size = unsigned(var->type->array_size()); check_builtin_array_max_size(var->name, size, loc, state); - if ((size > 0) && (size <= earlier->max_array_access)) { - _mesa_glsl_error(& loc, state, "array size must be > %u due to " - "previous access", - earlier->max_array_access); + if ((size > 0) && (size <= earlier->data.max_array_access)) { + _mesa_glsl_error(& loc, state, "array size must be > %u due to " + "previous access", + earlier->data.max_array_access); } earlier->type = var->type; delete var; var = NULL; - } else if (state->ARB_fragment_coord_conventions_enable - && strcmp(var->name, "gl_FragCoord") == 0 - && earlier->type == var->type - && earlier->mode == var->mode) { + } else if ((state->ARB_fragment_coord_conventions_enable || + state->is_version(150, 0)) + && strcmp(var->name, "gl_FragCoord") == 0 + && earlier->type == var->type + && earlier->data.mode == var->data.mode) { /* Allow redeclaration of gl_FragCoord for ARB_fcc layout * qualifiers. */ - earlier->origin_upper_left = var->origin_upper_left; - earlier->pixel_center_integer = var->pixel_center_integer; + earlier->data.origin_upper_left = var->data.origin_upper_left; + earlier->data.pixel_center_integer = var->data.pixel_center_integer; /* According to section 4.3.7 of the GLSL 1.30 spec, * the following built-in varaibles can be redeclared with an @@ -2377,48 +2791,58 @@ get_variable_being_redeclared(ir_variable *var, ast_declaration *decl, * * gl_SecondaryColor */ } else if (state->is_version(130, 0) - && (strcmp(var->name, "gl_FrontColor") == 0 - || strcmp(var->name, "gl_BackColor") == 0 - || strcmp(var->name, "gl_FrontSecondaryColor") == 0 - || strcmp(var->name, "gl_BackSecondaryColor") == 0 - || strcmp(var->name, "gl_Color") == 0 - || strcmp(var->name, "gl_SecondaryColor") == 0) - && earlier->type == var->type - && earlier->mode == var->mode) { - earlier->interpolation = var->interpolation; + && (strcmp(var->name, "gl_FrontColor") == 0 + || strcmp(var->name, "gl_BackColor") == 0 + || strcmp(var->name, "gl_FrontSecondaryColor") == 0 + || strcmp(var->name, "gl_BackSecondaryColor") == 0 + || strcmp(var->name, "gl_Color") == 0 + || strcmp(var->name, "gl_SecondaryColor") == 0) + && earlier->type == var->type + && earlier->data.mode == var->data.mode) { + earlier->data.interpolation = var->data.interpolation; /* Layout qualifiers for gl_FragDepth. */ } else if ((state->AMD_conservative_depth_enable || state->ARB_conservative_depth_enable) - && strcmp(var->name, "gl_FragDepth") == 0 - && earlier->type == var->type - && earlier->mode == var->mode) { + && strcmp(var->name, "gl_FragDepth") == 0 + && earlier->type == var->type + && earlier->data.mode == var->data.mode) { /** From the AMD_conservative_depth spec: * Within any shader, the first redeclarations of gl_FragDepth * must appear before any use of gl_FragDepth. */ - if (earlier->used) { - _mesa_glsl_error(&loc, state, - "the first redeclaration of gl_FragDepth " - "must appear before any use of gl_FragDepth"); + if (earlier->data.used) { + _mesa_glsl_error(&loc, state, + "the first redeclaration of gl_FragDepth " + "must appear before any use of gl_FragDepth"); } /* Prevent inconsistent redeclaration of depth layout qualifier. */ - if (earlier->depth_layout != ir_depth_layout_none - && earlier->depth_layout != var->depth_layout) { - _mesa_glsl_error(&loc, state, - "gl_FragDepth: depth layout is declared here " - "as '%s, but it was previously declared as " - "'%s'", - depth_layout_string(var->depth_layout), - depth_layout_string(earlier->depth_layout)); + if (earlier->data.depth_layout != ir_depth_layout_none + && earlier->data.depth_layout != var->data.depth_layout) { + _mesa_glsl_error(&loc, state, + "gl_FragDepth: depth layout is declared here " + "as '%s, but it was previously declared as " + "'%s'", + depth_layout_string(var->data.depth_layout), + depth_layout_string(earlier->data.depth_layout)); } - earlier->depth_layout = var->depth_layout; + earlier->data.depth_layout = var->data.depth_layout; + } else if (allow_all_redeclarations) { + if (earlier->data.mode != var->data.mode) { + _mesa_glsl_error(&loc, state, + "redeclaration of `%s' with incorrect qualifiers", + var->name); + } else if (earlier->type != var->type) { + _mesa_glsl_error(&loc, state, + "redeclaration of `%s' has incorrect type", + var->name); + } } else { - _mesa_glsl_error(&loc, state, "`%s' redeclared", decl->identifier); + _mesa_glsl_error(&loc, state, "`%s' redeclared", var->name); } return earlier; @@ -2443,39 +2867,52 @@ process_initializer(ir_variable *var, ast_declaration *decl, * directly by an application via API commands, or indirectly by * OpenGL." */ - if (var->mode == ir_var_uniform) { + if (var->data.mode == ir_var_uniform) { state->check_version(120, 0, &initializer_loc, "cannot initialize uniforms"); } - if (var->type->is_sampler()) { + /* From section 4.1.7 of the GLSL 4.40 spec: + * + * "Opaque variables [...] are initialized only through the + * OpenGL API; they cannot be declared with an initializer in a + * shader." + */ + if (var->type->contains_opaque()) { _mesa_glsl_error(& initializer_loc, state, - "cannot initialize samplers"); + "cannot initialize opaque variable"); } - if ((var->mode == ir_var_shader_in) && (state->current_function == NULL)) { + if ((var->data.mode == ir_var_shader_in) && (state->current_function == NULL)) { _mesa_glsl_error(& initializer_loc, state, "cannot initialize %s shader input / %s", - _mesa_glsl_shader_target_name(state->target), - (state->target == vertex_shader) + _mesa_shader_stage_to_string(state->stage), + (state->stage == MESA_SHADER_VERTEX) ? "attribute" : "varying"); } + /* If the initializer is an ast_aggregate_initializer, recursively store + * type information from the LHS into it, so that its hir() function can do + * type checking. + */ + if (decl->initializer->oper == ast_aggregate) + _mesa_ast_set_aggregate_type(var->type, decl->initializer); + ir_dereference *const lhs = new(state) ir_dereference_variable(var); - ir_rvalue *rhs = decl->initializer->hir(initializer_instructions, - state); + ir_rvalue *rhs = decl->initializer->hir(initializer_instructions, state); /* Calculate the constant value if this is a const or uniform * declaration. */ if (type->qualifier.flags.q.constant || type->qualifier.flags.q.uniform) { - ir_rvalue *new_rhs = validate_assignment(state, var->type, rhs, true); + ir_rvalue *new_rhs = validate_assignment(state, initializer_loc, + var->type, rhs, true); if (new_rhs != NULL) { - rhs = new_rhs; + rhs = new_rhs; - ir_constant *constant_value = rhs->constant_expression_value(); - if (!constant_value) { + ir_constant *constant_value = rhs->constant_expression_value(); + if (!constant_value) { /* If ARB_shading_language_420pack is enabled, initializers of * const-qualified local variables do not have to be constant * expressions. Const-qualified global variables must still be @@ -2495,40 +2932,38 @@ process_initializer(ir_variable *var, ast_declaration *decl, } } } else { - rhs = constant_value; - var->constant_value = constant_value; - } + rhs = constant_value; + var->constant_value = constant_value; + } } else { - _mesa_glsl_error(&initializer_loc, state, - "initializer of type %s cannot be assigned to " - "variable of type %s", - rhs->type->name, var->type->name); - if (var->type->is_numeric()) { - /* Reduce cascading errors. */ - var->constant_value = ir_constant::zero(state, var->type); - } + if (var->type->is_numeric()) { + /* Reduce cascading errors. */ + var->constant_value = ir_constant::zero(state, var->type); + } } } if (rhs && !rhs->type->is_error()) { - bool temp = var->read_only; + bool temp = var->data.read_only; if (type->qualifier.flags.q.constant) - var->read_only = false; + var->data.read_only = false; /* Never emit code to initialize a uniform. */ const glsl_type *initializer_type; if (!type->qualifier.flags.q.uniform) { - result = do_assignment(initializer_instructions, state, - NULL, - lhs, rhs, true, - type->get_location()); - initializer_type = result->type; + do_assignment(initializer_instructions, state, + NULL, + lhs, rhs, + &result, true, + true, + type->get_location()); + initializer_type = result->type; } else - initializer_type = rhs->type; + initializer_type = rhs->type; var->constant_initializer = rhs->constant_expression_value(); - var->has_initializer = true; + var->data.has_initializer = true; /* If the declared variable is an unsized array, it must inherrit * its full type from the initializer. A declaration such as @@ -2552,15 +2987,127 @@ process_initializer(ir_variable *var, ast_declaration *decl, */ var->type = initializer_type; - var->read_only = temp; + var->data.read_only = temp; } return result; } + +/** + * Do additional processing necessary for geometry shader input declarations + * (this covers both interface blocks arrays and bare input variables). + */ +static void +handle_geometry_shader_input_decl(struct _mesa_glsl_parse_state *state, + YYLTYPE loc, ir_variable *var) +{ + unsigned num_vertices = 0; + if (state->gs_input_prim_type_specified) { + num_vertices = vertices_per_prim(state->in_qualifier->prim_type); + } + + /* Geometry shader input variables must be arrays. Caller should have + * reported an error for this. + */ + if (!var->type->is_array()) { + assert(state->error); + + /* To avoid cascading failures, short circuit the checks below. */ + return; + } + + if (var->type->is_unsized_array()) { + /* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says: + * + * All geometry shader input unsized array declarations will be + * sized by an earlier input layout qualifier, when present, as per + * the following table. + * + * Followed by a table mapping each allowed input layout qualifier to + * the corresponding input length. + */ + if (num_vertices != 0) + var->type = glsl_type::get_array_instance(var->type->fields.array, + num_vertices); + } else { + /* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec + * includes the following examples of compile-time errors: + * + * // code sequence within one shader... + * in vec4 Color1[]; // size unknown + * ...Color1.length()...// illegal, length() unknown + * in vec4 Color2[2]; // size is 2 + * ...Color1.length()...// illegal, Color1 still has no size + * in vec4 Color3[3]; // illegal, input sizes are inconsistent + * layout(lines) in; // legal, input size is 2, matching + * in vec4 Color4[3]; // illegal, contradicts layout + * ... + * + * To detect the case illustrated by Color3, we verify that the size of + * an explicitly-sized array matches the size of any previously declared + * explicitly-sized array. To detect the case illustrated by Color4, we + * verify that the size of an explicitly-sized array is consistent with + * any previously declared input layout. + */ + if (num_vertices != 0 && var->type->length != num_vertices) { + _mesa_glsl_error(&loc, state, + "geometry shader input size contradicts previously" + " declared layout (size is %u, but layout requires a" + " size of %u)", var->type->length, num_vertices); + } else if (state->gs_input_size != 0 && + var->type->length != state->gs_input_size) { + _mesa_glsl_error(&loc, state, + "geometry shader input sizes are " + "inconsistent (size is %u, but a previous " + "declaration has size %u)", + var->type->length, state->gs_input_size); + } else { + state->gs_input_size = var->type->length; + } + } +} + + +void +validate_identifier(const char *identifier, YYLTYPE loc, + struct _mesa_glsl_parse_state *state) +{ + /* From page 15 (page 21 of the PDF) of the GLSL 1.10 spec, + * + * "Identifiers starting with "gl_" are reserved for use by + * OpenGL, and may not be declared in a shader as either a + * variable or a function." + */ + if (strncmp(identifier, "gl_", 3) == 0) { + _mesa_glsl_error(&loc, state, + "identifier `%s' uses reserved `gl_' prefix", + identifier); + } else if (strstr(identifier, "__")) { + /* From page 14 (page 20 of the PDF) of the GLSL 1.10 + * spec: + * + * "In addition, all identifiers containing two + * consecutive underscores (__) are reserved as + * possible future keywords." + * + * The intention is that names containing __ are reserved for internal + * use by the implementation, and names prefixed with GL_ are reserved + * for use by Khronos. Names simply containing __ are dangerous to use, + * but should be allowed. + * + * A future version of the GLSL specification will clarify this. + */ + _mesa_glsl_warning(&loc, state, + "identifier `%s' uses reserved `__' string", + identifier); + } +} + + ir_rvalue * ast_declarator_list::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; const struct glsl_type *decl_type; @@ -2583,40 +3130,33 @@ ast_declarator_list::hir(exec_list *instructions, assert(this->type == NULL); if (state->current_function != NULL) { - _mesa_glsl_error(& loc, state, - "All uses of `invariant' keyword must be at global " - "scope\n"); + _mesa_glsl_error(& loc, state, + "all uses of `invariant' keyword must be at global " + "scope"); } foreach_list_typed (ast_declaration, decl, link, &this->declarations) { - assert(!decl->is_array); - assert(decl->array_size == NULL); - assert(decl->initializer == NULL); - - ir_variable *const earlier = - state->symbols->get_variable(decl->identifier); - if (earlier == NULL) { - _mesa_glsl_error(& loc, state, - "Undeclared variable `%s' cannot be marked " - "invariant\n", decl->identifier); - } else if ((state->target == vertex_shader) - && (earlier->mode != ir_var_shader_out)) { - _mesa_glsl_error(& loc, state, - "`%s' cannot be marked invariant, vertex shader " - "outputs only\n", decl->identifier); - } else if ((state->target == fragment_shader) - && (earlier->mode != ir_var_shader_in)) { - _mesa_glsl_error(& loc, state, - "`%s' cannot be marked invariant, fragment shader " - "inputs only\n", decl->identifier); - } else if (earlier->used) { - _mesa_glsl_error(& loc, state, - "variable `%s' may not be redeclared " - "`invariant' after being used", - earlier->name); - } else { - earlier->invariant = true; - } + assert(decl->array_specifier == NULL); + assert(decl->initializer == NULL); + + ir_variable *const earlier = + state->symbols->get_variable(decl->identifier); + if (earlier == NULL) { + _mesa_glsl_error(& loc, state, + "undeclared variable `%s' cannot be marked " + "invariant", decl->identifier); + } else if (!is_varying_var(earlier, state->stage)) { + _mesa_glsl_error(&loc, state, + "`%s' cannot be marked invariant; interfaces between " + "shader stages only.", decl->identifier); + } else if (earlier->data.used) { + _mesa_glsl_error(& loc, state, + "variable `%s' may not be redeclared " + "`invariant' after being used", + earlier->name); + } else { + earlier->data.invariant = true; + } } /* Invariant redeclarations do not have r-values. @@ -2633,6 +3173,18 @@ ast_declarator_list::hir(exec_list *instructions, (void) this->type->specifier->hir(instructions, state); decl_type = this->type->glsl_type(& type_name, state); + + /* An offset-qualified atomic counter declaration sets the default + * offset for the next declaration within the same atomic counter + * buffer. + */ + if (decl_type && decl_type->contains_atomic()) { + if (type->qualifier.flags.q.explicit_binding && + type->qualifier.flags.q.explicit_offset) + state->atomic_counter_offsets[type->qualifier.binding] = + type->qualifier.offset; + } + if (this->declarations.is_empty()) { /* If there is no structure involved in the program text, there are two * possible scenarios: @@ -2662,6 +3214,11 @@ ast_declarator_list::hir(exec_list *instructions, _mesa_glsl_error(&loc, state, "invalid type `%s' in empty declaration", type_name); + } else if (decl_type->base_type == GLSL_TYPE_ATOMIC_UINT) { + /* Empty atomic counter declarations are allowed and useful + * to set the default offset qualifier. + */ + return NULL; } else if (this->type->qualifier.precision != ast_precision_none) { if (this->type->specifier->structure != NULL) { _mesa_glsl_error(&loc, state, @@ -2696,33 +3253,47 @@ ast_declarator_list::hir(exec_list *instructions, */ if ((decl_type == NULL) || decl_type->is_void()) { - if (type_name != NULL) { - _mesa_glsl_error(& loc, state, - "invalid type `%s' in declaration of `%s'", - type_name, decl->identifier); - } else { - _mesa_glsl_error(& loc, state, - "invalid type in declaration of `%s'", - decl->identifier); - } - continue; + if (type_name != NULL) { + _mesa_glsl_error(& loc, state, + "invalid type `%s' in declaration of `%s'", + type_name, decl->identifier); + } else { + _mesa_glsl_error(& loc, state, + "invalid type in declaration of `%s'", + decl->identifier); + } + continue; } - if (decl->is_array) { - var_type = process_array_type(&loc, decl_type, decl->array_size, - state); - if (var_type->is_error()) - continue; - } else { - var_type = decl_type; - } + var_type = process_array_type(&loc, decl_type, decl->array_specifier, + state); var = new(ctx) ir_variable(var_type, decl->identifier, ir_var_auto); + /* The 'varying in' and 'varying out' qualifiers can only be used with + * ARB_geometry_shader4 and EXT_geometry_shader4, which we don't support + * yet. + */ + if (this->type->qualifier.flags.q.varying) { + if (this->type->qualifier.flags.q.in) { + _mesa_glsl_error(& loc, state, + "`varying in' qualifier in declaration of " + "`%s' only valid for geometry shaders using " + "ARB_geometry_shader4 or EXT_geometry_shader4", + decl->identifier); + } else if (this->type->qualifier.flags.q.out) { + _mesa_glsl_error(& loc, state, + "`varying out' qualifier in declaration of " + "`%s' only valid for geometry shaders using " + "ARB_geometry_shader4 or EXT_geometry_shader4", + decl->identifier); + } + } + /* From page 22 (page 28 of the PDF) of the GLSL 1.10 specification; * * "Global variables can only use the qualifiers const, - * attribute, uni form, or varying. Only one may be + * attribute, uniform, or varying. Only one may be * specified. * * Local variables can only use the qualifier const." @@ -2731,94 +3302,86 @@ ast_declarator_list::hir(exec_list *instructions, * any extension that adds the 'layout' keyword. */ if (!state->is_version(130, 300) - && !state->ARB_explicit_attrib_location_enable - && !state->ARB_fragment_coord_conventions_enable) { - if (this->type->qualifier.flags.q.out) { - _mesa_glsl_error(& loc, state, - "`out' qualifier in declaration of `%s' " - "only valid for function parameters in %s.", - decl->identifier, state->get_version_string()); - } - if (this->type->qualifier.flags.q.in) { - _mesa_glsl_error(& loc, state, - "`in' qualifier in declaration of `%s' " - "only valid for function parameters in %s.", - decl->identifier, state->get_version_string()); - } - /* FINISHME: Test for other invalid qualifiers. */ + && !state->has_explicit_attrib_location() + && !state->has_separate_shader_objects() + && !state->ARB_fragment_coord_conventions_enable) { + if (this->type->qualifier.flags.q.out) { + _mesa_glsl_error(& loc, state, + "`out' qualifier in declaration of `%s' " + "only valid for function parameters in %s", + decl->identifier, state->get_version_string()); + } + if (this->type->qualifier.flags.q.in) { + _mesa_glsl_error(& loc, state, + "`in' qualifier in declaration of `%s' " + "only valid for function parameters in %s", + decl->identifier, state->get_version_string()); + } + /* FINISHME: Test for other invalid qualifiers. */ } apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc, false); if (this->type->qualifier.flags.q.invariant) { - if ((state->target == vertex_shader) && - var->mode != ir_var_shader_out) { - _mesa_glsl_error(& loc, state, - "`%s' cannot be marked invariant, vertex shader " - "outputs only\n", var->name); - } else if ((state->target == fragment_shader) && - var->mode != ir_var_shader_in) { - /* FINISHME: Note that this doesn't work for invariant on - * a function signature inval - */ - _mesa_glsl_error(& loc, state, - "`%s' cannot be marked invariant, fragment shader " - "inputs only\n", var->name); - } + if (!is_varying_var(var, state->stage)) { + _mesa_glsl_error(&loc, state, + "`%s' cannot be marked invariant; interfaces between " + "shader stages only", var->name); + } } if (state->current_function != NULL) { - const char *mode = NULL; - const char *extra = ""; - - /* There is no need to check for 'inout' here because the parser will - * only allow that in function parameter lists. - */ - if (this->type->qualifier.flags.q.attribute) { - mode = "attribute"; - } else if (this->type->qualifier.flags.q.uniform) { - mode = "uniform"; - } else if (this->type->qualifier.flags.q.varying) { - mode = "varying"; - } else if (this->type->qualifier.flags.q.in) { - mode = "in"; - extra = " or in function parameter list"; - } else if (this->type->qualifier.flags.q.out) { - mode = "out"; - extra = " or in function parameter list"; - } - - if (mode) { - _mesa_glsl_error(& loc, state, - "%s variable `%s' must be declared at " - "global scope%s", - mode, var->name, extra); - } - } else if (var->mode == ir_var_shader_in) { - var->read_only = true; - - if (state->target == vertex_shader) { - bool error_emitted = false; - - /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec: - * - * "Vertex shader inputs can only be float, floating-point - * vectors, matrices, signed and unsigned integers and integer - * vectors. Vertex shader inputs can also form arrays of these - * types, but not structures." - * - * From page 31 (page 27 of the PDF) of the GLSL 1.30 spec: - * - * "Vertex shader inputs can only be float, floating-point - * vectors, matrices, signed and unsigned integers and integer - * vectors. They cannot be arrays or structures." - * - * From page 23 (page 29 of the PDF) of the GLSL 1.20 spec: - * - * "The attribute qualifier can be used only with float, - * floating-point vectors, and matrices. Attribute variables - * cannot be declared as arrays or structures." + const char *mode = NULL; + const char *extra = ""; + + /* There is no need to check for 'inout' here because the parser will + * only allow that in function parameter lists. + */ + if (this->type->qualifier.flags.q.attribute) { + mode = "attribute"; + } else if (this->type->qualifier.flags.q.uniform) { + mode = "uniform"; + } else if (this->type->qualifier.flags.q.varying) { + mode = "varying"; + } else if (this->type->qualifier.flags.q.in) { + mode = "in"; + extra = " or in function parameter list"; + } else if (this->type->qualifier.flags.q.out) { + mode = "out"; + extra = " or in function parameter list"; + } + + if (mode) { + _mesa_glsl_error(& loc, state, + "%s variable `%s' must be declared at " + "global scope%s", + mode, var->name, extra); + } + } else if (var->data.mode == ir_var_shader_in) { + var->data.read_only = true; + + if (state->stage == MESA_SHADER_VERTEX) { + bool error_emitted = false; + + /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec: + * + * "Vertex shader inputs can only be float, floating-point + * vectors, matrices, signed and unsigned integers and integer + * vectors. Vertex shader inputs can also form arrays of these + * types, but not structures." + * + * From page 31 (page 27 of the PDF) of the GLSL 1.30 spec: + * + * "Vertex shader inputs can only be float, floating-point + * vectors, matrices, signed and unsigned integers and integer + * vectors. They cannot be arrays or structures." + * + * From page 23 (page 29 of the PDF) of the GLSL 1.20 spec: + * + * "The attribute qualifier can be used only with float, + * floating-point vectors, and matrices. Attribute variables + * cannot be declared as arrays or structures." * * From page 33 (page 39 of the PDF) of the GLSL ES 3.00 spec: * @@ -2826,34 +3389,50 @@ ast_declarator_list::hir(exec_list *instructions, * vectors, matrices, signed and unsigned integers and integer * vectors. Vertex shader inputs cannot be arrays or * structures." - */ - const glsl_type *check_type = var->type->is_array() - ? var->type->fields.array : var->type; - - switch (check_type->base_type) { - case GLSL_TYPE_FLOAT: - break; - case GLSL_TYPE_UINT: - case GLSL_TYPE_INT: - if (state->is_version(120, 300)) - break; - /* FALLTHROUGH */ - default: - _mesa_glsl_error(& loc, state, - "vertex shader input / attribute cannot have " - "type %s`%s'", - var->type->is_array() ? "array of " : "", - check_type->name); - error_emitted = true; - } - - if (!error_emitted && var->type->is_array() && + */ + const glsl_type *check_type = var->type; + while (check_type->is_array()) + check_type = check_type->element_type(); + + switch (check_type->base_type) { + case GLSL_TYPE_FLOAT: + break; + case GLSL_TYPE_UINT: + case GLSL_TYPE_INT: + if (state->is_version(120, 300)) + break; + /* FALLTHROUGH */ + default: + _mesa_glsl_error(& loc, state, + "vertex shader input / attribute cannot have " + "type %s`%s'", + var->type->is_array() ? "array of " : "", + check_type->name); + error_emitted = true; + } + + if (!error_emitted && var->type->is_array() && !state->check_version(150, 0, &loc, "vertex shader input / attribute " "cannot have array type")) { - error_emitted = true; - } - } + error_emitted = true; + } + } else if (state->stage == MESA_SHADER_GEOMETRY) { + /* From section 4.3.4 (Inputs) of the GLSL 1.50 spec: + * + * Geometry shader input variables get the per-vertex values + * written out by vertex shader output variables of the same + * names. Since a geometry shader operates on a set of + * vertices, each input varying variable (or input block, see + * interface blocks below) needs to be declared as an array. + */ + if (!var->type->is_array()) { + _mesa_glsl_error(&loc, state, + "geometry shader inputs must be arrays"); + } + + handle_geometry_shader_input_decl(state, loc, var); + } } /* Integer fragment inputs must be qualified with 'flat'. In GLSL ES, @@ -2887,13 +3466,13 @@ ast_declarator_list::hir(exec_list *instructions, */ if (state->is_version(130, 300) && var->type->contains_integer() && - var->interpolation != INTERP_QUALIFIER_FLAT && - ((state->target == fragment_shader && var->mode == ir_var_shader_in) - || (state->target == vertex_shader && var->mode == ir_var_shader_out + var->data.interpolation != INTERP_QUALIFIER_FLAT && + ((state->stage == MESA_SHADER_FRAGMENT && var->data.mode == ir_var_shader_in) + || (state->stage == MESA_SHADER_VERTEX && var->data.mode == ir_var_shader_out && state->es_shader))) { - const char *var_type = (state->target == vertex_shader) ? + const char *var_type = (state->stage == MESA_SHADER_VERTEX) ? "vertex output" : "fragment input"; - _mesa_glsl_error(&loc, state, "If a %s is (or contains) " + _mesa_glsl_error(&loc, state, "if a %s is (or contains) " "an integer, then it must be qualified with 'flat'", var_type); } @@ -2947,15 +3526,15 @@ ast_declarator_list::hir(exec_list *instructions, const char *i = this->type->qualifier.interpolation_string(); assert(i != NULL); - switch (state->target) { - case vertex_shader: + switch (state->stage) { + case MESA_SHADER_VERTEX: if (this->type->qualifier.flags.q.in) { _mesa_glsl_error(&loc, state, "qualifier '%s' cannot be applied to vertex " "shader inputs", i); } break; - case fragment_shader: + case MESA_SHADER_FRAGMENT: if (this->type->qualifier.flags.q.out) { _mesa_glsl_error(&loc, state, "qualifier '%s' cannot be applied to fragment " @@ -2963,7 +3542,7 @@ ast_declarator_list::hir(exec_list *instructions, } break; default: - assert(0); + break; } } @@ -2978,12 +3557,20 @@ ast_declarator_list::hir(exec_list *instructions, if (state->is_version(130, 300) && this->type->qualifier.flags.q.centroid && this->type->qualifier.flags.q.in - && state->target == vertex_shader) { + && state->stage == MESA_SHADER_VERTEX) { _mesa_glsl_error(&loc, state, "'centroid in' cannot be used in a vertex shader"); } + if (state->stage == MESA_SHADER_VERTEX + && this->type->qualifier.flags.q.sample + && this->type->qualifier.flags.q.in) { + + _mesa_glsl_error(&loc, state, + "'sample in' cannot be used in a vertex shader"); + } + /* Section 4.3.6 of the GLSL 1.30 specification states: * "It is an error to use centroid out in a fragment shader." * @@ -2991,7 +3578,7 @@ ast_declarator_list::hir(exec_list *instructions, * "It is an error to use auxiliary storage qualifiers or interpolation * qualifiers on an output in a fragment shader." */ - if (state->target == fragment_shader && + if (state->stage == MESA_SHADER_FRAGMENT && this->type->qualifier.flags.q.out && this->type->qualifier.has_auxiliary_storage()) { _mesa_glsl_error(&loc, state, @@ -3047,15 +3634,15 @@ ast_declarator_list::hir(exec_list *instructions, ", integer and sampler types"); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function - * parameters or uniform variables (see Section 4.3.5 - * "Uniform")". + * "[Opaque types] can only be declared as function + * parameters or uniform-qualified variables." */ - if (var_type->contains_sampler() && + if (var_type->contains_opaque() && !this->type->qualifier.flags.q.uniform) { - _mesa_glsl_error(&loc, state, "samplers must be declared uniform"); + _mesa_glsl_error(&loc, state, + "opaque variables must be declared uniform"); } /* Process the initializer and add its instructions to a temporary @@ -3065,12 +3652,27 @@ ast_declarator_list::hir(exec_list *instructions, * instruction stream. */ exec_list initializer_instructions; - ir_variable *earlier = get_variable_being_redeclared(var, decl, state); + + /* Examine var name here since var may get deleted in the next call */ + bool var_is_gl_id = (strncmp(var->name, "gl_", 3) == 0); + + ir_variable *earlier = + get_variable_being_redeclared(var, decl->get_location(), state, + false /* allow_all_redeclarations */); + if (earlier != NULL) { + if (var_is_gl_id && + earlier->data.how_declared == ir_var_declared_in_block) { + _mesa_glsl_error(&loc, state, + "`%s' has already been redeclared using " + "gl_PerVertex", var->name); + } + earlier->data.how_declared = ir_var_declared_normally; + } if (decl->initializer != NULL) { - result = process_initializer((earlier == NULL) ? var : earlier, - decl, this->type, - &initializer_instructions, state); + result = process_initializer((earlier == NULL) ? var : earlier, + decl, this->type, + &initializer_instructions, state); } /* From page 23 (page 29 of the PDF) of the GLSL 1.10 spec: @@ -3080,16 +3682,16 @@ ast_declarator_list::hir(exec_list *instructions, * declared." */ if (this->type->qualifier.flags.q.constant && decl->initializer == NULL) { - _mesa_glsl_error(& loc, state, - "const declaration of `%s' must be initialized", - decl->identifier); + _mesa_glsl_error(& loc, state, + "const declaration of `%s' must be initialized", + decl->identifier); } if (state->es_shader) { - const glsl_type *const t = (earlier == NULL) - ? var->type : earlier->type; + const glsl_type *const t = (earlier == NULL) + ? var->type : earlier->type; - if (t->is_array() && t->length == 0) + if (t->is_unsized_array()) /* Section 10.17 of the GLSL ES 1.00 specification states that * unsized array declarations have been removed from the language. * Arrays that are sized using an initializer are still explicitly @@ -3117,55 +3719,34 @@ ast_declarator_list::hir(exec_list *instructions, * created for the declaration should be added to the IR stream. */ if (earlier == NULL) { - /* From page 15 (page 21 of the PDF) of the GLSL 1.10 spec, - * - * "Identifiers starting with "gl_" are reserved for use by - * OpenGL, and may not be declared in a shader as either a - * variable or a function." - */ - if (strncmp(decl->identifier, "gl_", 3) == 0) - _mesa_glsl_error(& loc, state, - "identifier `%s' uses reserved `gl_' prefix", - decl->identifier); - else if (strstr(decl->identifier, "__")) { - /* From page 14 (page 20 of the PDF) of the GLSL 1.10 - * spec: - * - * "In addition, all identifiers containing two - * consecutive underscores (__) are reserved as - * possible future keywords." - */ - _mesa_glsl_error(& loc, state, - "identifier `%s' uses reserved `__' string", - decl->identifier); - } - - /* Add the variable to the symbol table. Note that the initializer's - * IR was already processed earlier (though it hasn't been emitted - * yet), without the variable in scope. - * - * This differs from most C-like languages, but it follows the GLSL - * specification. From page 28 (page 34 of the PDF) of the GLSL 1.50 - * spec: - * - * "Within a declaration, the scope of a name starts immediately - * after the initializer if present or immediately after the name - * being declared if not." - */ - if (!state->symbols->add_variable(var)) { - YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "name `%s' already taken in the " - "current scope", decl->identifier); - continue; - } - - /* Push the variable declaration to the top. It means that all the - * variable declarations will appear in a funny last-to-first order, - * but otherwise we run into trouble if a function is prototyped, a - * global var is decled, then the function is defined with usage of - * the global var. See glslparsertest's CorrectModule.frag. - */ - instructions->push_head(var); + validate_identifier(decl->identifier, loc, state); + + /* Add the variable to the symbol table. Note that the initializer's + * IR was already processed earlier (though it hasn't been emitted + * yet), without the variable in scope. + * + * This differs from most C-like languages, but it follows the GLSL + * specification. From page 28 (page 34 of the PDF) of the GLSL 1.50 + * spec: + * + * "Within a declaration, the scope of a name starts immediately + * after the initializer if present or immediately after the name + * being declared if not." + */ + if (!state->symbols->add_variable(var)) { + YYLTYPE loc = this->get_location(); + _mesa_glsl_error(&loc, state, "name `%s' already taken in the " + "current scope", decl->identifier); + continue; + } + + /* Push the variable declaration to the top. It means that all the + * variable declarations will appear in a funny last-to-first order, + * but otherwise we run into trouble if a function is prototyped, a + * global var is decled, then the function is defined with usage of + * the global var. See glslparsertest's CorrectModule.frag. + */ + instructions->push_head(var); } instructions->append_list(&initializer_instructions); @@ -3187,7 +3768,7 @@ ast_declarator_list::hir(exec_list *instructions, ir_rvalue * ast_parameter_declarator::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; const struct glsl_type *type; @@ -3198,13 +3779,13 @@ ast_parameter_declarator::hir(exec_list *instructions, if (type == NULL) { if (name != NULL) { - _mesa_glsl_error(& loc, state, - "invalid type `%s' in declaration of `%s'", - name, this->identifier); + _mesa_glsl_error(& loc, state, + "invalid type `%s' in declaration of `%s'", + name, this->identifier); } else { - _mesa_glsl_error(& loc, state, - "invalid type in declaration of `%s'", - this->identifier); + _mesa_glsl_error(& loc, state, + "invalid type in declaration of `%s'", + this->identifier); } type = glsl_type::error_type; @@ -3224,8 +3805,8 @@ ast_parameter_declarator::hir(exec_list *instructions, */ if (type->is_void()) { if (this->identifier != NULL) - _mesa_glsl_error(& loc, state, - "named parameter cannot have type `void'"); + _mesa_glsl_error(& loc, state, + "named parameter cannot have type `void'"); is_void = true; return NULL; @@ -3239,13 +3820,11 @@ ast_parameter_declarator::hir(exec_list *instructions, /* This only handles "vec4 foo[..]". The earlier specifier->glsl_type(...) * call already handled the "vec4[..] foo" case. */ - if (this->is_array) { - type = process_array_type(&loc, type, this->array_size, state); - } + type = process_array_type(&loc, type, this->array_specifier, state); - if (!type->is_error() && type->array_size() == 0) { + if (!type->is_error() && type->is_unsized_array()) { _mesa_glsl_error(&loc, state, "arrays passed as parameters must have " - "a declared size."); + "a declared size"); type = glsl_type::error_type; } @@ -3257,17 +3836,18 @@ ast_parameter_declarator::hir(exec_list *instructions, * for function parameters the default mode is 'in'. */ apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc, - true); + true); - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be assigned - * into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ - if ((var->mode == ir_var_function_inout || var->mode == ir_var_function_out) - && type->contains_sampler()) { - _mesa_glsl_error(&loc, state, "out and inout parameters cannot contain samplers"); + if ((var->data.mode == ir_var_function_inout || var->data.mode == ir_var_function_out) + && type->contains_opaque()) { + _mesa_glsl_error(&loc, state, "out and inout parameters cannot " + "contain opaque variables"); type = glsl_type::error_type; } @@ -3285,10 +3865,10 @@ ast_parameter_declarator::hir(exec_list *instructions, * So for GLSL 1.10, passing an array as an out or inout parameter is not * allowed. This restriction is removed in GLSL 1.20, and in GLSL ES. */ - if ((var->mode == ir_var_function_inout || var->mode == ir_var_function_out) + if ((var->data.mode == ir_var_function_inout || var->data.mode == ir_var_function_out) && type->is_array() && !state->check_version(120, 100, &loc, - "Arrays cannot be out or inout parameters")) { + "arrays cannot be out or inout parameters")) { type = glsl_type::error_type; } @@ -3302,9 +3882,9 @@ ast_parameter_declarator::hir(exec_list *instructions, void ast_parameter_declarator::parameters_to_hir(exec_list *ast_parameters, - bool formal, - exec_list *ir_parameters, - _mesa_glsl_parse_state *state) + bool formal, + exec_list *ir_parameters, + _mesa_glsl_parse_state *state) { ast_parameter_declarator *void_param = NULL; unsigned count = 0; @@ -3314,7 +3894,7 @@ ast_parameter_declarator::parameters_to_hir(exec_list *ast_parameters, param->hir(ir_parameters, state); if (param->is_void) - void_param = param; + void_param = param; count++; } @@ -3323,7 +3903,7 @@ ast_parameter_declarator::parameters_to_hir(exec_list *ast_parameters, YYLTYPE loc = void_param->get_location(); _mesa_glsl_error(& loc, state, - "`void' parameter must be only parameter"); + "`void' parameter must be only parameter"); } } @@ -3344,7 +3924,7 @@ emit_function(_mesa_glsl_parse_state *state, ir_function *f) ir_rvalue * ast_function::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; ir_function *f = NULL; @@ -3379,25 +3959,15 @@ ast_function::hir(exec_list *instructions, "function body", name); } - /* From page 15 (page 21 of the PDF) of the GLSL 1.10 spec, - * - * "Identifiers starting with "gl_" are reserved for use by - * OpenGL, and may not be declared in a shader as either a - * variable or a function." - */ - if (strncmp(name, "gl_", 3) == 0) { - YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, - "identifier `%s' uses reserved `gl_' prefix", name); - } + validate_identifier(name, this->get_location(), state); /* Convert the list of function parameters to HIR now so that they can be * used below to compare this function's signature with previously seen * signatures for functions with the same name. */ ast_parameter_declarator::parameters_to_hir(& this->parameters, - is_definition, - & hir_parameters, state); + is_definition, + & hir_parameters, state); const char *return_type_name; const glsl_type *return_type = @@ -3406,8 +3976,8 @@ ast_function::hir(exec_list *instructions, if (!return_type) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(&loc, state, - "function `%s' has undeclared return type `%s'", - name, return_type_name); + "function `%s' has undeclared return type `%s'", + name, return_type_name); return_type = glsl_type::error_type; } @@ -3417,7 +3987,7 @@ ast_function::hir(exec_list *instructions, if (this->return_type->has_qualifiers()) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(& loc, state, - "function `%s' return type has qualifiers", name); + "function `%s' return type has qualifiers", name); } /* Section 6.1 (Function Definitions) of the GLSL 1.20 spec says: @@ -3425,22 +3995,22 @@ ast_function::hir(exec_list *instructions, * "Arrays are allowed as arguments and as the return type. In both * cases, the array must be explicitly sized." */ - if (return_type->is_array() && return_type->length == 0) { + if (return_type->is_unsized_array()) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(& loc, state, - "function `%s' return type array must be explicitly " - "sized", name); + "function `%s' return type array must be explicitly " + "sized", name); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function parameters - * or uniform variables (see Section 4.3.5 "Uniform")". + * "[Opaque types] can only be declared as function parameters + * or uniform-qualified variables." */ - if (return_type->contains_sampler()) { + if (return_type->contains_opaque()) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(&loc, state, - "function `%s' return type can't contain a sampler", + "function `%s' return type can't contain an opaque type", name); } @@ -3450,22 +4020,22 @@ ast_function::hir(exec_list *instructions, */ f = state->symbols->get_function(name); if (f != NULL && (state->es_shader || f->has_user_signature())) { - sig = f->exact_matching_signature(&hir_parameters); + sig = f->exact_matching_signature(state, &hir_parameters); if (sig != NULL) { - const char *badvar = sig->qualifiers_match(&hir_parameters); - if (badvar != NULL) { - YYLTYPE loc = this->get_location(); + const char *badvar = sig->qualifiers_match(&hir_parameters); + if (badvar != NULL) { + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "function `%s' parameter `%s' " - "qualifiers don't match prototype", name, badvar); - } + _mesa_glsl_error(&loc, state, "function `%s' parameter `%s' " + "qualifiers don't match prototype", name, badvar); + } - if (sig->return_type != return_type) { - YYLTYPE loc = this->get_location(); + if (sig->return_type != return_type) { + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "function `%s' return type doesn't " - "match prototype", name); - } + _mesa_glsl_error(&loc, state, "function `%s' return type doesn't " + "match prototype", name); + } if (sig->is_defined) { if (is_definition) { @@ -3478,17 +4048,17 @@ ast_function::hir(exec_list *instructions, */ return NULL; } - } + } } } else { f = new(ctx) ir_function(name); if (!state->symbols->add_function(f)) { - /* This function name shadows a non-function use of the same name. */ - YYLTYPE loc = this->get_location(); + /* This function name shadows a non-function use of the same name. */ + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "function name `%s' conflicts with " - "non-function", name); - return NULL; + _mesa_glsl_error(&loc, state, "function name `%s' conflicts with " + "non-function", name); + return NULL; } emit_function(state, f); @@ -3497,15 +4067,15 @@ ast_function::hir(exec_list *instructions, /* Verify the return type of main() */ if (strcmp(name, "main") == 0) { if (! return_type->is_void()) { - YYLTYPE loc = this->get_location(); + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, "main() must return void"); + _mesa_glsl_error(& loc, state, "main() must return void"); } if (!hir_parameters.is_empty()) { - YYLTYPE loc = this->get_location(); + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, "main() must not take any parameters"); + _mesa_glsl_error(& loc, state, "main() must not take any parameters"); } } @@ -3527,7 +4097,7 @@ ast_function::hir(exec_list *instructions, ir_rvalue * ast_function_definition::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { prototype->is_definition = true; prototype->hir(instructions, state); @@ -3544,8 +4114,8 @@ ast_function_definition::hir(exec_list *instructions, * Add these to the symbol table. */ state->symbols->push_scope(); - foreach_iter(exec_list_iterator, iter, signature->parameters) { - ir_variable *const var = ((ir_instruction *) iter.get())->as_variable(); + foreach_list(n, &signature->parameters) { + ir_variable *const var = ((ir_instruction *) n)->as_variable(); assert(var != NULL); @@ -3553,11 +4123,11 @@ ast_function_definition::hir(exec_list *instructions, * the same name. */ if (state->symbols->name_declared_this_scope(var->name)) { - YYLTYPE loc = this->get_location(); + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, "parameter `%s' redeclared", var->name); + _mesa_glsl_error(& loc, state, "parameter `%s' redeclared", var->name); } else { - state->symbols->add_variable(var); + state->symbols->add_variable(var); } } @@ -3573,9 +4143,9 @@ ast_function_definition::hir(exec_list *instructions, if (!signature->return_type->is_void() && !state->found_return) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(& loc, state, "function `%s' has non-void return type " - "%s, but no return statement", - signature->function_name(), - signature->return_type->name); + "%s, but no return statement", + signature->function_name(), + signature->return_type->name); } /* Function definitions do not have r-values. @@ -3586,7 +4156,7 @@ ast_function_definition::hir(exec_list *instructions, ir_rvalue * ast_jump_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -3596,29 +4166,29 @@ ast_jump_statement::hir(exec_list *instructions, assert(state->current_function); if (opt_return_value) { - ir_rvalue *ret = opt_return_value->hir(instructions, state); - - /* The value of the return type can be NULL if the shader says - * 'return foo();' and foo() is a function that returns void. - * - * NOTE: The GLSL spec doesn't say that this is an error. The type - * of the return value is void. If the return type of the function is - * also void, then this should compile without error. Seriously. - */ - const glsl_type *const ret_type = - (ret == NULL) ? glsl_type::void_type : ret->type; + ir_rvalue *ret = opt_return_value->hir(instructions, state); + + /* The value of the return type can be NULL if the shader says + * 'return foo();' and foo() is a function that returns void. + * + * NOTE: The GLSL spec doesn't say that this is an error. The type + * of the return value is void. If the return type of the function is + * also void, then this should compile without error. Seriously. + */ + const glsl_type *const ret_type = + (ret == NULL) ? glsl_type::void_type : ret->type; /* Implicit conversions are not allowed for return values prior to * ARB_shading_language_420pack. */ if (state->current_function->return_type != ret_type) { - YYLTYPE loc = this->get_location(); + YYLTYPE loc = this->get_location(); if (state->ARB_shading_language_420pack_enable) { if (!apply_implicit_conversion(state->current_function->return_type, ret, state)) { _mesa_glsl_error(& loc, state, - "Could not implicitly convert return value " + "could not implicitly convert return value " "to %s, in function `%s'", state->current_function->return_type->name, state->current_function->function_name()); @@ -3649,18 +4219,18 @@ ast_jump_statement::hir(exec_list *instructions, "return argument"); } - inst = new(ctx) ir_return(ret); + inst = new(ctx) ir_return(ret); } else { - if (state->current_function->return_type->base_type != - GLSL_TYPE_VOID) { - YYLTYPE loc = this->get_location(); - - _mesa_glsl_error(& loc, state, - "`return' with no value, in function %s returning " - "non-void", - state->current_function->function_name()); - } - inst = new(ctx) ir_return; + if (state->current_function->return_type->base_type != + GLSL_TYPE_VOID) { + YYLTYPE loc = this->get_location(); + + _mesa_glsl_error(& loc, state, + "`return' with no value, in function %s returning " + "non-void", + state->current_function->function_name()); + } + inst = new(ctx) ir_return; } state->found_return = true; @@ -3669,11 +4239,11 @@ ast_jump_statement::hir(exec_list *instructions, } case ast_discard: - if (state->target != fragment_shader) { - YYLTYPE loc = this->get_location(); + if (state->stage != MESA_SHADER_FRAGMENT) { + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, - "`discard' may only appear in a fragment shader"); + _mesa_glsl_error(& loc, state, + "`discard' may only appear in a fragment shader"); } instructions->push_tail(new(ctx) ir_discard); break; @@ -3681,51 +4251,55 @@ ast_jump_statement::hir(exec_list *instructions, case ast_break: case ast_continue: if (mode == ast_continue && - state->loop_nesting_ast == NULL) { - YYLTYPE loc = this->get_location(); + state->loop_nesting_ast == NULL) { + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, - "continue may only appear in a loop"); + _mesa_glsl_error(& loc, state, "continue may only appear in a loop"); } else if (mode == ast_break && - state->loop_nesting_ast == NULL && - state->switch_state.switch_nesting_ast == NULL) { - YYLTYPE loc = this->get_location(); + state->loop_nesting_ast == NULL && + state->switch_state.switch_nesting_ast == NULL) { + YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, - "break may only appear in a loop or a switch"); + _mesa_glsl_error(& loc, state, + "break may only appear in a loop or a switch"); } else { - /* For a loop, inline the for loop expression again, - * since we don't know where near the end of - * the loop body the normal copy of it - * is going to be placed. - */ - if (state->loop_nesting_ast != NULL && - mode == ast_continue && - state->loop_nesting_ast->rest_expression) { - state->loop_nesting_ast->rest_expression->hir(instructions, - state); - } - - if (state->switch_state.is_switch_innermost && - mode == ast_break) { - /* Force break out of switch by setting is_break switch state. - */ - ir_variable *const is_break_var = state->switch_state.is_break_var; - ir_dereference_variable *const deref_is_break_var = - new(ctx) ir_dereference_variable(is_break_var); - ir_constant *const true_val = new(ctx) ir_constant(true); - ir_assignment *const set_break_var = - new(ctx) ir_assignment(deref_is_break_var, true_val); + /* For a loop, inline the for loop expression again, since we don't + * know where near the end of the loop body the normal copy of it is + * going to be placed. Same goes for the condition for a do-while + * loop. + */ + if (state->loop_nesting_ast != NULL && + mode == ast_continue) { + if (state->loop_nesting_ast->rest_expression) { + state->loop_nesting_ast->rest_expression->hir(instructions, + state); + } + if (state->loop_nesting_ast->mode == + ast_iteration_statement::ast_do_while) { + state->loop_nesting_ast->condition_to_hir(instructions, state); + } + } + + if (state->switch_state.is_switch_innermost && + mode == ast_break) { + /* Force break out of switch by setting is_break switch state. + */ + ir_variable *const is_break_var = state->switch_state.is_break_var; + ir_dereference_variable *const deref_is_break_var = + new(ctx) ir_dereference_variable(is_break_var); + ir_constant *const true_val = new(ctx) ir_constant(true); + ir_assignment *const set_break_var = + new(ctx) ir_assignment(deref_is_break_var, true_val); - instructions->push_tail(set_break_var); - } - else { - ir_loop_jump *const jump = - new(ctx) ir_loop_jump((mode == ast_break) - ? ir_loop_jump::jump_break - : ir_loop_jump::jump_continue); - instructions->push_tail(jump); - } + instructions->push_tail(set_break_var); + } + else { + ir_loop_jump *const jump = + new(ctx) ir_loop_jump((mode == ast_break) + ? ir_loop_jump::jump_break + : ir_loop_jump::jump_continue); + instructions->push_tail(jump); + } } break; @@ -3739,7 +4313,7 @@ ast_jump_statement::hir(exec_list *instructions, ir_rvalue * ast_selection_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -3758,7 +4332,7 @@ ast_selection_statement::hir(exec_list *instructions, YYLTYPE loc = this->condition->get_location(); _mesa_glsl_error(& loc, state, "if-statement condition must be scalar " - "boolean"); + "boolean"); } ir_if *const stmt = new(ctx) ir_if(condition); @@ -3785,7 +4359,7 @@ ast_selection_statement::hir(exec_list *instructions, ir_rvalue * ast_switch_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -3802,9 +4376,9 @@ ast_switch_statement::hir(exec_list *instructions, YYLTYPE loc = this->test_expression->get_location(); _mesa_glsl_error(& loc, - state, - "switch-statement expression must be scalar " - "integer"); + state, + "switch-statement expression must be scalar " + "integer"); } /* Track the switch-statement nesting in a stack-like manner. @@ -3822,27 +4396,28 @@ ast_switch_statement::hir(exec_list *instructions, ir_rvalue *const is_fallthru_val = new (ctx) ir_constant(false); state->switch_state.is_fallthru_var = new(ctx) ir_variable(glsl_type::bool_type, - "switch_is_fallthru_tmp", - ir_var_temporary); + "switch_is_fallthru_tmp", + ir_var_temporary); instructions->push_tail(state->switch_state.is_fallthru_var); ir_dereference_variable *deref_is_fallthru_var = new(ctx) ir_dereference_variable(state->switch_state.is_fallthru_var); instructions->push_tail(new(ctx) ir_assignment(deref_is_fallthru_var, - is_fallthru_val)); + is_fallthru_val)); /* Initalize is_break state to false. */ ir_rvalue *const is_break_val = new (ctx) ir_constant(false); - state->switch_state.is_break_var = new(ctx) ir_variable(glsl_type::bool_type, - "switch_is_break_tmp", - ir_var_temporary); + state->switch_state.is_break_var = + new(ctx) ir_variable(glsl_type::bool_type, + "switch_is_break_tmp", + ir_var_temporary); instructions->push_tail(state->switch_state.is_break_var); ir_dereference_variable *deref_is_break_var = new(ctx) ir_dereference_variable(state->switch_state.is_break_var); instructions->push_tail(new(ctx) ir_assignment(deref_is_break_var, - is_break_val)); + is_break_val)); /* Cache test expression. */ @@ -3863,7 +4438,7 @@ ast_switch_statement::hir(exec_list *instructions, void ast_switch_statement::test_to_hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -3873,8 +4448,8 @@ ast_switch_statement::test_to_hir(exec_list *instructions, state); state->switch_state.test_var = new(ctx) ir_variable(test_val->type, - "switch_test_tmp", - ir_var_temporary); + "switch_test_tmp", + ir_var_temporary); ir_dereference_variable *deref_test_var = new(ctx) ir_dereference_variable(state->switch_state.test_var); @@ -3885,7 +4460,7 @@ ast_switch_statement::test_to_hir(exec_list *instructions, ir_rvalue * ast_switch_body::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { if (stmts != NULL) stmts->hir(instructions, state); @@ -3896,7 +4471,7 @@ ast_switch_body::hir(exec_list *instructions, ir_rvalue * ast_case_statement_list::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { foreach_list_typed (ast_case_statement, case_stmt, link, & this->cases) case_stmt->hir(instructions, state); @@ -3907,7 +4482,7 @@ ast_case_statement_list::hir(exec_list *instructions, ir_rvalue * ast_case_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { labels->hir(instructions, state); @@ -3919,8 +4494,8 @@ ast_case_statement::hir(exec_list *instructions, new(state) ir_dereference_variable(state->switch_state.is_break_var); ir_assignment *const reset_fallthru_on_break = new(state) ir_assignment(deref_is_fallthru_var, - false_val, - deref_is_break_var); + false_val, + deref_is_break_var); instructions->push_tail(reset_fallthru_on_break); /* Guard case statements depending on fallthru state. */ @@ -3940,7 +4515,7 @@ ast_case_statement::hir(exec_list *instructions, ir_rvalue * ast_case_label_list::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { foreach_list_typed (ast_case_label, label, link, & this->labels) label->hir(instructions, state); @@ -3951,7 +4526,7 @@ ast_case_label_list::hir(exec_list *instructions, ir_rvalue * ast_case_label::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -3969,62 +4544,57 @@ ast_case_label::hir(exec_list *instructions, ir_constant *label_const = label_rval->constant_expression_value(); if (!label_const) { - YYLTYPE loc = this->test_value->get_location(); + YYLTYPE loc = this->test_value->get_location(); - _mesa_glsl_error(& loc, state, - "switch statement case label must be a " - "constant expression"); + _mesa_glsl_error(& loc, state, + "switch statement case label must be a " + "constant expression"); - /* Stuff a dummy value in to allow processing to continue. */ - label_const = new(ctx) ir_constant(0); + /* Stuff a dummy value in to allow processing to continue. */ + label_const = new(ctx) ir_constant(0); } else { - ast_expression *previous_label = (ast_expression *) - hash_table_find(state->switch_state.labels_ht, - (void *)(uintptr_t)label_const->value.u[0]); - - if (previous_label) { - YYLTYPE loc = this->test_value->get_location(); - _mesa_glsl_error(& loc, state, - "duplicate case value"); - - loc = previous_label->get_location(); - _mesa_glsl_error(& loc, state, - "this is the previous case label"); - } else { - hash_table_insert(state->switch_state.labels_ht, - this->test_value, - (void *)(uintptr_t)label_const->value.u[0]); - } + ast_expression *previous_label = (ast_expression *) + hash_table_find(state->switch_state.labels_ht, + (void *)(uintptr_t)label_const->value.u[0]); + + if (previous_label) { + YYLTYPE loc = this->test_value->get_location(); + _mesa_glsl_error(& loc, state, "duplicate case value"); + + loc = previous_label->get_location(); + _mesa_glsl_error(& loc, state, "this is the previous case label"); + } else { + hash_table_insert(state->switch_state.labels_ht, + this->test_value, + (void *)(uintptr_t)label_const->value.u[0]); + } } ir_dereference_variable *deref_test_var = - new(ctx) ir_dereference_variable(state->switch_state.test_var); + new(ctx) ir_dereference_variable(state->switch_state.test_var); ir_rvalue *const test_cond = new(ctx) ir_expression(ir_binop_all_equal, - label_const, - deref_test_var); + label_const, + deref_test_var); ir_assignment *set_fallthru_on_test = - new(ctx) ir_assignment(deref_fallthru_var, - true_val, - test_cond); + new(ctx) ir_assignment(deref_fallthru_var, true_val, test_cond); instructions->push_tail(set_fallthru_on_test); } else { /* default case */ if (state->switch_state.previous_default) { - YYLTYPE loc = this->get_location(); - _mesa_glsl_error(& loc, state, - "multiple default labels in one switch"); + YYLTYPE loc = this->get_location(); + _mesa_glsl_error(& loc, state, + "multiple default labels in one switch"); - loc = state->switch_state.previous_default->get_location(); - _mesa_glsl_error(& loc, state, - "this is the first default label"); + loc = state->switch_state.previous_default->get_location(); + _mesa_glsl_error(& loc, state, "this is the first default label"); } state->switch_state.previous_default = this; /* Set falltrhu state. */ ir_assignment *set_fallthru = - new(ctx) ir_assignment(deref_fallthru_var, true_val); + new(ctx) ir_assignment(deref_fallthru_var, true_val); instructions->push_tail(set_fallthru); } @@ -4034,35 +4604,35 @@ ast_case_label::hir(exec_list *instructions, } void -ast_iteration_statement::condition_to_hir(ir_loop *stmt, - struct _mesa_glsl_parse_state *state) +ast_iteration_statement::condition_to_hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state) { void *ctx = state; if (condition != NULL) { ir_rvalue *const cond = - condition->hir(& stmt->body_instructions, state); + condition->hir(instructions, state); if ((cond == NULL) - || !cond->type->is_boolean() || !cond->type->is_scalar()) { - YYLTYPE loc = condition->get_location(); + || !cond->type->is_boolean() || !cond->type->is_scalar()) { + YYLTYPE loc = condition->get_location(); - _mesa_glsl_error(& loc, state, - "loop condition must be scalar boolean"); + _mesa_glsl_error(& loc, state, + "loop condition must be scalar boolean"); } else { - /* As the first code in the loop body, generate a block that looks - * like 'if (!condition) break;' as the loop termination condition. - */ - ir_rvalue *const not_cond = - new(ctx) ir_expression(ir_unop_logic_not, cond); + /* As the first code in the loop body, generate a block that looks + * like 'if (!condition) break;' as the loop termination condition. + */ + ir_rvalue *const not_cond = + new(ctx) ir_expression(ir_unop_logic_not, cond); - ir_if *const if_stmt = new(ctx) ir_if(not_cond); + ir_if *const if_stmt = new(ctx) ir_if(not_cond); - ir_jump *const break_stmt = - new(ctx) ir_loop_jump(ir_loop_jump::jump_break); + ir_jump *const break_stmt = + new(ctx) ir_loop_jump(ir_loop_jump::jump_break); - if_stmt->then_instructions.push_tail(break_stmt); - stmt->body_instructions.push_tail(if_stmt); + if_stmt->then_instructions.push_tail(break_stmt); + instructions->push_tail(if_stmt); } } } @@ -4070,7 +4640,7 @@ ast_iteration_statement::condition_to_hir(ir_loop *stmt, ir_rvalue * ast_iteration_statement::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { void *ctx = state; @@ -4097,7 +4667,7 @@ ast_iteration_statement::hir(exec_list *instructions, state->switch_state.is_switch_innermost = false; if (mode != ast_do_while) - condition_to_hir(stmt, state); + condition_to_hir(&stmt->body_instructions, state); if (body != NULL) body->hir(& stmt->body_instructions, state); @@ -4106,7 +4676,7 @@ ast_iteration_statement::hir(exec_list *instructions, rest_expression->hir(& stmt->body_instructions, state); if (mode == ast_do_while) - condition_to_hir(stmt, state); + condition_to_hir(&stmt->body_instructions, state); if (mode != ast_do_while) state->symbols->pop_scope(); @@ -4162,7 +4732,7 @@ is_valid_default_precision_type(const struct glsl_type *const type) ir_rvalue * ast_type_specifier::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { if (this->default_precision == ast_precision_none && this->structure == NULL) return NULL; @@ -4189,7 +4759,7 @@ ast_type_specifier::hir(exec_list *instructions, return NULL; } - if (this->is_array) { + if (this->array_specifier != NULL) { _mesa_glsl_error(&loc, state, "default precision statements do not apply to " "arrays"); @@ -4200,14 +4770,14 @@ ast_type_specifier::hir(exec_list *instructions, state->symbols->get_type(this->type_name); if (!is_valid_default_precision_type(type)) { _mesa_glsl_error(&loc, state, - "default precision statements apply only to types " + "default precision statements apply only to " "float, int, and sampler types"); return NULL; } if (type->base_type == GLSL_TYPE_FLOAT && state->es_shader - && state->target == fragment_shader) { + && state->stage == MESA_SHADER_FRAGMENT) { /* Section 4.5.3 (Default Precision Qualifiers) of the GLSL ES 1.00 * spec says: * @@ -4274,18 +4844,24 @@ ast_type_specifier::hir(exec_list *instructions, * AST for each can be processed the same way into a set of * \c glsl_struct_field to describe the members. * + * If we're processing an interface block, var_mode should be the type of the + * interface block (ir_var_shader_in, ir_var_shader_out, or ir_var_uniform). + * If we're processing a structure, var_mode should be ir_var_auto. + * * \return * The number of fields processed. A pointer to the array structure fields is * stored in \c *fields_ret. */ unsigned ast_process_structure_or_interface_block(exec_list *instructions, - struct _mesa_glsl_parse_state *state, - exec_list *declarations, - YYLTYPE &loc, - glsl_struct_field **fields_ret, + struct _mesa_glsl_parse_state *state, + exec_list *declarations, + YYLTYPE &loc, + glsl_struct_field **fields_ret, bool is_interface, - bool block_row_major) + bool block_row_major, + bool allow_reserved_names, + ir_variable_mode var_mode) { unsigned decl_count = 0; @@ -4296,7 +4872,7 @@ ast_process_structure_or_interface_block(exec_list *instructions, */ foreach_list_typed (ast_declarator_list, decl_list, link, declarations) { foreach_list_const (decl_ptr, & decl_list->declarations) { - decl_count++; + decl_count++; } } @@ -4306,7 +4882,7 @@ ast_process_structure_or_interface_block(exec_list *instructions, * other structure definitions or in interface blocks are processed. */ glsl_struct_field *const fields = ralloc_array(state, glsl_struct_field, - decl_count); + decl_count); unsigned i = 0; foreach_list_typed (ast_declarator_list, decl_list, link, declarations) { @@ -4318,21 +4894,21 @@ ast_process_structure_or_interface_block(exec_list *instructions, * embedded structure definitions have been removed from the language. */ if (state->es_shader && decl_list->type->specifier->structure != NULL) { - _mesa_glsl_error(&loc, state, "Embedded structure definitions are " - "not allowed in GLSL ES 1.00."); + _mesa_glsl_error(&loc, state, "embedded structure definitions are " + "not allowed in GLSL ES 1.00"); } const glsl_type *decl_type = decl_list->type->glsl_type(& type_name, state); foreach_list_typed (ast_declaration, decl, link, - &decl_list->declarations) { - /* From the GL_ARB_uniform_buffer_object spec: + &decl_list->declarations) { + if (!allow_reserved_names) + validate_identifier(decl->identifier, loc, state); + + /* From section 4.3.9 of the GLSL 4.40 spec: * - * "Sampler types are not allowed inside of uniform - * blocks. All other types, arrays, and structures - * allowed for uniforms are allowed within a uniform - * block." + * "[In interface blocks] opaque types are not allowed." * * It should be impossible for decl_type to be NULL here. Cases that * might naturally lead to decl_type being NULL, especially for the @@ -4342,10 +4918,32 @@ ast_process_structure_or_interface_block(exec_list *instructions, const struct glsl_type *field_type = decl_type != NULL ? decl_type : glsl_type::error_type; - if (is_interface && field_type->contains_sampler()) { + if (is_interface && field_type->contains_opaque()) { + YYLTYPE loc = decl_list->get_location(); + _mesa_glsl_error(&loc, state, + "uniform in non-default uniform block contains " + "opaque variable"); + } + + if (field_type->contains_atomic()) { + /* FINISHME: Add a spec quotation here once updated spec + * FINISHME: language is available. See Khronos bug #10903 + * FINISHME: on whether atomic counters are allowed in + * FINISHME: structures. + */ + YYLTYPE loc = decl_list->get_location(); + _mesa_glsl_error(&loc, state, "atomic counter in structure or " + "uniform block"); + } + + if (field_type->contains_image()) { + /* FINISHME: Same problem as with atomic counters. + * FINISHME: Request clarification from Khronos and add + * FINISHME: spec quotation here. + */ YYLTYPE loc = decl_list->get_location(); _mesa_glsl_error(&loc, state, - "Uniform in non-default uniform block contains sampler\n"); + "image in structure or uniform block"); } const struct ast_type_qualifier *const qual = @@ -4359,12 +4957,15 @@ ast_process_structure_or_interface_block(exec_list *instructions, "members"); } - if (decl->is_array) { - field_type = process_array_type(&loc, decl_type, decl->array_size, - state); - } + field_type = process_array_type(&loc, decl_type, + decl->array_specifier, state); fields[i].type = field_type; - fields[i].name = decl->identifier; + fields[i].name = decl->identifier; + fields[i].location = -1; + fields[i].interpolation = + interpret_interpolation_qualifier(qual, var_mode, state, &loc); + fields[i].centroid = qual->flags.q.centroid ? 1 : 0; + fields[i].sample = qual->flags.q.sample ? 1 : 0; if (qual->flags.q.row_major || qual->flags.q.column_major) { if (!qual->flags.q.uniform) { @@ -4390,7 +4991,7 @@ ast_process_structure_or_interface_block(exec_list *instructions, fields[i].row_major = false; } - i++; + i++; } } @@ -4403,7 +5004,7 @@ ast_process_structure_or_interface_block(exec_list *instructions, ir_rvalue * ast_struct_specifier::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { YYLTYPE loc = this->get_location(); @@ -4437,12 +5038,16 @@ ast_struct_specifier::hir(exec_list *instructions, glsl_struct_field *fields; unsigned decl_count = ast_process_structure_or_interface_block(instructions, - state, - &this->declarations, - loc, - &fields, + state, + &this->declarations, + loc, + &fields, false, - false); + false, + false /* allow_reserved_names */, + ir_var_auto); + + validate_identifier(this->name, loc, state); const glsl_type *t = glsl_type::get_record_instance(fields, decl_count, this->name); @@ -4451,12 +5056,12 @@ ast_struct_specifier::hir(exec_list *instructions, _mesa_glsl_error(& loc, state, "struct `%s' previously defined", name); } else { const glsl_type **s = reralloc(state, state->user_structures, - const glsl_type *, - state->num_user_structures + 1); + const glsl_type *, + state->num_user_structures + 1); if (s != NULL) { - s[state->num_user_structures] = t; - state->user_structures = s; - state->num_user_structures++; + s[state->num_user_structures] = t; + state->user_structures = s; + state->num_user_structures++; } } @@ -4467,9 +5072,42 @@ ast_struct_specifier::hir(exec_list *instructions, return NULL; } + +/** + * Visitor class which detects whether a given interface block has been used. + */ +class interface_block_usage_visitor : public ir_hierarchical_visitor +{ +public: + interface_block_usage_visitor(ir_variable_mode mode, const glsl_type *block) + : mode(mode), block(block), found(false) + { + } + + virtual ir_visitor_status visit(ir_dereference_variable *ir) + { + if (ir->var->data.mode == mode && ir->var->get_interface_type() == block) { + found = true; + return visit_stop; + } + return visit_continue; + } + + bool usage_found() const + { + return this->found; + } + +private: + ir_variable_mode mode; + const glsl_type *block; + bool found; +}; + + ir_rvalue * ast_interface_block::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) + struct _mesa_glsl_parse_state *state) { YYLTYPE loc = this->get_location(); @@ -4488,18 +5126,6 @@ ast_interface_block::hir(exec_list *instructions, packing = GLSL_INTERFACE_PACKING_STD140; } - bool block_row_major = this->layout.flags.q.row_major; - exec_list declared_variables; - glsl_struct_field *fields; - unsigned int num_variables = - ast_process_structure_or_interface_block(&declared_variables, - state, - &this->declarations, - loc, - &fields, - true, - block_row_major); - ir_variable_mode var_mode; const char *iface_type_name; if (this->layout.flags.q.in) { @@ -4517,6 +5143,123 @@ ast_interface_block::hir(exec_list *instructions, assert(!"interface block layout qualifier not found!"); } + bool redeclaring_per_vertex = strcmp(this->block_name, "gl_PerVertex") == 0; + bool block_row_major = this->layout.flags.q.row_major; + exec_list declared_variables; + glsl_struct_field *fields; + unsigned int num_variables = + ast_process_structure_or_interface_block(&declared_variables, + state, + &this->declarations, + loc, + &fields, + true, + block_row_major, + redeclaring_per_vertex, + var_mode); + + if (!redeclaring_per_vertex) + validate_identifier(this->block_name, loc, state); + + const glsl_type *earlier_per_vertex = NULL; + if (redeclaring_per_vertex) { + /* Find the previous declaration of gl_PerVertex. If we're redeclaring + * the named interface block gl_in, we can find it by looking at the + * previous declaration of gl_in. Otherwise we can find it by looking + * at the previous decalartion of any of the built-in outputs, + * e.g. gl_Position. + * + * Also check that the instance name and array-ness of the redeclaration + * are correct. + */ + switch (var_mode) { + case ir_var_shader_in: + if (ir_variable *earlier_gl_in = + state->symbols->get_variable("gl_in")) { + earlier_per_vertex = earlier_gl_in->get_interface_type(); + } else { + _mesa_glsl_error(&loc, state, + "redeclaration of gl_PerVertex input not allowed " + "in the %s shader", + _mesa_shader_stage_to_string(state->stage)); + } + if (this->instance_name == NULL || + strcmp(this->instance_name, "gl_in") != 0 || this->array_specifier == NULL) { + _mesa_glsl_error(&loc, state, + "gl_PerVertex input must be redeclared as " + "gl_in[]"); + } + break; + case ir_var_shader_out: + if (ir_variable *earlier_gl_Position = + state->symbols->get_variable("gl_Position")) { + earlier_per_vertex = earlier_gl_Position->get_interface_type(); + } else { + _mesa_glsl_error(&loc, state, + "redeclaration of gl_PerVertex output not " + "allowed in the %s shader", + _mesa_shader_stage_to_string(state->stage)); + } + if (this->instance_name != NULL) { + _mesa_glsl_error(&loc, state, + "gl_PerVertex input may not be redeclared with " + "an instance name"); + } + break; + default: + _mesa_glsl_error(&loc, state, + "gl_PerVertex must be declared as an input or an " + "output"); + break; + } + + if (earlier_per_vertex == NULL) { + /* An error has already been reported. Bail out to avoid null + * dereferences later in this function. + */ + return NULL; + } + + /* Copy locations from the old gl_PerVertex interface block. */ + for (unsigned i = 0; i < num_variables; i++) { + int j = earlier_per_vertex->field_index(fields[i].name); + if (j == -1) { + _mesa_glsl_error(&loc, state, + "redeclaration of gl_PerVertex must be a subset " + "of the built-in members of gl_PerVertex"); + } else { + fields[i].location = + earlier_per_vertex->fields.structure[j].location; + fields[i].interpolation = + earlier_per_vertex->fields.structure[j].interpolation; + fields[i].centroid = + earlier_per_vertex->fields.structure[j].centroid; + fields[i].sample = + earlier_per_vertex->fields.structure[j].sample; + } + } + + /* From section 7.1 ("Built-in Language Variables") of the GLSL 4.10 + * spec: + * + * If a built-in interface block is redeclared, it must appear in + * the shader before any use of any member included in the built-in + * declaration, or a compilation error will result. + * + * This appears to be a clarification to the behaviour established for + * gl_PerVertex by GLSL 1.50, therefore we implement this behaviour + * regardless of GLSL version. + */ + interface_block_usage_visitor v(var_mode, earlier_per_vertex); + v.run(instructions); + if (v.usage_found()) { + _mesa_glsl_error(&loc, state, + "redeclaration of a built-in interface block must " + "appear before any use of any member of the " + "interface block"); + } + } + const glsl_type *block_type = glsl_type::get_interface_instance(fields, num_variables, @@ -4525,8 +5268,8 @@ ast_interface_block::hir(exec_list *instructions, if (!state->symbols->add_interface(block_type->name, block_type, var_mode)) { YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "Interface block `%s' with type `%s' " - "already taken in the current scope.\n", + _mesa_glsl_error(&loc, state, "interface block `%s' with type `%s' " + "already taken in the current scope", this->block_name, iface_type_name); } @@ -4535,6 +5278,19 @@ ast_interface_block::hir(exec_list *instructions, */ assert(declared_variables.is_empty()); + /* From section 4.3.4 (Inputs) of the GLSL 1.50 spec: + * + * Geometry shader input variables get the per-vertex values written + * out by vertex shader output variables of the same names. Since a + * geometry shader operates on a set of vertices, each input varying + * variable (or input block, see interface blocks below) needs to be + * declared as an array. + */ + if (state->stage == MESA_SHADER_GEOMETRY && this->array_specifier == NULL && + var_mode == ir_var_shader_in) { + _mesa_glsl_error(&loc, state, "geometry shader inputs must be arrays"); + } + /* Page 39 (page 45 of the PDF) of section 4.3.7 in the GLSL ES 3.00 spec * says: * @@ -4543,11 +5299,57 @@ ast_interface_block::hir(exec_list *instructions, * field selector ( . ) operator (analogously to structures)." */ if (this->instance_name) { + if (redeclaring_per_vertex) { + /* When a built-in in an unnamed interface block is redeclared, + * get_variable_being_redeclared() calls + * check_builtin_array_max_size() to make sure that built-in array + * variables aren't redeclared to illegal sizes. But we're looking + * at a redeclaration of a named built-in interface block. So we + * have to manually call check_builtin_array_max_size() for all parts + * of the interface that are arrays. + */ + for (unsigned i = 0; i < num_variables; i++) { + if (fields[i].type->is_array()) { + const unsigned size = fields[i].type->array_size(); + check_builtin_array_max_size(fields[i].name, size, loc, state); + } + } + } else { + validate_identifier(this->instance_name, loc, state); + } + ir_variable *var; - if (this->array_size != NULL) { + if (this->array_specifier != NULL) { + /* Section 4.3.7 (Interface Blocks) of the GLSL 1.50 spec says: + * + * For uniform blocks declared an array, each individual array + * element corresponds to a separate buffer object backing one + * instance of the block. As the array size indicates the number + * of buffer objects needed, uniform block array declarations + * must specify an array size. + * + * And a few paragraphs later: + * + * Geometry shader input blocks must be declared as arrays and + * follow the array declaration and linking rules for all + * geometry shader inputs. All other input and output block + * arrays must specify an array size. + * + * The upshot of this is that the only circumstance where an + * interface array size *doesn't* need to be specified is on a + * geometry shader input. + */ + if (this->array_specifier->is_unsized_array && + (state->stage != MESA_SHADER_GEOMETRY || !this->layout.flags.q.in)) { + _mesa_glsl_error(&loc, state, + "only geometry shader inputs may be unsized " + "instance block arrays"); + + } + const glsl_type *block_array_type = - process_array_type(&loc, block_type, this->array_size, state); + process_array_type(&loc, block_type, this->array_specifier, state); var = new(state) ir_variable(block_array_type, this->instance_name, @@ -4558,40 +5360,265 @@ ast_interface_block::hir(exec_list *instructions, var_mode); } - var->interface_type = block_type; - state->symbols->add_variable(var); - instructions->push_tail(var); + if (state->stage == MESA_SHADER_GEOMETRY && var_mode == ir_var_shader_in) + handle_geometry_shader_input_decl(state, loc, var); + + if (ir_variable *earlier = + state->symbols->get_variable(this->instance_name)) { + if (!redeclaring_per_vertex) { + _mesa_glsl_error(&loc, state, "`%s' redeclared", + this->instance_name); + } + earlier->data.how_declared = ir_var_declared_normally; + earlier->type = var->type; + earlier->reinit_interface_type(block_type); + delete var; + } else { + /* Propagate the "binding" keyword into this UBO's fields; + * the UBO declaration itself doesn't get an ir_variable unless it + * has an instance name. This is ugly. + */ + var->data.explicit_binding = this->layout.flags.q.explicit_binding; + var->data.binding = this->layout.binding; + + state->symbols->add_variable(var); + instructions->push_tail(var); + } } else { /* In order to have an array size, the block must also be declared with - * an instane name. + * an instance name. */ - assert(this->array_size == NULL); + assert(this->array_specifier == NULL); for (unsigned i = 0; i < num_variables; i++) { ir_variable *var = new(state) ir_variable(fields[i].type, ralloc_strdup(state, fields[i].name), var_mode); - var->interface_type = block_type; + var->data.interpolation = fields[i].interpolation; + var->data.centroid = fields[i].centroid; + var->data.sample = fields[i].sample; + var->init_interface_type(block_type); + + if (redeclaring_per_vertex) { + ir_variable *earlier = + get_variable_being_redeclared(var, loc, state, + true /* allow_all_redeclarations */); + if (strncmp(var->name, "gl_", 3) != 0 || earlier == NULL) { + _mesa_glsl_error(&loc, state, + "redeclaration of gl_PerVertex can only " + "include built-in variables"); + } else if (earlier->data.how_declared == ir_var_declared_normally) { + _mesa_glsl_error(&loc, state, + "`%s' has already been redeclared", var->name); + } else { + earlier->data.how_declared = ir_var_declared_in_block; + earlier->reinit_interface_type(block_type); + } + continue; + } + + if (state->symbols->get_variable(var->name) != NULL) + _mesa_glsl_error(&loc, state, "`%s' redeclared", var->name); /* Propagate the "binding" keyword into this UBO's fields; * the UBO declaration itself doesn't get an ir_variable unless it * has an instance name. This is ugly. */ - var->explicit_binding = this->layout.flags.q.explicit_binding; - var->binding = this->layout.binding; + var->data.explicit_binding = this->layout.flags.q.explicit_binding; + var->data.binding = this->layout.binding; state->symbols->add_variable(var); instructions->push_tail(var); } + + if (redeclaring_per_vertex && block_type != earlier_per_vertex) { + /* From section 7.1 ("Built-in Language Variables") of the GLSL 4.10 spec: + * + * It is also a compilation error ... to redeclare a built-in + * block and then use a member from that built-in block that was + * not included in the redeclaration. + * + * This appears to be a clarification to the behaviour established + * for gl_PerVertex by GLSL 1.50, therefore we implement this + * behaviour regardless of GLSL version. + * + * To prevent the shader from using a member that was not included in + * the redeclaration, we disable any ir_variables that are still + * associated with the old declaration of gl_PerVertex (since we've + * already updated all of the variables contained in the new + * gl_PerVertex to point to it). + * + * As a side effect this will prevent + * validate_intrastage_interface_blocks() from getting confused and + * thinking there are conflicting definitions of gl_PerVertex in the + * shader. + */ + foreach_list_safe(node, instructions) { + ir_variable *const var = ((ir_instruction *) node)->as_variable(); + if (var != NULL && + var->get_interface_type() == earlier_per_vertex && + var->data.mode == var_mode) { + if (var->data.how_declared == ir_var_declared_normally) { + _mesa_glsl_error(&loc, state, + "redeclaration of gl_PerVertex cannot " + "follow a redeclaration of `%s'", + var->name); + } + state->symbols->disable_variable(var->name); + var->remove(); + } + } + } + } + + return NULL; +} + + +ir_rvalue * +ast_gs_input_layout::hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + YYLTYPE loc = this->get_location(); + + /* If any geometry input layout declaration preceded this one, make sure it + * was consistent with this one. + */ + if (state->gs_input_prim_type_specified && + state->in_qualifier->prim_type != this->prim_type) { + _mesa_glsl_error(&loc, state, + "geometry shader input layout does not match" + " previous declaration"); + return NULL; + } + + /* If any shader inputs occurred before this declaration and specified an + * array size, make sure the size they specified is consistent with the + * primitive type. + */ + unsigned num_vertices = vertices_per_prim(this->prim_type); + if (state->gs_input_size != 0 && state->gs_input_size != num_vertices) { + _mesa_glsl_error(&loc, state, + "this geometry shader input layout implies %u vertices" + " per primitive, but a previous input is declared" + " with size %u", num_vertices, state->gs_input_size); + return NULL; + } + + state->gs_input_prim_type_specified = true; + + /* If any shader inputs occurred before this declaration and did not + * specify an array size, their size is determined now. + */ + foreach_list (node, instructions) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + if (var == NULL || var->data.mode != ir_var_shader_in) + continue; + + /* Note: gl_PrimitiveIDIn has mode ir_var_shader_in, but it's not an + * array; skip it. + */ + + if (var->type->is_unsized_array()) { + if (var->data.max_array_access >= num_vertices) { + _mesa_glsl_error(&loc, state, + "this geometry shader input layout implies %u" + " vertices, but an access to element %u of input" + " `%s' already exists", num_vertices, + var->data.max_array_access, var->name); + } else { + var->type = glsl_type::get_array_instance(var->type->fields.array, + num_vertices); + } + } + } + + return NULL; +} + + +ir_rvalue * +ast_cs_input_layout::hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + YYLTYPE loc = this->get_location(); + + /* If any compute input layout declaration preceded this one, make sure it + * was consistent with this one. + */ + if (state->cs_input_local_size_specified) { + for (int i = 0; i < 3; i++) { + if (state->cs_input_local_size[i] != this->local_size[i]) { + _mesa_glsl_error(&loc, state, + "compute shader input layout does not match" + " previous declaration"); + return NULL; + } + } + } + + /* From the ARB_compute_shader specification: + * + * If the local size of the shader in any dimension is greater + * than the maximum size supported by the implementation for that + * dimension, a compile-time error results. + * + * It is not clear from the spec how the error should be reported if + * the total size of the work group exceeds + * MAX_COMPUTE_WORK_GROUP_INVOCATIONS, but it seems reasonable to + * report it at compile time as well. + */ + GLuint64 total_invocations = 1; + for (int i = 0; i < 3; i++) { + if (this->local_size[i] > state->ctx->Const.MaxComputeWorkGroupSize[i]) { + _mesa_glsl_error(&loc, state, + "local_size_%c exceeds MAX_COMPUTE_WORK_GROUP_SIZE" + " (%d)", 'x' + i, + state->ctx->Const.MaxComputeWorkGroupSize[i]); + break; + } + total_invocations *= this->local_size[i]; + if (total_invocations > + state->ctx->Const.MaxComputeWorkGroupInvocations) { + _mesa_glsl_error(&loc, state, + "product of local_sizes exceeds " + "MAX_COMPUTE_WORK_GROUP_INVOCATIONS (%d)", + state->ctx->Const.MaxComputeWorkGroupInvocations); + break; + } } + state->cs_input_local_size_specified = true; + for (int i = 0; i < 3; i++) + state->cs_input_local_size[i] = this->local_size[i]; + + /* We may now declare the built-in constant gl_WorkGroupSize (see + * builtin_variable_generator::generate_constants() for why we didn't + * declare it earlier). + */ + ir_variable *var = new(state->symbols) + ir_variable(glsl_type::ivec3_type, "gl_WorkGroupSize", ir_var_auto); + var->data.how_declared = ir_var_declared_implicitly; + var->data.read_only = true; + instructions->push_tail(var); + state->symbols->add_variable(var); + ir_constant_data data; + memset(&data, 0, sizeof(data)); + for (int i = 0; i < 3; i++) + data.i[i] = this->local_size[i]; + var->constant_value = new(var) ir_constant(glsl_type::ivec3_type, &data); + var->constant_initializer = + new(var) ir_constant(glsl_type::ivec3_type, &data); + var->data.has_initializer = true; + return NULL; } + static void detect_conflicting_assignments(struct _mesa_glsl_parse_state *state, - exec_list *instructions) + exec_list *instructions) { bool gl_FragColor_assigned = false; bool gl_FragData_assigned = false; @@ -4605,19 +5632,19 @@ detect_conflicting_assignments(struct _mesa_glsl_parse_state *state, foreach_list(node, instructions) { ir_variable *var = ((ir_instruction *)node)->as_variable(); - if (!var || !var->assigned) - continue; + if (!var || !var->data.assigned) + continue; if (strcmp(var->name, "gl_FragColor") == 0) - gl_FragColor_assigned = true; + gl_FragColor_assigned = true; else if (strcmp(var->name, "gl_FragData") == 0) - gl_FragData_assigned = true; + gl_FragData_assigned = true; else if (strncmp(var->name, "gl_", 3) != 0) { - if (state->target == fragment_shader && - var->mode == ir_var_shader_out) { - user_defined_fs_output_assigned = true; - user_defined_fs_output = var; - } + if (state->stage == MESA_SHADER_FRAGMENT && + var->data.mode == ir_var_shader_out) { + user_defined_fs_output_assigned = true; + user_defined_fs_output = var; + } } } @@ -4638,14 +5665,66 @@ detect_conflicting_assignments(struct _mesa_glsl_parse_state *state, */ if (gl_FragColor_assigned && gl_FragData_assigned) { _mesa_glsl_error(&loc, state, "fragment shader writes to both " - "`gl_FragColor' and `gl_FragData'\n"); + "`gl_FragColor' and `gl_FragData'"); } else if (gl_FragColor_assigned && user_defined_fs_output_assigned) { _mesa_glsl_error(&loc, state, "fragment shader writes to both " - "`gl_FragColor' and `%s'\n", - user_defined_fs_output->name); + "`gl_FragColor' and `%s'", + user_defined_fs_output->name); } else if (gl_FragData_assigned && user_defined_fs_output_assigned) { _mesa_glsl_error(&loc, state, "fragment shader writes to both " - "`gl_FragData' and `%s'\n", - user_defined_fs_output->name); + "`gl_FragData' and `%s'", + user_defined_fs_output->name); + } +} + + +static void +remove_per_vertex_blocks(exec_list *instructions, + _mesa_glsl_parse_state *state, ir_variable_mode mode) +{ + /* Find the gl_PerVertex interface block of the appropriate (in/out) mode, + * if it exists in this shader type. + */ + const glsl_type *per_vertex = NULL; + switch (mode) { + case ir_var_shader_in: + if (ir_variable *gl_in = state->symbols->get_variable("gl_in")) + per_vertex = gl_in->get_interface_type(); + break; + case ir_var_shader_out: + if (ir_variable *gl_Position = + state->symbols->get_variable("gl_Position")) { + per_vertex = gl_Position->get_interface_type(); + } + break; + default: + assert(!"Unexpected mode"); + break; + } + + /* If we didn't find a built-in gl_PerVertex interface block, then we don't + * need to do anything. + */ + if (per_vertex == NULL) + return; + + /* If the interface block is used by the shader, then we don't need to do + * anything. + */ + interface_block_usage_visitor v(mode, per_vertex); + v.run(instructions); + if (v.usage_found()) + return; + + /* Remove any ir_variable declarations that refer to the interface block + * we're removing. + */ + foreach_list_safe(node, instructions) { + ir_variable *const var = ((ir_instruction *) node)->as_variable(); + if (var != NULL && var->get_interface_type() == per_vertex && + var->data.mode == mode) { + state->symbols->disable_variable(var->name); + var->remove(); + } } } diff --git a/dist/Mesa/src/glsl/ast_type.cpp b/dist/Mesa/src/glsl/ast_type.cpp index 7bb1f64da..0ee2c495a 100644 --- a/dist/Mesa/src/glsl/ast_type.cpp +++ b/dist/Mesa/src/glsl/ast_type.cpp @@ -32,14 +32,8 @@ ast_type_specifier::print(void) const printf("%s ", type_name); } - if (is_array) { - printf("[ "); - - if (array_size) { - array_size->print(); - } - - printf("] "); + if (array_specifier) { + array_specifier->print(); } } @@ -72,7 +66,8 @@ ast_type_qualifier::has_layout() const || this->flags.q.packed || this->flags.q.explicit_location || this->flags.q.explicit_index - || this->flags.q.explicit_binding; + || this->flags.q.explicit_binding + || this->flags.q.explicit_offset; } bool @@ -89,7 +84,8 @@ ast_type_qualifier::has_storage() const bool ast_type_qualifier::has_auxiliary_storage() const { - return this->flags.q.centroid; + return this->flags.q.centroid + || this->flags.q.sample; } const char* @@ -121,23 +117,62 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, ubo_layout_mask.flags.q.packed = 1; ubo_layout_mask.flags.q.shared = 1; + ast_type_qualifier ubo_binding_mask; + ubo_binding_mask.flags.i = 0; + ubo_binding_mask.flags.q.explicit_binding = 1; + ubo_binding_mask.flags.q.explicit_offset = 1; + /* Uniform block layout qualifiers get to overwrite each * other (rightmost having priority), while all other * qualifiers currently don't allow duplicates. */ if ((this->flags.i & q.flags.i & ~(ubo_mat_mask.flags.i | - ubo_layout_mask.flags.i)) != 0) { + ubo_layout_mask.flags.i | + ubo_binding_mask.flags.i)) != 0) { _mesa_glsl_error(loc, state, - "duplicate layout qualifiers used\n"); + "duplicate layout qualifiers used"); return false; } + if (q.flags.q.prim_type) { + if (this->flags.q.prim_type && this->prim_type != q.prim_type) { + _mesa_glsl_error(loc, state, + "conflicting primitive type qualifiers used"); + return false; + } + this->prim_type = q.prim_type; + } + + if (q.flags.q.max_vertices) { + if (this->flags.q.max_vertices && this->max_vertices != q.max_vertices) { + _mesa_glsl_error(loc, state, + "geometry shader set conflicting max_vertices " + "(%d and %d)", this->max_vertices, q.max_vertices); + return false; + } + this->max_vertices = q.max_vertices; + } + if ((q.flags.i & ubo_mat_mask.flags.i) != 0) this->flags.i &= ~ubo_mat_mask.flags.i; if ((q.flags.i & ubo_layout_mask.flags.i) != 0) this->flags.i &= ~ubo_layout_mask.flags.i; + for (int i = 0; i < 3; i++) { + if (q.flags.q.local_size & (1 << i)) { + if ((this->flags.q.local_size & (1 << i)) && + this->local_size[i] != q.local_size[i]) { + _mesa_glsl_error(loc, state, + "compute shader set conflicting values for " + "local_size_%c (%d and %d)", 'x' + i, + this->local_size[i], q.local_size[i]); + return false; + } + this->local_size[i] = q.local_size[i]; + } + } + this->flags.i |= q.flags.i; if (q.flags.q.explicit_location) @@ -149,9 +184,123 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if (q.flags.q.explicit_binding) this->binding = q.binding; + if (q.flags.q.explicit_offset) + this->offset = q.offset; + if (q.precision != ast_precision_none) this->precision = q.precision; + if (q.flags.q.explicit_image_format) { + this->image_format = q.image_format; + this->image_base_type = q.image_base_type; + } + return true; } +bool +ast_type_qualifier::merge_in_qualifier(YYLTYPE *loc, + _mesa_glsl_parse_state *state, + ast_type_qualifier q, + ast_node* &node) +{ + void *mem_ctx = state; + bool create_gs_ast = false; + bool create_cs_ast = false; + ast_type_qualifier valid_in_mask; + valid_in_mask.flags.i = 0; + + switch (state->stage) { + case MESA_SHADER_GEOMETRY: + if (q.flags.q.prim_type) { + /* Make sure this is a valid input primitive type. */ + switch (q.prim_type) { + case GL_POINTS: + case GL_LINES: + case GL_LINES_ADJACENCY: + case GL_TRIANGLES: + case GL_TRIANGLES_ADJACENCY: + break; + default: + _mesa_glsl_error(loc, state, + "invalid geometry shader input primitive type"); + break; + } + } + + create_gs_ast |= + q.flags.q.prim_type && + !state->in_qualifier->flags.q.prim_type; + + valid_in_mask.flags.q.prim_type = 1; + valid_in_mask.flags.q.invocations = 1; + break; + case MESA_SHADER_FRAGMENT: + if (q.flags.q.early_fragment_tests) { + state->early_fragment_tests = true; + } else { + _mesa_glsl_error(loc, state, "invalid input layout qualifier"); + } + break; + case MESA_SHADER_COMPUTE: + create_cs_ast |= + q.flags.q.local_size != 0 && + state->in_qualifier->flags.q.local_size == 0; + + valid_in_mask.flags.q.local_size = 1; + break; + default: + _mesa_glsl_error(loc, state, + "input layout qualifiers only valid in " + "geometry, fragment and compute shaders"); + break; + } + + /* Generate an error when invalid input layout qualifiers are used. */ + if ((q.flags.i & ~valid_in_mask.flags.i) != 0) { + _mesa_glsl_error(loc, state, + "invalid input layout qualifiers used"); + return false; + } + + /* Input layout qualifiers can be specified multiple + * times in separate declarations, as long as they match. + */ + if (this->flags.q.prim_type) { + if (q.flags.q.prim_type && + this->prim_type != q.prim_type) { + _mesa_glsl_error(loc, state, + "conflicting input primitive types specified"); + } + } else if (q.flags.q.prim_type) { + state->in_qualifier->flags.q.prim_type = 1; + state->in_qualifier->prim_type = q.prim_type; + } + + if (this->flags.q.invocations && + q.flags.q.invocations && + this->invocations != q.invocations) { + _mesa_glsl_error(loc, state, + "conflicting invocations counts specified"); + return false; + } else if (q.flags.q.invocations) { + this->flags.q.invocations = 1; + this->invocations = q.invocations; + } + + if (create_gs_ast) { + node = new(mem_ctx) ast_gs_input_layout(*loc, q.prim_type); + } else if (create_cs_ast) { + /* Infer a local_size of 1 for every unspecified dimension */ + unsigned local_size[3]; + for (int i = 0; i < 3; i++) { + if (q.flags.q.local_size & (1 << i)) + local_size[i] = q.local_size[i]; + else + local_size[i] = 1; + } + node = new(mem_ctx) ast_cs_input_layout(*loc, local_size); + } + + return true; +} diff --git a/dist/Mesa/src/glsl/builtin_compiler/Makefile.am b/dist/Mesa/src/glsl/builtin_compiler/Makefile.am deleted file mode 100644 index 5f1a995c3..000000000 --- a/dist/Mesa/src/glsl/builtin_compiler/Makefile.am +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright © 2012 Jon TURNEY -# Copyright © 2012 Thierry Reding -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -AM_CFLAGS = \ - -I $(top_srcdir)/include \ - -I $(top_srcdir)/src/mapi \ - -I $(top_srcdir)/src/mesa \ - -I $(GLSL_SRCDIR) \ - -I $(GLSL_SRCDIR)/glcpp \ - -I $(GLSL_BUILDDIR) \ - $(VISIBILITY_CFLAGS) - -if CROSS_COMPILING -proxyCC = @CC_FOR_BUILD@ -proxyCFLAGS = @CFLAGS_FOR_BUILD@ -proxyCPP = @CPP_FOR_BUILD@ -proxyCPPFLAGS = @CPPFLAGS_FOR_BUILD@ -proxyCXX = @CXX_FOR_BUILD@ -proxyCXXFLAGS = @CXXFLAGS_FOR_BUILD@ -proxyLD = @LD_FOR_BUILD@ -proxyLDFLAGS = @LDFLAGS_FOR_BUILD@ -AM_CFLAGS += $(DEFINES_FOR_BUILD) -else -proxyCC = @CC@ -proxyCFLAGS = @CFLAGS@ -proxyCPP = @CPP@ -proxyCPPFLAGS = @CPPFLAGS@ -proxyCXX = @CXX@ -proxyCXXFLAGS = @CXXFLAGS@ -proxyLD = @LD@ -proxyLDFLAGS = @LDFLAGS@ -AM_CFLAGS += $(DEFINES) -endif - -CC = $(proxyCC) -CFLAGS = $(proxyCFLAGS) -CPP = $(proxyCPP) -CPPFLAGS = $(proxyCPPFLAGS) -CXX = $(proxyCXX) -CXXFLAGS = $(proxyCXXFLAGS) -LD = $(proxyLD) -LDFLAGS = $(proxyLDFLAGS) - -AM_CXXFLAGS = $(AM_CFLAGS) - -include ../Makefile.sources - -noinst_PROGRAMS = builtin_compiler - -if !CROSS_COMPILING -noinst_LTLIBRARIES = libglslcore.la libglcpp.la - -libglcpp_la_SOURCES = \ - $(LIBGLCPP_GENERATED_FILES) \ - $(LIBGLCPP_FILES) - -libglslcore_la_SOURCES = \ - $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ - $(LIBGLSL_FILES) -endif - -builtin_compiler_SOURCES = \ - $(top_srcdir)/src/mesa/main/hash_table.c \ - $(top_srcdir)/src/mesa/main/imports.c \ - $(top_srcdir)/src/mesa/program/prog_hash_table.c\ - $(top_srcdir)/src/mesa/program/symbol_table.c \ - $(BUILTIN_COMPILER_CXX_FILES) \ - $(GLSL_COMPILER_CXX_FILES) - -if CROSS_COMPILING -builtin_compiler_SOURCES += \ - $(LIBGLCPP_GENERATED_FILES) \ - $(LIBGLCPP_FILES) \ - $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ - $(LIBGLSL_FILES) -builtin_compiler_CPPFLAGS = $(AM_CPPFLAGS) -else -builtin_compiler_LDADD = libglslcore.la libglcpp.la -endif diff --git a/dist/Mesa/src/glsl/builtin_compiler/Makefile.in b/dist/Mesa/src/glsl/builtin_compiler/Makefile.in deleted file mode 100644 index cab464918..000000000 --- a/dist/Mesa/src/glsl/builtin_compiler/Makefile.in +++ /dev/null @@ -1,3378 +0,0 @@ -# Makefile.in generated by automake 1.12.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2012 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright © 2012 Jon TURNEY -# Copyright © 2012 Thierry Reding -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -# shared source lists for Makefile, SConscript, and Android.mk - - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -@CROSS_COMPILING_TRUE@am__append_1 = $(DEFINES_FOR_BUILD) -@CROSS_COMPILING_FALSE@am__append_2 = $(DEFINES) -DIST_COMMON = $(srcdir)/../Makefile.sources $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp -noinst_PROGRAMS = builtin_compiler$(EXEEXT) -@CROSS_COMPILING_TRUE@am__append_3 = \ -@CROSS_COMPILING_TRUE@ $(LIBGLCPP_GENERATED_FILES) \ -@CROSS_COMPILING_TRUE@ $(LIBGLCPP_FILES) \ -@CROSS_COMPILING_TRUE@ $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ -@CROSS_COMPILING_TRUE@ $(LIBGLSL_FILES) - -subdir = src/glsl/builtin_compiler -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_bison.m4 \ - $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ - $(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ - $(top_srcdir)/m4/ax_prog_flex.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 \ - $(top_srcdir)/m4/ax_python_module.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libglcpp_la_LIBADD = -am__libglcpp_la_SOURCES_DIST = $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c \ - $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c $(GLSL_SRCDIR)/ralloc.c \ - $(GLSL_SRCDIR)/glcpp/pp.c -am__objects_1 = glcpp-lex.lo glcpp-parse.lo -am__objects_2 = ralloc.lo pp.lo -@CROSS_COMPILING_FALSE@am_libglcpp_la_OBJECTS = $(am__objects_1) \ -@CROSS_COMPILING_FALSE@ $(am__objects_2) -libglcpp_la_OBJECTS = $(am_libglcpp_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -@CROSS_COMPILING_FALSE@am_libglcpp_la_rpath = -libglslcore_la_LIBADD = -am__libglslcore_la_SOURCES_DIST = $(GLSL_BUILDDIR)/glsl_lexer.cpp \ - $(GLSL_BUILDDIR)/glsl_parser.cpp \ - $(GLSL_SRCDIR)/ast_array_index.cpp $(GLSL_SRCDIR)/ast_expr.cpp \ - $(GLSL_SRCDIR)/ast_function.cpp $(GLSL_SRCDIR)/ast_to_hir.cpp \ - $(GLSL_SRCDIR)/ast_type.cpp $(GLSL_SRCDIR)/builtin_types.cpp \ - $(GLSL_SRCDIR)/builtin_variables.cpp \ - $(GLSL_SRCDIR)/glsl_parser_extras.cpp \ - $(GLSL_SRCDIR)/glsl_types.cpp \ - $(GLSL_SRCDIR)/glsl_symbol_table.cpp \ - $(GLSL_SRCDIR)/hir_field_selection.cpp \ - $(GLSL_SRCDIR)/ir_basic_block.cpp \ - $(GLSL_SRCDIR)/ir_builder.cpp $(GLSL_SRCDIR)/ir_clone.cpp \ - $(GLSL_SRCDIR)/ir_constant_expression.cpp \ - $(GLSL_SRCDIR)/ir.cpp \ - $(GLSL_SRCDIR)/ir_expression_flattening.cpp \ - $(GLSL_SRCDIR)/ir_function_can_inline.cpp \ - $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp \ - $(GLSL_SRCDIR)/ir_function.cpp \ - $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp \ - $(GLSL_SRCDIR)/ir_hv_accept.cpp \ - $(GLSL_SRCDIR)/ir_import_prototypes.cpp \ - $(GLSL_SRCDIR)/ir_print_visitor.cpp \ - $(GLSL_SRCDIR)/ir_reader.cpp \ - $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp \ - $(GLSL_SRCDIR)/ir_set_program_inouts.cpp \ - $(GLSL_SRCDIR)/ir_validate.cpp \ - $(GLSL_SRCDIR)/ir_variable_refcount.cpp \ - $(GLSL_SRCDIR)/linker.cpp $(GLSL_SRCDIR)/link_functions.cpp \ - $(GLSL_SRCDIR)/link_interface_blocks.cpp \ - $(GLSL_SRCDIR)/link_uniforms.cpp \ - $(GLSL_SRCDIR)/link_uniform_initializers.cpp \ - $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp \ - $(GLSL_SRCDIR)/link_uniform_blocks.cpp \ - $(GLSL_SRCDIR)/link_varyings.cpp \ - $(GLSL_SRCDIR)/loop_analysis.cpp \ - $(GLSL_SRCDIR)/loop_controls.cpp \ - $(GLSL_SRCDIR)/loop_unroll.cpp \ - $(GLSL_SRCDIR)/lower_clip_distance.cpp \ - $(GLSL_SRCDIR)/lower_discard.cpp \ - $(GLSL_SRCDIR)/lower_discard_flow.cpp \ - $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_instructions.cpp \ - $(GLSL_SRCDIR)/lower_jumps.cpp \ - $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \ - $(GLSL_SRCDIR)/lower_noise.cpp \ - $(GLSL_SRCDIR)/lower_packed_varyings.cpp \ - $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \ - $(GLSL_SRCDIR)/lower_packing_builtins.cpp \ - $(GLSL_SRCDIR)/lower_texture_projection.cpp \ - $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp \ - $(GLSL_SRCDIR)/lower_vector.cpp \ - $(GLSL_SRCDIR)/lower_vector_insert.cpp \ - $(GLSL_SRCDIR)/lower_output_reads.cpp \ - $(GLSL_SRCDIR)/lower_ubo_reference.cpp \ - $(GLSL_SRCDIR)/opt_algebraic.cpp \ - $(GLSL_SRCDIR)/opt_array_splitting.cpp \ - $(GLSL_SRCDIR)/opt_constant_folding.cpp \ - $(GLSL_SRCDIR)/opt_constant_propagation.cpp \ - $(GLSL_SRCDIR)/opt_constant_variable.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp \ - $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp \ - $(GLSL_SRCDIR)/opt_dead_code.cpp \ - $(GLSL_SRCDIR)/opt_dead_code_local.cpp \ - $(GLSL_SRCDIR)/opt_dead_functions.cpp \ - $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp \ - $(GLSL_SRCDIR)/opt_flip_matrices.cpp \ - $(GLSL_SRCDIR)/opt_function_inlining.cpp \ - $(GLSL_SRCDIR)/opt_if_simplification.cpp \ - $(GLSL_SRCDIR)/opt_noop_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_redundant_jumps.cpp \ - $(GLSL_SRCDIR)/opt_structure_splitting.cpp \ - $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_tree_grafting.cpp \ - $(GLSL_SRCDIR)/s_expression.cpp $(GLSL_SRCDIR)/strtod.c -am__objects_3 = glsl_lexer.lo glsl_parser.lo -am__objects_4 = ast_array_index.lo ast_expr.lo ast_function.lo \ - ast_to_hir.lo ast_type.lo builtin_types.lo \ - builtin_variables.lo glsl_parser_extras.lo glsl_types.lo \ - glsl_symbol_table.lo hir_field_selection.lo ir_basic_block.lo \ - ir_builder.lo ir_clone.lo ir_constant_expression.lo ir.lo \ - ir_expression_flattening.lo ir_function_can_inline.lo \ - ir_function_detect_recursion.lo ir_function.lo \ - ir_hierarchical_visitor.lo ir_hv_accept.lo \ - ir_import_prototypes.lo ir_print_visitor.lo ir_reader.lo \ - ir_rvalue_visitor.lo ir_set_program_inouts.lo ir_validate.lo \ - ir_variable_refcount.lo linker.lo link_functions.lo \ - link_interface_blocks.lo link_uniforms.lo \ - link_uniform_initializers.lo \ - link_uniform_block_active_visitor.lo link_uniform_blocks.lo \ - link_varyings.lo loop_analysis.lo loop_controls.lo \ - loop_unroll.lo lower_clip_distance.lo lower_discard.lo \ - lower_discard_flow.lo lower_if_to_cond_assign.lo \ - lower_instructions.lo lower_jumps.lo lower_mat_op_to_vec.lo \ - lower_noise.lo lower_packed_varyings.lo \ - lower_named_interface_blocks.lo lower_packing_builtins.lo \ - lower_texture_projection.lo \ - lower_variable_index_to_cond_assign.lo \ - lower_vec_index_to_cond_assign.lo \ - lower_vec_index_to_swizzle.lo lower_vector.lo \ - lower_vector_insert.lo lower_output_reads.lo \ - lower_ubo_reference.lo opt_algebraic.lo opt_array_splitting.lo \ - opt_constant_folding.lo opt_constant_propagation.lo \ - opt_constant_variable.lo opt_copy_propagation.lo \ - opt_copy_propagation_elements.lo opt_dead_builtin_varyings.lo \ - opt_dead_code.lo opt_dead_code_local.lo opt_dead_functions.lo \ - opt_flatten_nested_if_blocks.lo opt_flip_matrices.lo \ - opt_function_inlining.lo opt_if_simplification.lo \ - opt_noop_swizzle.lo opt_redundant_jumps.lo \ - opt_structure_splitting.lo opt_swizzle_swizzle.lo \ - opt_tree_grafting.lo s_expression.lo strtod.lo -@CROSS_COMPILING_FALSE@am_libglslcore_la_OBJECTS = $(am__objects_3) \ -@CROSS_COMPILING_FALSE@ $(am__objects_4) -libglslcore_la_OBJECTS = $(am_libglslcore_la_OBJECTS) -@CROSS_COMPILING_FALSE@am_libglslcore_la_rpath = -PROGRAMS = $(noinst_PROGRAMS) -am__builtin_compiler_SOURCES_DIST = \ - $(top_srcdir)/src/mesa/main/hash_table.c \ - $(top_srcdir)/src/mesa/main/imports.c \ - $(top_srcdir)/src/mesa/program/prog_hash_table.c \ - $(top_srcdir)/src/mesa/program/symbol_table.c \ - $(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp \ - $(GLSL_SRCDIR)/standalone_scaffolding.cpp \ - $(GLSL_SRCDIR)/main.cpp $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c \ - $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c $(GLSL_SRCDIR)/ralloc.c \ - $(GLSL_SRCDIR)/glcpp/pp.c $(GLSL_BUILDDIR)/glsl_lexer.cpp \ - $(GLSL_BUILDDIR)/glsl_parser.cpp \ - $(GLSL_SRCDIR)/ast_array_index.cpp $(GLSL_SRCDIR)/ast_expr.cpp \ - $(GLSL_SRCDIR)/ast_function.cpp $(GLSL_SRCDIR)/ast_to_hir.cpp \ - $(GLSL_SRCDIR)/ast_type.cpp $(GLSL_SRCDIR)/builtin_types.cpp \ - $(GLSL_SRCDIR)/builtin_variables.cpp \ - $(GLSL_SRCDIR)/glsl_parser_extras.cpp \ - $(GLSL_SRCDIR)/glsl_types.cpp \ - $(GLSL_SRCDIR)/glsl_symbol_table.cpp \ - $(GLSL_SRCDIR)/hir_field_selection.cpp \ - $(GLSL_SRCDIR)/ir_basic_block.cpp \ - $(GLSL_SRCDIR)/ir_builder.cpp $(GLSL_SRCDIR)/ir_clone.cpp \ - $(GLSL_SRCDIR)/ir_constant_expression.cpp \ - $(GLSL_SRCDIR)/ir.cpp \ - $(GLSL_SRCDIR)/ir_expression_flattening.cpp \ - $(GLSL_SRCDIR)/ir_function_can_inline.cpp \ - $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp \ - $(GLSL_SRCDIR)/ir_function.cpp \ - $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp \ - $(GLSL_SRCDIR)/ir_hv_accept.cpp \ - $(GLSL_SRCDIR)/ir_import_prototypes.cpp \ - $(GLSL_SRCDIR)/ir_print_visitor.cpp \ - $(GLSL_SRCDIR)/ir_reader.cpp \ - $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp \ - $(GLSL_SRCDIR)/ir_set_program_inouts.cpp \ - $(GLSL_SRCDIR)/ir_validate.cpp \ - $(GLSL_SRCDIR)/ir_variable_refcount.cpp \ - $(GLSL_SRCDIR)/linker.cpp $(GLSL_SRCDIR)/link_functions.cpp \ - $(GLSL_SRCDIR)/link_interface_blocks.cpp \ - $(GLSL_SRCDIR)/link_uniforms.cpp \ - $(GLSL_SRCDIR)/link_uniform_initializers.cpp \ - $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp \ - $(GLSL_SRCDIR)/link_uniform_blocks.cpp \ - $(GLSL_SRCDIR)/link_varyings.cpp \ - $(GLSL_SRCDIR)/loop_analysis.cpp \ - $(GLSL_SRCDIR)/loop_controls.cpp \ - $(GLSL_SRCDIR)/loop_unroll.cpp \ - $(GLSL_SRCDIR)/lower_clip_distance.cpp \ - $(GLSL_SRCDIR)/lower_discard.cpp \ - $(GLSL_SRCDIR)/lower_discard_flow.cpp \ - $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_instructions.cpp \ - $(GLSL_SRCDIR)/lower_jumps.cpp \ - $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \ - $(GLSL_SRCDIR)/lower_noise.cpp \ - $(GLSL_SRCDIR)/lower_packed_varyings.cpp \ - $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \ - $(GLSL_SRCDIR)/lower_packing_builtins.cpp \ - $(GLSL_SRCDIR)/lower_texture_projection.cpp \ - $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp \ - $(GLSL_SRCDIR)/lower_vector.cpp \ - $(GLSL_SRCDIR)/lower_vector_insert.cpp \ - $(GLSL_SRCDIR)/lower_output_reads.cpp \ - $(GLSL_SRCDIR)/lower_ubo_reference.cpp \ - $(GLSL_SRCDIR)/opt_algebraic.cpp \ - $(GLSL_SRCDIR)/opt_array_splitting.cpp \ - $(GLSL_SRCDIR)/opt_constant_folding.cpp \ - $(GLSL_SRCDIR)/opt_constant_propagation.cpp \ - $(GLSL_SRCDIR)/opt_constant_variable.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp \ - $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp \ - $(GLSL_SRCDIR)/opt_dead_code.cpp \ - $(GLSL_SRCDIR)/opt_dead_code_local.cpp \ - $(GLSL_SRCDIR)/opt_dead_functions.cpp \ - $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp \ - $(GLSL_SRCDIR)/opt_flip_matrices.cpp \ - $(GLSL_SRCDIR)/opt_function_inlining.cpp \ - $(GLSL_SRCDIR)/opt_if_simplification.cpp \ - $(GLSL_SRCDIR)/opt_noop_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_redundant_jumps.cpp \ - $(GLSL_SRCDIR)/opt_structure_splitting.cpp \ - $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_tree_grafting.cpp \ - $(GLSL_SRCDIR)/s_expression.cpp $(GLSL_SRCDIR)/strtod.c -am__objects_5 = builtin_compiler-builtin_stubs.$(OBJEXT) -am__objects_6 = builtin_compiler-standalone_scaffolding.$(OBJEXT) \ - builtin_compiler-main.$(OBJEXT) -am__objects_7 = builtin_compiler-glcpp-lex.$(OBJEXT) \ - builtin_compiler-glcpp-parse.$(OBJEXT) -am__objects_8 = builtin_compiler-ralloc.$(OBJEXT) \ - builtin_compiler-pp.$(OBJEXT) -am__objects_9 = builtin_compiler-glsl_lexer.$(OBJEXT) \ - builtin_compiler-glsl_parser.$(OBJEXT) -am__objects_10 = builtin_compiler-ast_array_index.$(OBJEXT) \ - builtin_compiler-ast_expr.$(OBJEXT) \ - builtin_compiler-ast_function.$(OBJEXT) \ - builtin_compiler-ast_to_hir.$(OBJEXT) \ - builtin_compiler-ast_type.$(OBJEXT) \ - builtin_compiler-builtin_types.$(OBJEXT) \ - builtin_compiler-builtin_variables.$(OBJEXT) \ - builtin_compiler-glsl_parser_extras.$(OBJEXT) \ - builtin_compiler-glsl_types.$(OBJEXT) \ - builtin_compiler-glsl_symbol_table.$(OBJEXT) \ - builtin_compiler-hir_field_selection.$(OBJEXT) \ - builtin_compiler-ir_basic_block.$(OBJEXT) \ - builtin_compiler-ir_builder.$(OBJEXT) \ - builtin_compiler-ir_clone.$(OBJEXT) \ - builtin_compiler-ir_constant_expression.$(OBJEXT) \ - builtin_compiler-ir.$(OBJEXT) \ - builtin_compiler-ir_expression_flattening.$(OBJEXT) \ - builtin_compiler-ir_function_can_inline.$(OBJEXT) \ - builtin_compiler-ir_function_detect_recursion.$(OBJEXT) \ - builtin_compiler-ir_function.$(OBJEXT) \ - builtin_compiler-ir_hierarchical_visitor.$(OBJEXT) \ - builtin_compiler-ir_hv_accept.$(OBJEXT) \ - builtin_compiler-ir_import_prototypes.$(OBJEXT) \ - builtin_compiler-ir_print_visitor.$(OBJEXT) \ - builtin_compiler-ir_reader.$(OBJEXT) \ - builtin_compiler-ir_rvalue_visitor.$(OBJEXT) \ - builtin_compiler-ir_set_program_inouts.$(OBJEXT) \ - builtin_compiler-ir_validate.$(OBJEXT) \ - builtin_compiler-ir_variable_refcount.$(OBJEXT) \ - builtin_compiler-linker.$(OBJEXT) \ - builtin_compiler-link_functions.$(OBJEXT) \ - builtin_compiler-link_interface_blocks.$(OBJEXT) \ - builtin_compiler-link_uniforms.$(OBJEXT) \ - builtin_compiler-link_uniform_initializers.$(OBJEXT) \ - builtin_compiler-link_uniform_block_active_visitor.$(OBJEXT) \ - builtin_compiler-link_uniform_blocks.$(OBJEXT) \ - builtin_compiler-link_varyings.$(OBJEXT) \ - builtin_compiler-loop_analysis.$(OBJEXT) \ - builtin_compiler-loop_controls.$(OBJEXT) \ - builtin_compiler-loop_unroll.$(OBJEXT) \ - builtin_compiler-lower_clip_distance.$(OBJEXT) \ - builtin_compiler-lower_discard.$(OBJEXT) \ - builtin_compiler-lower_discard_flow.$(OBJEXT) \ - builtin_compiler-lower_if_to_cond_assign.$(OBJEXT) \ - builtin_compiler-lower_instructions.$(OBJEXT) \ - builtin_compiler-lower_jumps.$(OBJEXT) \ - builtin_compiler-lower_mat_op_to_vec.$(OBJEXT) \ - builtin_compiler-lower_noise.$(OBJEXT) \ - builtin_compiler-lower_packed_varyings.$(OBJEXT) \ - builtin_compiler-lower_named_interface_blocks.$(OBJEXT) \ - builtin_compiler-lower_packing_builtins.$(OBJEXT) \ - builtin_compiler-lower_texture_projection.$(OBJEXT) \ - builtin_compiler-lower_variable_index_to_cond_assign.$(OBJEXT) \ - builtin_compiler-lower_vec_index_to_cond_assign.$(OBJEXT) \ - builtin_compiler-lower_vec_index_to_swizzle.$(OBJEXT) \ - builtin_compiler-lower_vector.$(OBJEXT) \ - builtin_compiler-lower_vector_insert.$(OBJEXT) \ - builtin_compiler-lower_output_reads.$(OBJEXT) \ - builtin_compiler-lower_ubo_reference.$(OBJEXT) \ - builtin_compiler-opt_algebraic.$(OBJEXT) \ - builtin_compiler-opt_array_splitting.$(OBJEXT) \ - builtin_compiler-opt_constant_folding.$(OBJEXT) \ - builtin_compiler-opt_constant_propagation.$(OBJEXT) \ - builtin_compiler-opt_constant_variable.$(OBJEXT) \ - builtin_compiler-opt_copy_propagation.$(OBJEXT) \ - builtin_compiler-opt_copy_propagation_elements.$(OBJEXT) \ - builtin_compiler-opt_dead_builtin_varyings.$(OBJEXT) \ - builtin_compiler-opt_dead_code.$(OBJEXT) \ - builtin_compiler-opt_dead_code_local.$(OBJEXT) \ - builtin_compiler-opt_dead_functions.$(OBJEXT) \ - builtin_compiler-opt_flatten_nested_if_blocks.$(OBJEXT) \ - builtin_compiler-opt_flip_matrices.$(OBJEXT) \ - builtin_compiler-opt_function_inlining.$(OBJEXT) \ - builtin_compiler-opt_if_simplification.$(OBJEXT) \ - builtin_compiler-opt_noop_swizzle.$(OBJEXT) \ - builtin_compiler-opt_redundant_jumps.$(OBJEXT) \ - builtin_compiler-opt_structure_splitting.$(OBJEXT) \ - builtin_compiler-opt_swizzle_swizzle.$(OBJEXT) \ - builtin_compiler-opt_tree_grafting.$(OBJEXT) \ - builtin_compiler-s_expression.$(OBJEXT) \ - builtin_compiler-strtod.$(OBJEXT) -@CROSS_COMPILING_TRUE@am__objects_11 = $(am__objects_7) \ -@CROSS_COMPILING_TRUE@ $(am__objects_8) $(am__objects_9) \ -@CROSS_COMPILING_TRUE@ $(am__objects_10) -am_builtin_compiler_OBJECTS = builtin_compiler-hash_table.$(OBJEXT) \ - builtin_compiler-imports.$(OBJEXT) \ - builtin_compiler-prog_hash_table.$(OBJEXT) \ - builtin_compiler-symbol_table.$(OBJEXT) $(am__objects_5) \ - $(am__objects_6) $(am__objects_11) -builtin_compiler_OBJECTS = $(am_builtin_compiler_OBJECTS) -@CROSS_COMPILING_FALSE@builtin_compiler_DEPENDENCIES = libglslcore.la \ -@CROSS_COMPILING_FALSE@ libglcpp.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/bin/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libglcpp_la_SOURCES) $(libglslcore_la_SOURCES) \ - $(builtin_compiler_SOURCES) -DIST_SOURCES = $(am__libglcpp_la_SOURCES_DIST) \ - $(am__libglslcore_la_SOURCES_DIST) \ - $(am__builtin_compiler_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_OBJEXT = @BUILD_OBJEXT@ -CC = $(proxyCC) -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CC_FOR_BUILD = @CC_FOR_BUILD@ -CFLAGS = $(proxyCFLAGS) -CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR@ -CLOCK_LIB = @CLOCK_LIB@ -CPP = $(proxyCPP) -CPPFLAGS = $(proxyCPPFLAGS) -CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ -CPP_FOR_BUILD = @CPP_FOR_BUILD@ -CXX = $(proxyCXX) -CXXCPP = @CXXCPP@ -CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ -CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = $(proxyCXXFLAGS) -CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ -CXX_FOR_BUILD = @CXX_FOR_BUILD@ -CYGPATH_W = @CYGPATH_W@ -DEFINES = @DEFINES@ -DEFINES_FOR_BUILD = @DEFINES_FOR_BUILD@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DLOPEN_LIBS = @DLOPEN_LIBS@ -DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ -DRI2PROTO_LIBS = @DRI2PROTO_LIBS@ -DRIGL_CFLAGS = @DRIGL_CFLAGS@ -DRIGL_LIBS = @DRIGL_LIBS@ -DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ -DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@ -DRI_LIB_DEPS = @DRI_LIB_DEPS@ -DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGL_CFLAGS = @EGL_CFLAGS@ -EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ -EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@ -EGL_LIB_DEPS = @EGL_LIB_DEPS@ -EGL_LIB_GLOB = @EGL_LIB_GLOB@ -EGL_LIB_NAME = @EGL_LIB_NAME@ -EGL_NATIVE_PLATFORM = @EGL_NATIVE_PLATFORM@ -EGL_PLATFORMS = @EGL_PLATFORMS@ -EGREP = @EGREP@ -ELF_LIB = @ELF_LIB@ -EXEEXT = @EXEEXT@ -EXPAT_INCLUDES = @EXPAT_INCLUDES@ -FGREP = @FGREP@ -FREEDRENO_CFLAGS = @FREEDRENO_CFLAGS@ -FREEDRENO_LIBS = @FREEDRENO_LIBS@ -GALLIUM_DRI_LIB_DEPS = @GALLIUM_DRI_LIB_DEPS@ -GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@ -GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@ -GALLIUM_PIPE_LOADER_XCB_CFLAGS = @GALLIUM_PIPE_LOADER_XCB_CFLAGS@ -GALLIUM_PIPE_LOADER_XCB_LIBS = @GALLIUM_PIPE_LOADER_XCB_LIBS@ -GBM_PC_LIB_PRIV = @GBM_PC_LIB_PRIV@ -GBM_PC_REQ_PRIV = @GBM_PC_REQ_PRIV@ -GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@ -GLAPI_LIB_NAME = @GLAPI_LIB_NAME@ -GLESv1_CM_LIB_DEPS = @GLESv1_CM_LIB_DEPS@ -GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ -GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ -GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@ -GLESv2_LIB_DEPS = @GLESv2_LIB_DEPS@ -GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ -GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ -GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ -GLPROTO_CFLAGS = @GLPROTO_CFLAGS@ -GLPROTO_LIBS = @GLPROTO_LIBS@ -GLX_TLS = @GLX_TLS@ -GL_LIB = @GL_LIB@ -GL_LIB_DEPS = @GL_LIB_DEPS@ -GL_LIB_GLOB = @GL_LIB_GLOB@ -GL_LIB_NAME = @GL_LIB_NAME@ -GL_PC_CFLAGS = @GL_PC_CFLAGS@ -GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ -GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ -GREP = @GREP@ -HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ -INDENT = @INDENT@ -INDENT_FLAGS = @INDENT_FLAGS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTEL_CFLAGS = @INTEL_CFLAGS@ -INTEL_LIBS = @INTEL_LIBS@ -LD = $(proxyLD) -LDFLAGS = $(proxyLDFLAGS) -LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@ -LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@ -LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ -LIBDRM_LIBS = @LIBDRM_LIBS@ -LIBDRM_XORG_CFLAGS = @LIBDRM_XORG_CFLAGS@ -LIBDRM_XORG_LIBS = @LIBDRM_XORG_LIBS@ -LIBKMS_XORG_CFLAGS = @LIBKMS_XORG_CFLAGS@ -LIBKMS_XORG_LIBS = @LIBKMS_XORG_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@ -LIBUDEV_LIBS = @LIBUDEV_LIBS@ -LIB_DIR = @LIB_DIR@ -LIPO = @LIPO@ -LLVM_BINDIR = @LLVM_BINDIR@ -LLVM_CFLAGS = @LLVM_CFLAGS@ -LLVM_CONFIG = @LLVM_CONFIG@ -LLVM_CPPFLAGS = @LLVM_CPPFLAGS@ -LLVM_CXXFLAGS = @LLVM_CXXFLAGS@ -LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@ -LLVM_LDFLAGS = @LLVM_LDFLAGS@ -LLVM_LIBDIR = @LLVM_LIBDIR@ -LLVM_LIBS = @LLVM_LIBS@ -LLVM_VERSION = @LLVM_VERSION@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKE = @MAKE@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MESA_LLVM = @MESA_LLVM@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@ -NOUVEAU_LIBS = @NOUVEAU_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPENCL_LIB_INSTALL_DIR = @OPENCL_LIB_INSTALL_DIR@ -OSMESA_LIB = @OSMESA_LIB@ -OSMESA_LIB_DEPS = @OSMESA_LIB_DEPS@ -OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ -OSMESA_MESA_DEPS = @OSMESA_MESA_DEPS@ -OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ -OSMESA_PC_REQ = @OSMESA_PC_REQ@ -OSMESA_VERSION = @OSMESA_VERSION@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POSIX_SHELL = @POSIX_SHELL@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON2 = @PYTHON2@ -RADEON_CFLAGS = @RADEON_CFLAGS@ -RADEON_LIBS = @RADEON_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SELINUX_LIBS = @SELINUX_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VDPAU_CFLAGS = @VDPAU_CFLAGS@ -VDPAU_LIBS = @VDPAU_LIBS@ -VDPAU_LIB_INSTALL_DIR = @VDPAU_LIB_INSTALL_DIR@ -VDPAU_MAJOR = @VDPAU_MAJOR@ -VDPAU_MINOR = @VDPAU_MINOR@ -VERSION = @VERSION@ -VG_LIB_DEPS = @VG_LIB_DEPS@ -VG_LIB_GLOB = @VG_LIB_GLOB@ -VG_LIB_NAME = @VG_LIB_NAME@ -VG_PC_LIB_PRIV = @VG_PC_LIB_PRIV@ -VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ -VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER = @WAYLAND_SCANNER@ -X11_INCLUDES = @X11_INCLUDES@ -XA_MAJOR = @XA_MAJOR@ -XA_MINOR = @XA_MINOR@ -XA_TINY = @XA_TINY@ -XA_VERSION = @XA_VERSION@ -XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@ -XCB_DRI2_LIBS = @XCB_DRI2_LIBS@ -XEXT_CFLAGS = @XEXT_CFLAGS@ -XEXT_LIBS = @XEXT_LIBS@ -XF86VIDMODE_CFLAGS = @XF86VIDMODE_CFLAGS@ -XF86VIDMODE_LIBS = @XF86VIDMODE_LIBS@ -XLIBGL_CFLAGS = @XLIBGL_CFLAGS@ -XLIBGL_LIBS = @XLIBGL_LIBS@ -XORG_CFLAGS = @XORG_CFLAGS@ -XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@ -XORG_LIBS = @XORG_LIBS@ -XVMC_CFLAGS = @XVMC_CFLAGS@ -XVMC_LIBS = @XVMC_LIBS@ -XVMC_LIB_INSTALL_DIR = @XVMC_LIB_INSTALL_DIR@ -XVMC_MAJOR = @XVMC_MAJOR@ -XVMC_MINOR = @XVMC_MINOR@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AM_CFLAGS = -I $(top_srcdir)/include -I $(top_srcdir)/src/mapi -I \ - $(top_srcdir)/src/mesa -I $(GLSL_SRCDIR) -I \ - $(GLSL_SRCDIR)/glcpp -I $(GLSL_BUILDDIR) $(VISIBILITY_CFLAGS) \ - $(am__append_1) $(am__append_2) -@CROSS_COMPILING_FALSE@proxyCC = @CC@ -@CROSS_COMPILING_TRUE@proxyCC = @CC_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyCFLAGS = @CFLAGS@ -@CROSS_COMPILING_TRUE@proxyCFLAGS = @CFLAGS_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyCPP = @CPP@ -@CROSS_COMPILING_TRUE@proxyCPP = @CPP_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyCPPFLAGS = @CPPFLAGS@ -@CROSS_COMPILING_TRUE@proxyCPPFLAGS = @CPPFLAGS_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyCXX = @CXX@ -@CROSS_COMPILING_TRUE@proxyCXX = @CXX_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyCXXFLAGS = @CXXFLAGS@ -@CROSS_COMPILING_TRUE@proxyCXXFLAGS = @CXXFLAGS_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyLD = @LD@ -@CROSS_COMPILING_TRUE@proxyLD = @LD_FOR_BUILD@ -@CROSS_COMPILING_FALSE@proxyLDFLAGS = @LDFLAGS@ -@CROSS_COMPILING_TRUE@proxyLDFLAGS = @LDFLAGS_FOR_BUILD@ -AM_CXXFLAGS = $(AM_CFLAGS) -GLSL_SRCDIR = $(top_srcdir)/src/glsl -GLSL_BUILDDIR = $(top_builddir)/src/glsl - -# libglcpp -LIBGLCPP_FILES = \ - $(GLSL_SRCDIR)/ralloc.c \ - $(GLSL_SRCDIR)/glcpp/pp.c - -LIBGLCPP_GENERATED_FILES = \ - $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c \ - $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c - - -# libglsl -LIBGLSL_FILES = \ - $(GLSL_SRCDIR)/ast_array_index.cpp \ - $(GLSL_SRCDIR)/ast_expr.cpp \ - $(GLSL_SRCDIR)/ast_function.cpp \ - $(GLSL_SRCDIR)/ast_to_hir.cpp \ - $(GLSL_SRCDIR)/ast_type.cpp \ - $(GLSL_SRCDIR)/builtin_types.cpp \ - $(GLSL_SRCDIR)/builtin_variables.cpp \ - $(GLSL_SRCDIR)/glsl_parser_extras.cpp \ - $(GLSL_SRCDIR)/glsl_types.cpp \ - $(GLSL_SRCDIR)/glsl_symbol_table.cpp \ - $(GLSL_SRCDIR)/hir_field_selection.cpp \ - $(GLSL_SRCDIR)/ir_basic_block.cpp \ - $(GLSL_SRCDIR)/ir_builder.cpp \ - $(GLSL_SRCDIR)/ir_clone.cpp \ - $(GLSL_SRCDIR)/ir_constant_expression.cpp \ - $(GLSL_SRCDIR)/ir.cpp \ - $(GLSL_SRCDIR)/ir_expression_flattening.cpp \ - $(GLSL_SRCDIR)/ir_function_can_inline.cpp \ - $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp \ - $(GLSL_SRCDIR)/ir_function.cpp \ - $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp \ - $(GLSL_SRCDIR)/ir_hv_accept.cpp \ - $(GLSL_SRCDIR)/ir_import_prototypes.cpp \ - $(GLSL_SRCDIR)/ir_print_visitor.cpp \ - $(GLSL_SRCDIR)/ir_reader.cpp \ - $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp \ - $(GLSL_SRCDIR)/ir_set_program_inouts.cpp \ - $(GLSL_SRCDIR)/ir_validate.cpp \ - $(GLSL_SRCDIR)/ir_variable_refcount.cpp \ - $(GLSL_SRCDIR)/linker.cpp \ - $(GLSL_SRCDIR)/link_functions.cpp \ - $(GLSL_SRCDIR)/link_interface_blocks.cpp \ - $(GLSL_SRCDIR)/link_uniforms.cpp \ - $(GLSL_SRCDIR)/link_uniform_initializers.cpp \ - $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp \ - $(GLSL_SRCDIR)/link_uniform_blocks.cpp \ - $(GLSL_SRCDIR)/link_varyings.cpp \ - $(GLSL_SRCDIR)/loop_analysis.cpp \ - $(GLSL_SRCDIR)/loop_controls.cpp \ - $(GLSL_SRCDIR)/loop_unroll.cpp \ - $(GLSL_SRCDIR)/lower_clip_distance.cpp \ - $(GLSL_SRCDIR)/lower_discard.cpp \ - $(GLSL_SRCDIR)/lower_discard_flow.cpp \ - $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_instructions.cpp \ - $(GLSL_SRCDIR)/lower_jumps.cpp \ - $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \ - $(GLSL_SRCDIR)/lower_noise.cpp \ - $(GLSL_SRCDIR)/lower_packed_varyings.cpp \ - $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \ - $(GLSL_SRCDIR)/lower_packing_builtins.cpp \ - $(GLSL_SRCDIR)/lower_texture_projection.cpp \ - $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp \ - $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp \ - $(GLSL_SRCDIR)/lower_vector.cpp \ - $(GLSL_SRCDIR)/lower_vector_insert.cpp \ - $(GLSL_SRCDIR)/lower_output_reads.cpp \ - $(GLSL_SRCDIR)/lower_ubo_reference.cpp \ - $(GLSL_SRCDIR)/opt_algebraic.cpp \ - $(GLSL_SRCDIR)/opt_array_splitting.cpp \ - $(GLSL_SRCDIR)/opt_constant_folding.cpp \ - $(GLSL_SRCDIR)/opt_constant_propagation.cpp \ - $(GLSL_SRCDIR)/opt_constant_variable.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation.cpp \ - $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp \ - $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp \ - $(GLSL_SRCDIR)/opt_dead_code.cpp \ - $(GLSL_SRCDIR)/opt_dead_code_local.cpp \ - $(GLSL_SRCDIR)/opt_dead_functions.cpp \ - $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp \ - $(GLSL_SRCDIR)/opt_flip_matrices.cpp \ - $(GLSL_SRCDIR)/opt_function_inlining.cpp \ - $(GLSL_SRCDIR)/opt_if_simplification.cpp \ - $(GLSL_SRCDIR)/opt_noop_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_redundant_jumps.cpp \ - $(GLSL_SRCDIR)/opt_structure_splitting.cpp \ - $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp \ - $(GLSL_SRCDIR)/opt_tree_grafting.cpp \ - $(GLSL_SRCDIR)/s_expression.cpp \ - $(GLSL_SRCDIR)/strtod.c - - -# glsl_compiler -GLSL_COMPILER_CXX_FILES = \ - $(GLSL_SRCDIR)/standalone_scaffolding.cpp \ - $(GLSL_SRCDIR)/main.cpp - - -# builtin_compiler -# -# This is built before libglsl to generate builtin_function.cpp for libglsl. -# For this to work, a dummy version of builtin_function.cpp, -# builtin_stubs.cpp, is used. -BUILTIN_COMPILER_CXX_FILES = \ - $(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp - -BUILTIN_COMPILER_GENERATED_CXX_FILES = \ - $(GLSL_BUILDDIR)/glsl_lexer.cpp \ - $(GLSL_BUILDDIR)/glsl_parser.cpp - - -# libglsl generated sources -LIBGLSL_GENERATED_CXX_FILES = \ - $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ - $(GLSL_BUILDDIR)/builtin_function.cpp - -@CROSS_COMPILING_FALSE@noinst_LTLIBRARIES = libglslcore.la libglcpp.la -@CROSS_COMPILING_FALSE@libglcpp_la_SOURCES = \ -@CROSS_COMPILING_FALSE@ $(LIBGLCPP_GENERATED_FILES) \ -@CROSS_COMPILING_FALSE@ $(LIBGLCPP_FILES) - -@CROSS_COMPILING_FALSE@libglslcore_la_SOURCES = \ -@CROSS_COMPILING_FALSE@ $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ -@CROSS_COMPILING_FALSE@ $(LIBGLSL_FILES) - -builtin_compiler_SOURCES = $(top_srcdir)/src/mesa/main/hash_table.c \ - $(top_srcdir)/src/mesa/main/imports.c \ - $(top_srcdir)/src/mesa/program/prog_hash_table.c \ - $(top_srcdir)/src/mesa/program/symbol_table.c \ - $(BUILTIN_COMPILER_CXX_FILES) $(GLSL_COMPILER_CXX_FILES) \ - $(am__append_3) -@CROSS_COMPILING_TRUE@builtin_compiler_CPPFLAGS = $(AM_CPPFLAGS) -@CROSS_COMPILING_FALSE@builtin_compiler_LDADD = libglslcore.la libglcpp.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.sources $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/glsl/builtin_compiler/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/glsl/builtin_compiler/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; -$(srcdir)/../Makefile.sources: - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } -libglcpp.la: $(libglcpp_la_OBJECTS) $(libglcpp_la_DEPENDENCIES) $(EXTRA_libglcpp_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(am_libglcpp_la_rpath) $(libglcpp_la_OBJECTS) $(libglcpp_la_LIBADD) $(LIBS) -libglslcore.la: $(libglslcore_la_OBJECTS) $(libglslcore_la_DEPENDENCIES) $(EXTRA_libglslcore_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(am_libglslcore_la_rpath) $(libglslcore_la_OBJECTS) $(libglslcore_la_LIBADD) $(LIBS) - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -builtin_compiler$(EXEEXT): $(builtin_compiler_OBJECTS) $(builtin_compiler_DEPENDENCIES) $(EXTRA_builtin_compiler_DEPENDENCIES) - @rm -f builtin_compiler$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(builtin_compiler_OBJECTS) $(builtin_compiler_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ast_array_index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ast_expr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ast_function.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ast_to_hir.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ast_type.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ast_array_index.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ast_expr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ast_function.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ast_to_hir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ast_type.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-builtin_stubs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-builtin_types.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-builtin_variables.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glcpp-lex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glcpp-parse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glsl_lexer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glsl_parser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glsl_parser_extras.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glsl_symbol_table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-glsl_types.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-hash_table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-hir_field_selection.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-imports.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_basic_block.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_builder.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_clone.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_constant_expression.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_expression_flattening.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_function.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_function_can_inline.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_hv_accept.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_import_prototypes.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_print_visitor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_set_program_inouts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_validate.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ir_variable_refcount.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_functions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_interface_blocks.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_uniform_blocks.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_uniform_initializers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_uniforms.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-link_varyings.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-linker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-loop_analysis.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-loop_controls.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-loop_unroll.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_clip_distance.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_discard.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_discard_flow.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_instructions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_jumps.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_noise.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_output_reads.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_packed_varyings.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_packing_builtins.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_texture_projection.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_ubo_reference.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_vector.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-lower_vector_insert.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_algebraic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_array_splitting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_constant_folding.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_constant_propagation.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_constant_variable.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_copy_propagation.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_dead_code.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_dead_code_local.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_dead_functions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_flip_matrices.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_function_inlining.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_if_simplification.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_noop_swizzle.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_redundant_jumps.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_structure_splitting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-opt_tree_grafting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-pp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-prog_hash_table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-ralloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-s_expression.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-standalone_scaffolding.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-strtod.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_compiler-symbol_table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_types.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin_variables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glcpp-lex.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glcpp-parse.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glsl_lexer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glsl_parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glsl_parser_extras.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glsl_symbol_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glsl_types.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hir_field_selection.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_basic_block.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_builder.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_clone.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_constant_expression.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_expression_flattening.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_function.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_function_can_inline.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_function_detect_recursion.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_hierarchical_visitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_hv_accept.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_import_prototypes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_print_visitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_reader.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_rvalue_visitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_set_program_inouts.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_validate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ir_variable_refcount.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_functions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_interface_blocks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_uniform_block_active_visitor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_uniform_blocks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_uniform_initializers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_uniforms.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_varyings.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop_analysis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop_controls.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop_unroll.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_clip_distance.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_discard.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_discard_flow.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_if_to_cond_assign.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_instructions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_jumps.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_mat_op_to_vec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_named_interface_blocks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_noise.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_output_reads.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_packed_varyings.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_packing_builtins.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_texture_projection.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_ubo_reference.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_variable_index_to_cond_assign.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_vec_index_to_cond_assign.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_vec_index_to_swizzle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_vector.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lower_vector_insert.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_algebraic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_array_splitting.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_constant_folding.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_constant_propagation.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_constant_variable.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_copy_propagation.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_copy_propagation_elements.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_dead_builtin_varyings.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_dead_code.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_dead_code_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_dead_functions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_flatten_nested_if_blocks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_flip_matrices.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_function_inlining.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_if_simplification.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_noop_swizzle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_redundant_jumps.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_structure_splitting.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_swizzle_swizzle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_tree_grafting.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ralloc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s_expression.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtod.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -glcpp-lex.lo: $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT glcpp-lex.lo -MD -MP -MF $(DEPDIR)/glcpp-lex.Tpo -c -o glcpp-lex.lo `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glcpp-lex.Tpo $(DEPDIR)/glcpp-lex.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' object='glcpp-lex.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o glcpp-lex.lo `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c - -glcpp-parse.lo: $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT glcpp-parse.lo -MD -MP -MF $(DEPDIR)/glcpp-parse.Tpo -c -o glcpp-parse.lo `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glcpp-parse.Tpo $(DEPDIR)/glcpp-parse.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' object='glcpp-parse.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o glcpp-parse.lo `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c - -ralloc.lo: $(GLSL_SRCDIR)/ralloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ralloc.lo -MD -MP -MF $(DEPDIR)/ralloc.Tpo -c -o ralloc.lo `test -f '$(GLSL_SRCDIR)/ralloc.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ralloc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ralloc.Tpo $(DEPDIR)/ralloc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/ralloc.c' object='ralloc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ralloc.lo `test -f '$(GLSL_SRCDIR)/ralloc.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ralloc.c - -pp.lo: $(GLSL_SRCDIR)/glcpp/pp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pp.lo -MD -MP -MF $(DEPDIR)/pp.Tpo -c -o pp.lo `test -f '$(GLSL_SRCDIR)/glcpp/pp.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glcpp/pp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pp.Tpo $(DEPDIR)/pp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/glcpp/pp.c' object='pp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pp.lo `test -f '$(GLSL_SRCDIR)/glcpp/pp.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glcpp/pp.c - -strtod.lo: $(GLSL_SRCDIR)/strtod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strtod.lo -MD -MP -MF $(DEPDIR)/strtod.Tpo -c -o strtod.lo `test -f '$(GLSL_SRCDIR)/strtod.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/strtod.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strtod.Tpo $(DEPDIR)/strtod.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/strtod.c' object='strtod.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strtod.lo `test -f '$(GLSL_SRCDIR)/strtod.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/strtod.c - -builtin_compiler-hash_table.o: $(top_srcdir)/src/mesa/main/hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-hash_table.o -MD -MP -MF $(DEPDIR)/builtin_compiler-hash_table.Tpo -c -o builtin_compiler-hash_table.o `test -f '$(top_srcdir)/src/mesa/main/hash_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/main/hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-hash_table.Tpo $(DEPDIR)/builtin_compiler-hash_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/main/hash_table.c' object='builtin_compiler-hash_table.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-hash_table.o `test -f '$(top_srcdir)/src/mesa/main/hash_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/main/hash_table.c - -builtin_compiler-hash_table.obj: $(top_srcdir)/src/mesa/main/hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-hash_table.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-hash_table.Tpo -c -o builtin_compiler-hash_table.obj `if test -f '$(top_srcdir)/src/mesa/main/hash_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/main/hash_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/main/hash_table.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-hash_table.Tpo $(DEPDIR)/builtin_compiler-hash_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/main/hash_table.c' object='builtin_compiler-hash_table.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-hash_table.obj `if test -f '$(top_srcdir)/src/mesa/main/hash_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/main/hash_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/main/hash_table.c'; fi` - -builtin_compiler-imports.o: $(top_srcdir)/src/mesa/main/imports.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-imports.o -MD -MP -MF $(DEPDIR)/builtin_compiler-imports.Tpo -c -o builtin_compiler-imports.o `test -f '$(top_srcdir)/src/mesa/main/imports.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/main/imports.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-imports.Tpo $(DEPDIR)/builtin_compiler-imports.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/main/imports.c' object='builtin_compiler-imports.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-imports.o `test -f '$(top_srcdir)/src/mesa/main/imports.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/main/imports.c - -builtin_compiler-imports.obj: $(top_srcdir)/src/mesa/main/imports.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-imports.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-imports.Tpo -c -o builtin_compiler-imports.obj `if test -f '$(top_srcdir)/src/mesa/main/imports.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/main/imports.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/main/imports.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-imports.Tpo $(DEPDIR)/builtin_compiler-imports.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/main/imports.c' object='builtin_compiler-imports.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-imports.obj `if test -f '$(top_srcdir)/src/mesa/main/imports.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/main/imports.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/main/imports.c'; fi` - -builtin_compiler-prog_hash_table.o: $(top_srcdir)/src/mesa/program/prog_hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-prog_hash_table.o -MD -MP -MF $(DEPDIR)/builtin_compiler-prog_hash_table.Tpo -c -o builtin_compiler-prog_hash_table.o `test -f '$(top_srcdir)/src/mesa/program/prog_hash_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/program/prog_hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-prog_hash_table.Tpo $(DEPDIR)/builtin_compiler-prog_hash_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/program/prog_hash_table.c' object='builtin_compiler-prog_hash_table.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-prog_hash_table.o `test -f '$(top_srcdir)/src/mesa/program/prog_hash_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/program/prog_hash_table.c - -builtin_compiler-prog_hash_table.obj: $(top_srcdir)/src/mesa/program/prog_hash_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-prog_hash_table.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-prog_hash_table.Tpo -c -o builtin_compiler-prog_hash_table.obj `if test -f '$(top_srcdir)/src/mesa/program/prog_hash_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/program/prog_hash_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/program/prog_hash_table.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-prog_hash_table.Tpo $(DEPDIR)/builtin_compiler-prog_hash_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/program/prog_hash_table.c' object='builtin_compiler-prog_hash_table.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-prog_hash_table.obj `if test -f '$(top_srcdir)/src/mesa/program/prog_hash_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/program/prog_hash_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/program/prog_hash_table.c'; fi` - -builtin_compiler-symbol_table.o: $(top_srcdir)/src/mesa/program/symbol_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-symbol_table.o -MD -MP -MF $(DEPDIR)/builtin_compiler-symbol_table.Tpo -c -o builtin_compiler-symbol_table.o `test -f '$(top_srcdir)/src/mesa/program/symbol_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/program/symbol_table.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-symbol_table.Tpo $(DEPDIR)/builtin_compiler-symbol_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/program/symbol_table.c' object='builtin_compiler-symbol_table.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-symbol_table.o `test -f '$(top_srcdir)/src/mesa/program/symbol_table.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mesa/program/symbol_table.c - -builtin_compiler-symbol_table.obj: $(top_srcdir)/src/mesa/program/symbol_table.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-symbol_table.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-symbol_table.Tpo -c -o builtin_compiler-symbol_table.obj `if test -f '$(top_srcdir)/src/mesa/program/symbol_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/program/symbol_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/program/symbol_table.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-symbol_table.Tpo $(DEPDIR)/builtin_compiler-symbol_table.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/src/mesa/program/symbol_table.c' object='builtin_compiler-symbol_table.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-symbol_table.obj `if test -f '$(top_srcdir)/src/mesa/program/symbol_table.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mesa/program/symbol_table.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mesa/program/symbol_table.c'; fi` - -builtin_compiler-glcpp-lex.o: $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-glcpp-lex.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glcpp-lex.Tpo -c -o builtin_compiler-glcpp-lex.o `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glcpp-lex.Tpo $(DEPDIR)/builtin_compiler-glcpp-lex.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' object='builtin_compiler-glcpp-lex.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-glcpp-lex.o `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c - -builtin_compiler-glcpp-lex.obj: $(GLSL_BUILDDIR)/glcpp/glcpp-lex.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-glcpp-lex.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glcpp-lex.Tpo -c -o builtin_compiler-glcpp-lex.obj `if test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glcpp-lex.Tpo $(DEPDIR)/builtin_compiler-glcpp-lex.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c' object='builtin_compiler-glcpp-lex.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-glcpp-lex.obj `if test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glcpp/glcpp-lex.c'; fi` - -builtin_compiler-glcpp-parse.o: $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-glcpp-parse.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glcpp-parse.Tpo -c -o builtin_compiler-glcpp-parse.o `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glcpp-parse.Tpo $(DEPDIR)/builtin_compiler-glcpp-parse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' object='builtin_compiler-glcpp-parse.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-glcpp-parse.o `test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c - -builtin_compiler-glcpp-parse.obj: $(GLSL_BUILDDIR)/glcpp/glcpp-parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-glcpp-parse.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glcpp-parse.Tpo -c -o builtin_compiler-glcpp-parse.obj `if test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glcpp-parse.Tpo $(DEPDIR)/builtin_compiler-glcpp-parse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c' object='builtin_compiler-glcpp-parse.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-glcpp-parse.obj `if test -f '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glcpp/glcpp-parse.c'; fi` - -builtin_compiler-ralloc.o: $(GLSL_SRCDIR)/ralloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-ralloc.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ralloc.Tpo -c -o builtin_compiler-ralloc.o `test -f '$(GLSL_SRCDIR)/ralloc.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ralloc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ralloc.Tpo $(DEPDIR)/builtin_compiler-ralloc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/ralloc.c' object='builtin_compiler-ralloc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-ralloc.o `test -f '$(GLSL_SRCDIR)/ralloc.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ralloc.c - -builtin_compiler-ralloc.obj: $(GLSL_SRCDIR)/ralloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-ralloc.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ralloc.Tpo -c -o builtin_compiler-ralloc.obj `if test -f '$(GLSL_SRCDIR)/ralloc.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ralloc.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ralloc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ralloc.Tpo $(DEPDIR)/builtin_compiler-ralloc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/ralloc.c' object='builtin_compiler-ralloc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-ralloc.obj `if test -f '$(GLSL_SRCDIR)/ralloc.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ralloc.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ralloc.c'; fi` - -builtin_compiler-pp.o: $(GLSL_SRCDIR)/glcpp/pp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-pp.o -MD -MP -MF $(DEPDIR)/builtin_compiler-pp.Tpo -c -o builtin_compiler-pp.o `test -f '$(GLSL_SRCDIR)/glcpp/pp.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glcpp/pp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-pp.Tpo $(DEPDIR)/builtin_compiler-pp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/glcpp/pp.c' object='builtin_compiler-pp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-pp.o `test -f '$(GLSL_SRCDIR)/glcpp/pp.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glcpp/pp.c - -builtin_compiler-pp.obj: $(GLSL_SRCDIR)/glcpp/pp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-pp.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-pp.Tpo -c -o builtin_compiler-pp.obj `if test -f '$(GLSL_SRCDIR)/glcpp/pp.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glcpp/pp.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glcpp/pp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-pp.Tpo $(DEPDIR)/builtin_compiler-pp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/glcpp/pp.c' object='builtin_compiler-pp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-pp.obj `if test -f '$(GLSL_SRCDIR)/glcpp/pp.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glcpp/pp.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glcpp/pp.c'; fi` - -builtin_compiler-strtod.o: $(GLSL_SRCDIR)/strtod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-strtod.o -MD -MP -MF $(DEPDIR)/builtin_compiler-strtod.Tpo -c -o builtin_compiler-strtod.o `test -f '$(GLSL_SRCDIR)/strtod.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/strtod.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-strtod.Tpo $(DEPDIR)/builtin_compiler-strtod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/strtod.c' object='builtin_compiler-strtod.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-strtod.o `test -f '$(GLSL_SRCDIR)/strtod.c' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/strtod.c - -builtin_compiler-strtod.obj: $(GLSL_SRCDIR)/strtod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT builtin_compiler-strtod.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-strtod.Tpo -c -o builtin_compiler-strtod.obj `if test -f '$(GLSL_SRCDIR)/strtod.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/strtod.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/strtod.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-strtod.Tpo $(DEPDIR)/builtin_compiler-strtod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(GLSL_SRCDIR)/strtod.c' object='builtin_compiler-strtod.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o builtin_compiler-strtod.obj `if test -f '$(GLSL_SRCDIR)/strtod.c'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/strtod.c'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/strtod.c'; fi` - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -glsl_lexer.lo: $(GLSL_BUILDDIR)/glsl_lexer.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glsl_lexer.lo -MD -MP -MF $(DEPDIR)/glsl_lexer.Tpo -c -o glsl_lexer.lo `test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_lexer.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glsl_lexer.Tpo $(DEPDIR)/glsl_lexer.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_lexer.cpp' object='glsl_lexer.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glsl_lexer.lo `test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_lexer.cpp - -glsl_parser.lo: $(GLSL_BUILDDIR)/glsl_parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glsl_parser.lo -MD -MP -MF $(DEPDIR)/glsl_parser.Tpo -c -o glsl_parser.lo `test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glsl_parser.Tpo $(DEPDIR)/glsl_parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_parser.cpp' object='glsl_parser.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glsl_parser.lo `test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_parser.cpp - -ast_array_index.lo: $(GLSL_SRCDIR)/ast_array_index.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ast_array_index.lo -MD -MP -MF $(DEPDIR)/ast_array_index.Tpo -c -o ast_array_index.lo `test -f '$(GLSL_SRCDIR)/ast_array_index.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_array_index.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ast_array_index.Tpo $(DEPDIR)/ast_array_index.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_array_index.cpp' object='ast_array_index.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ast_array_index.lo `test -f '$(GLSL_SRCDIR)/ast_array_index.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_array_index.cpp - -ast_expr.lo: $(GLSL_SRCDIR)/ast_expr.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ast_expr.lo -MD -MP -MF $(DEPDIR)/ast_expr.Tpo -c -o ast_expr.lo `test -f '$(GLSL_SRCDIR)/ast_expr.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_expr.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ast_expr.Tpo $(DEPDIR)/ast_expr.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_expr.cpp' object='ast_expr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ast_expr.lo `test -f '$(GLSL_SRCDIR)/ast_expr.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_expr.cpp - -ast_function.lo: $(GLSL_SRCDIR)/ast_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ast_function.lo -MD -MP -MF $(DEPDIR)/ast_function.Tpo -c -o ast_function.lo `test -f '$(GLSL_SRCDIR)/ast_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ast_function.Tpo $(DEPDIR)/ast_function.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_function.cpp' object='ast_function.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ast_function.lo `test -f '$(GLSL_SRCDIR)/ast_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_function.cpp - -ast_to_hir.lo: $(GLSL_SRCDIR)/ast_to_hir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ast_to_hir.lo -MD -MP -MF $(DEPDIR)/ast_to_hir.Tpo -c -o ast_to_hir.lo `test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_to_hir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ast_to_hir.Tpo $(DEPDIR)/ast_to_hir.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_to_hir.cpp' object='ast_to_hir.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ast_to_hir.lo `test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_to_hir.cpp - -ast_type.lo: $(GLSL_SRCDIR)/ast_type.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ast_type.lo -MD -MP -MF $(DEPDIR)/ast_type.Tpo -c -o ast_type.lo `test -f '$(GLSL_SRCDIR)/ast_type.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_type.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ast_type.Tpo $(DEPDIR)/ast_type.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_type.cpp' object='ast_type.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ast_type.lo `test -f '$(GLSL_SRCDIR)/ast_type.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_type.cpp - -builtin_types.lo: $(GLSL_SRCDIR)/builtin_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_types.lo -MD -MP -MF $(DEPDIR)/builtin_types.Tpo -c -o builtin_types.lo `test -f '$(GLSL_SRCDIR)/builtin_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_types.Tpo $(DEPDIR)/builtin_types.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_types.cpp' object='builtin_types.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_types.lo `test -f '$(GLSL_SRCDIR)/builtin_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_types.cpp - -builtin_variables.lo: $(GLSL_SRCDIR)/builtin_variables.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_variables.lo -MD -MP -MF $(DEPDIR)/builtin_variables.Tpo -c -o builtin_variables.lo `test -f '$(GLSL_SRCDIR)/builtin_variables.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_variables.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_variables.Tpo $(DEPDIR)/builtin_variables.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_variables.cpp' object='builtin_variables.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_variables.lo `test -f '$(GLSL_SRCDIR)/builtin_variables.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_variables.cpp - -glsl_parser_extras.lo: $(GLSL_SRCDIR)/glsl_parser_extras.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glsl_parser_extras.lo -MD -MP -MF $(DEPDIR)/glsl_parser_extras.Tpo -c -o glsl_parser_extras.lo `test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_parser_extras.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glsl_parser_extras.Tpo $(DEPDIR)/glsl_parser_extras.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_parser_extras.cpp' object='glsl_parser_extras.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glsl_parser_extras.lo `test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_parser_extras.cpp - -glsl_types.lo: $(GLSL_SRCDIR)/glsl_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glsl_types.lo -MD -MP -MF $(DEPDIR)/glsl_types.Tpo -c -o glsl_types.lo `test -f '$(GLSL_SRCDIR)/glsl_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glsl_types.Tpo $(DEPDIR)/glsl_types.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_types.cpp' object='glsl_types.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glsl_types.lo `test -f '$(GLSL_SRCDIR)/glsl_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_types.cpp - -glsl_symbol_table.lo: $(GLSL_SRCDIR)/glsl_symbol_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glsl_symbol_table.lo -MD -MP -MF $(DEPDIR)/glsl_symbol_table.Tpo -c -o glsl_symbol_table.lo `test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_symbol_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glsl_symbol_table.Tpo $(DEPDIR)/glsl_symbol_table.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_symbol_table.cpp' object='glsl_symbol_table.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glsl_symbol_table.lo `test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_symbol_table.cpp - -hir_field_selection.lo: $(GLSL_SRCDIR)/hir_field_selection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hir_field_selection.lo -MD -MP -MF $(DEPDIR)/hir_field_selection.Tpo -c -o hir_field_selection.lo `test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/hir_field_selection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hir_field_selection.Tpo $(DEPDIR)/hir_field_selection.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/hir_field_selection.cpp' object='hir_field_selection.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hir_field_selection.lo `test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/hir_field_selection.cpp - -ir_basic_block.lo: $(GLSL_SRCDIR)/ir_basic_block.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_basic_block.lo -MD -MP -MF $(DEPDIR)/ir_basic_block.Tpo -c -o ir_basic_block.lo `test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_basic_block.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_basic_block.Tpo $(DEPDIR)/ir_basic_block.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_basic_block.cpp' object='ir_basic_block.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_basic_block.lo `test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_basic_block.cpp - -ir_builder.lo: $(GLSL_SRCDIR)/ir_builder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_builder.lo -MD -MP -MF $(DEPDIR)/ir_builder.Tpo -c -o ir_builder.lo `test -f '$(GLSL_SRCDIR)/ir_builder.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_builder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_builder.Tpo $(DEPDIR)/ir_builder.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_builder.cpp' object='ir_builder.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_builder.lo `test -f '$(GLSL_SRCDIR)/ir_builder.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_builder.cpp - -ir_clone.lo: $(GLSL_SRCDIR)/ir_clone.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_clone.lo -MD -MP -MF $(DEPDIR)/ir_clone.Tpo -c -o ir_clone.lo `test -f '$(GLSL_SRCDIR)/ir_clone.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_clone.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_clone.Tpo $(DEPDIR)/ir_clone.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_clone.cpp' object='ir_clone.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_clone.lo `test -f '$(GLSL_SRCDIR)/ir_clone.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_clone.cpp - -ir_constant_expression.lo: $(GLSL_SRCDIR)/ir_constant_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_constant_expression.lo -MD -MP -MF $(DEPDIR)/ir_constant_expression.Tpo -c -o ir_constant_expression.lo `test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_constant_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_constant_expression.Tpo $(DEPDIR)/ir_constant_expression.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_constant_expression.cpp' object='ir_constant_expression.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_constant_expression.lo `test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_constant_expression.cpp - -ir.lo: $(GLSL_SRCDIR)/ir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir.lo -MD -MP -MF $(DEPDIR)/ir.Tpo -c -o ir.lo `test -f '$(GLSL_SRCDIR)/ir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir.Tpo $(DEPDIR)/ir.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir.cpp' object='ir.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir.lo `test -f '$(GLSL_SRCDIR)/ir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir.cpp - -ir_expression_flattening.lo: $(GLSL_SRCDIR)/ir_expression_flattening.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_expression_flattening.lo -MD -MP -MF $(DEPDIR)/ir_expression_flattening.Tpo -c -o ir_expression_flattening.lo `test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_expression_flattening.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_expression_flattening.Tpo $(DEPDIR)/ir_expression_flattening.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_expression_flattening.cpp' object='ir_expression_flattening.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_expression_flattening.lo `test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_expression_flattening.cpp - -ir_function_can_inline.lo: $(GLSL_SRCDIR)/ir_function_can_inline.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_function_can_inline.lo -MD -MP -MF $(DEPDIR)/ir_function_can_inline.Tpo -c -o ir_function_can_inline.lo `test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_can_inline.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_function_can_inline.Tpo $(DEPDIR)/ir_function_can_inline.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_can_inline.cpp' object='ir_function_can_inline.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_function_can_inline.lo `test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_can_inline.cpp - -ir_function_detect_recursion.lo: $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_function_detect_recursion.lo -MD -MP -MF $(DEPDIR)/ir_function_detect_recursion.Tpo -c -o ir_function_detect_recursion.lo `test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_function_detect_recursion.Tpo $(DEPDIR)/ir_function_detect_recursion.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' object='ir_function_detect_recursion.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_function_detect_recursion.lo `test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp - -ir_function.lo: $(GLSL_SRCDIR)/ir_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_function.lo -MD -MP -MF $(DEPDIR)/ir_function.Tpo -c -o ir_function.lo `test -f '$(GLSL_SRCDIR)/ir_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_function.Tpo $(DEPDIR)/ir_function.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function.cpp' object='ir_function.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_function.lo `test -f '$(GLSL_SRCDIR)/ir_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function.cpp - -ir_hierarchical_visitor.lo: $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_hierarchical_visitor.lo -MD -MP -MF $(DEPDIR)/ir_hierarchical_visitor.Tpo -c -o ir_hierarchical_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_hierarchical_visitor.Tpo $(DEPDIR)/ir_hierarchical_visitor.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' object='ir_hierarchical_visitor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_hierarchical_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp - -ir_hv_accept.lo: $(GLSL_SRCDIR)/ir_hv_accept.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_hv_accept.lo -MD -MP -MF $(DEPDIR)/ir_hv_accept.Tpo -c -o ir_hv_accept.lo `test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hv_accept.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_hv_accept.Tpo $(DEPDIR)/ir_hv_accept.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hv_accept.cpp' object='ir_hv_accept.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_hv_accept.lo `test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hv_accept.cpp - -ir_import_prototypes.lo: $(GLSL_SRCDIR)/ir_import_prototypes.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_import_prototypes.lo -MD -MP -MF $(DEPDIR)/ir_import_prototypes.Tpo -c -o ir_import_prototypes.lo `test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_import_prototypes.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_import_prototypes.Tpo $(DEPDIR)/ir_import_prototypes.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_import_prototypes.cpp' object='ir_import_prototypes.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_import_prototypes.lo `test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_import_prototypes.cpp - -ir_print_visitor.lo: $(GLSL_SRCDIR)/ir_print_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_print_visitor.lo -MD -MP -MF $(DEPDIR)/ir_print_visitor.Tpo -c -o ir_print_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_print_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_print_visitor.Tpo $(DEPDIR)/ir_print_visitor.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_print_visitor.cpp' object='ir_print_visitor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_print_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_print_visitor.cpp - -ir_reader.lo: $(GLSL_SRCDIR)/ir_reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_reader.lo -MD -MP -MF $(DEPDIR)/ir_reader.Tpo -c -o ir_reader.lo `test -f '$(GLSL_SRCDIR)/ir_reader.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_reader.Tpo $(DEPDIR)/ir_reader.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_reader.cpp' object='ir_reader.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_reader.lo `test -f '$(GLSL_SRCDIR)/ir_reader.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_reader.cpp - -ir_rvalue_visitor.lo: $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_rvalue_visitor.lo -MD -MP -MF $(DEPDIR)/ir_rvalue_visitor.Tpo -c -o ir_rvalue_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_rvalue_visitor.Tpo $(DEPDIR)/ir_rvalue_visitor.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' object='ir_rvalue_visitor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_rvalue_visitor.lo `test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp - -ir_set_program_inouts.lo: $(GLSL_SRCDIR)/ir_set_program_inouts.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_set_program_inouts.lo -MD -MP -MF $(DEPDIR)/ir_set_program_inouts.Tpo -c -o ir_set_program_inouts.lo `test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_set_program_inouts.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_set_program_inouts.Tpo $(DEPDIR)/ir_set_program_inouts.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' object='ir_set_program_inouts.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_set_program_inouts.lo `test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_set_program_inouts.cpp - -ir_validate.lo: $(GLSL_SRCDIR)/ir_validate.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_validate.lo -MD -MP -MF $(DEPDIR)/ir_validate.Tpo -c -o ir_validate.lo `test -f '$(GLSL_SRCDIR)/ir_validate.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_validate.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_validate.Tpo $(DEPDIR)/ir_validate.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_validate.cpp' object='ir_validate.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_validate.lo `test -f '$(GLSL_SRCDIR)/ir_validate.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_validate.cpp - -ir_variable_refcount.lo: $(GLSL_SRCDIR)/ir_variable_refcount.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ir_variable_refcount.lo -MD -MP -MF $(DEPDIR)/ir_variable_refcount.Tpo -c -o ir_variable_refcount.lo `test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_variable_refcount.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ir_variable_refcount.Tpo $(DEPDIR)/ir_variable_refcount.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_variable_refcount.cpp' object='ir_variable_refcount.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ir_variable_refcount.lo `test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_variable_refcount.cpp - -linker.lo: $(GLSL_SRCDIR)/linker.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT linker.lo -MD -MP -MF $(DEPDIR)/linker.Tpo -c -o linker.lo `test -f '$(GLSL_SRCDIR)/linker.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/linker.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/linker.Tpo $(DEPDIR)/linker.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/linker.cpp' object='linker.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o linker.lo `test -f '$(GLSL_SRCDIR)/linker.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/linker.cpp - -link_functions.lo: $(GLSL_SRCDIR)/link_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_functions.lo -MD -MP -MF $(DEPDIR)/link_functions.Tpo -c -o link_functions.lo `test -f '$(GLSL_SRCDIR)/link_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_functions.Tpo $(DEPDIR)/link_functions.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_functions.cpp' object='link_functions.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_functions.lo `test -f '$(GLSL_SRCDIR)/link_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_functions.cpp - -link_interface_blocks.lo: $(GLSL_SRCDIR)/link_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_interface_blocks.lo -MD -MP -MF $(DEPDIR)/link_interface_blocks.Tpo -c -o link_interface_blocks.lo `test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_interface_blocks.Tpo $(DEPDIR)/link_interface_blocks.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_interface_blocks.cpp' object='link_interface_blocks.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_interface_blocks.lo `test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_interface_blocks.cpp - -link_uniforms.lo: $(GLSL_SRCDIR)/link_uniforms.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_uniforms.lo -MD -MP -MF $(DEPDIR)/link_uniforms.Tpo -c -o link_uniforms.lo `test -f '$(GLSL_SRCDIR)/link_uniforms.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniforms.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_uniforms.Tpo $(DEPDIR)/link_uniforms.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniforms.cpp' object='link_uniforms.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_uniforms.lo `test -f '$(GLSL_SRCDIR)/link_uniforms.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniforms.cpp - -link_uniform_initializers.lo: $(GLSL_SRCDIR)/link_uniform_initializers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_uniform_initializers.lo -MD -MP -MF $(DEPDIR)/link_uniform_initializers.Tpo -c -o link_uniform_initializers.lo `test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_initializers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_uniform_initializers.Tpo $(DEPDIR)/link_uniform_initializers.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_initializers.cpp' object='link_uniform_initializers.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_uniform_initializers.lo `test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_initializers.cpp - -link_uniform_block_active_visitor.lo: $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_uniform_block_active_visitor.lo -MD -MP -MF $(DEPDIR)/link_uniform_block_active_visitor.Tpo -c -o link_uniform_block_active_visitor.lo `test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_uniform_block_active_visitor.Tpo $(DEPDIR)/link_uniform_block_active_visitor.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' object='link_uniform_block_active_visitor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_uniform_block_active_visitor.lo `test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp - -link_uniform_blocks.lo: $(GLSL_SRCDIR)/link_uniform_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_uniform_blocks.lo -MD -MP -MF $(DEPDIR)/link_uniform_blocks.Tpo -c -o link_uniform_blocks.lo `test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_uniform_blocks.Tpo $(DEPDIR)/link_uniform_blocks.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_blocks.cpp' object='link_uniform_blocks.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_uniform_blocks.lo `test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_blocks.cpp - -link_varyings.lo: $(GLSL_SRCDIR)/link_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT link_varyings.lo -MD -MP -MF $(DEPDIR)/link_varyings.Tpo -c -o link_varyings.lo `test -f '$(GLSL_SRCDIR)/link_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/link_varyings.Tpo $(DEPDIR)/link_varyings.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_varyings.cpp' object='link_varyings.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o link_varyings.lo `test -f '$(GLSL_SRCDIR)/link_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_varyings.cpp - -loop_analysis.lo: $(GLSL_SRCDIR)/loop_analysis.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT loop_analysis.lo -MD -MP -MF $(DEPDIR)/loop_analysis.Tpo -c -o loop_analysis.lo `test -f '$(GLSL_SRCDIR)/loop_analysis.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_analysis.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loop_analysis.Tpo $(DEPDIR)/loop_analysis.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_analysis.cpp' object='loop_analysis.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o loop_analysis.lo `test -f '$(GLSL_SRCDIR)/loop_analysis.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_analysis.cpp - -loop_controls.lo: $(GLSL_SRCDIR)/loop_controls.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT loop_controls.lo -MD -MP -MF $(DEPDIR)/loop_controls.Tpo -c -o loop_controls.lo `test -f '$(GLSL_SRCDIR)/loop_controls.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_controls.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loop_controls.Tpo $(DEPDIR)/loop_controls.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_controls.cpp' object='loop_controls.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o loop_controls.lo `test -f '$(GLSL_SRCDIR)/loop_controls.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_controls.cpp - -loop_unroll.lo: $(GLSL_SRCDIR)/loop_unroll.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT loop_unroll.lo -MD -MP -MF $(DEPDIR)/loop_unroll.Tpo -c -o loop_unroll.lo `test -f '$(GLSL_SRCDIR)/loop_unroll.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_unroll.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loop_unroll.Tpo $(DEPDIR)/loop_unroll.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_unroll.cpp' object='loop_unroll.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o loop_unroll.lo `test -f '$(GLSL_SRCDIR)/loop_unroll.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_unroll.cpp - -lower_clip_distance.lo: $(GLSL_SRCDIR)/lower_clip_distance.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_clip_distance.lo -MD -MP -MF $(DEPDIR)/lower_clip_distance.Tpo -c -o lower_clip_distance.lo `test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_clip_distance.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_clip_distance.Tpo $(DEPDIR)/lower_clip_distance.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_clip_distance.cpp' object='lower_clip_distance.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_clip_distance.lo `test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_clip_distance.cpp - -lower_discard.lo: $(GLSL_SRCDIR)/lower_discard.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_discard.lo -MD -MP -MF $(DEPDIR)/lower_discard.Tpo -c -o lower_discard.lo `test -f '$(GLSL_SRCDIR)/lower_discard.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_discard.Tpo $(DEPDIR)/lower_discard.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard.cpp' object='lower_discard.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_discard.lo `test -f '$(GLSL_SRCDIR)/lower_discard.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard.cpp - -lower_discard_flow.lo: $(GLSL_SRCDIR)/lower_discard_flow.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_discard_flow.lo -MD -MP -MF $(DEPDIR)/lower_discard_flow.Tpo -c -o lower_discard_flow.lo `test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard_flow.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_discard_flow.Tpo $(DEPDIR)/lower_discard_flow.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard_flow.cpp' object='lower_discard_flow.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_discard_flow.lo `test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard_flow.cpp - -lower_if_to_cond_assign.lo: $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_if_to_cond_assign.lo -MD -MP -MF $(DEPDIR)/lower_if_to_cond_assign.Tpo -c -o lower_if_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_if_to_cond_assign.Tpo $(DEPDIR)/lower_if_to_cond_assign.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' object='lower_if_to_cond_assign.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_if_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp - -lower_instructions.lo: $(GLSL_SRCDIR)/lower_instructions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_instructions.lo -MD -MP -MF $(DEPDIR)/lower_instructions.Tpo -c -o lower_instructions.lo `test -f '$(GLSL_SRCDIR)/lower_instructions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_instructions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_instructions.Tpo $(DEPDIR)/lower_instructions.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_instructions.cpp' object='lower_instructions.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_instructions.lo `test -f '$(GLSL_SRCDIR)/lower_instructions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_instructions.cpp - -lower_jumps.lo: $(GLSL_SRCDIR)/lower_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_jumps.lo -MD -MP -MF $(DEPDIR)/lower_jumps.Tpo -c -o lower_jumps.lo `test -f '$(GLSL_SRCDIR)/lower_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_jumps.Tpo $(DEPDIR)/lower_jumps.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_jumps.cpp' object='lower_jumps.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_jumps.lo `test -f '$(GLSL_SRCDIR)/lower_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_jumps.cpp - -lower_mat_op_to_vec.lo: $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_mat_op_to_vec.lo -MD -MP -MF $(DEPDIR)/lower_mat_op_to_vec.Tpo -c -o lower_mat_op_to_vec.lo `test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_mat_op_to_vec.Tpo $(DEPDIR)/lower_mat_op_to_vec.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' object='lower_mat_op_to_vec.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_mat_op_to_vec.lo `test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp - -lower_noise.lo: $(GLSL_SRCDIR)/lower_noise.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_noise.lo -MD -MP -MF $(DEPDIR)/lower_noise.Tpo -c -o lower_noise.lo `test -f '$(GLSL_SRCDIR)/lower_noise.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_noise.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_noise.Tpo $(DEPDIR)/lower_noise.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_noise.cpp' object='lower_noise.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_noise.lo `test -f '$(GLSL_SRCDIR)/lower_noise.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_noise.cpp - -lower_packed_varyings.lo: $(GLSL_SRCDIR)/lower_packed_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_packed_varyings.lo -MD -MP -MF $(DEPDIR)/lower_packed_varyings.Tpo -c -o lower_packed_varyings.lo `test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packed_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_packed_varyings.Tpo $(DEPDIR)/lower_packed_varyings.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packed_varyings.cpp' object='lower_packed_varyings.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_packed_varyings.lo `test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packed_varyings.cpp - -lower_named_interface_blocks.lo: $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_named_interface_blocks.lo -MD -MP -MF $(DEPDIR)/lower_named_interface_blocks.Tpo -c -o lower_named_interface_blocks.lo `test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_named_interface_blocks.Tpo $(DEPDIR)/lower_named_interface_blocks.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' object='lower_named_interface_blocks.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_named_interface_blocks.lo `test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp - -lower_packing_builtins.lo: $(GLSL_SRCDIR)/lower_packing_builtins.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_packing_builtins.lo -MD -MP -MF $(DEPDIR)/lower_packing_builtins.Tpo -c -o lower_packing_builtins.lo `test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packing_builtins.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_packing_builtins.Tpo $(DEPDIR)/lower_packing_builtins.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packing_builtins.cpp' object='lower_packing_builtins.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_packing_builtins.lo `test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packing_builtins.cpp - -lower_texture_projection.lo: $(GLSL_SRCDIR)/lower_texture_projection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_texture_projection.lo -MD -MP -MF $(DEPDIR)/lower_texture_projection.Tpo -c -o lower_texture_projection.lo `test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_texture_projection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_texture_projection.Tpo $(DEPDIR)/lower_texture_projection.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_texture_projection.cpp' object='lower_texture_projection.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_texture_projection.lo `test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_texture_projection.cpp - -lower_variable_index_to_cond_assign.lo: $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_variable_index_to_cond_assign.lo -MD -MP -MF $(DEPDIR)/lower_variable_index_to_cond_assign.Tpo -c -o lower_variable_index_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_variable_index_to_cond_assign.Tpo $(DEPDIR)/lower_variable_index_to_cond_assign.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' object='lower_variable_index_to_cond_assign.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_variable_index_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp - -lower_vec_index_to_cond_assign.lo: $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_vec_index_to_cond_assign.lo -MD -MP -MF $(DEPDIR)/lower_vec_index_to_cond_assign.Tpo -c -o lower_vec_index_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_vec_index_to_cond_assign.Tpo $(DEPDIR)/lower_vec_index_to_cond_assign.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' object='lower_vec_index_to_cond_assign.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_vec_index_to_cond_assign.lo `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp - -lower_vec_index_to_swizzle.lo: $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_vec_index_to_swizzle.lo -MD -MP -MF $(DEPDIR)/lower_vec_index_to_swizzle.Tpo -c -o lower_vec_index_to_swizzle.lo `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_vec_index_to_swizzle.Tpo $(DEPDIR)/lower_vec_index_to_swizzle.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' object='lower_vec_index_to_swizzle.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_vec_index_to_swizzle.lo `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp - -lower_vector.lo: $(GLSL_SRCDIR)/lower_vector.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_vector.lo -MD -MP -MF $(DEPDIR)/lower_vector.Tpo -c -o lower_vector.lo `test -f '$(GLSL_SRCDIR)/lower_vector.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_vector.Tpo $(DEPDIR)/lower_vector.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector.cpp' object='lower_vector.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_vector.lo `test -f '$(GLSL_SRCDIR)/lower_vector.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector.cpp - -lower_vector_insert.lo: $(GLSL_SRCDIR)/lower_vector_insert.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_vector_insert.lo -MD -MP -MF $(DEPDIR)/lower_vector_insert.Tpo -c -o lower_vector_insert.lo `test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector_insert.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_vector_insert.Tpo $(DEPDIR)/lower_vector_insert.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector_insert.cpp' object='lower_vector_insert.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_vector_insert.lo `test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector_insert.cpp - -lower_output_reads.lo: $(GLSL_SRCDIR)/lower_output_reads.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_output_reads.lo -MD -MP -MF $(DEPDIR)/lower_output_reads.Tpo -c -o lower_output_reads.lo `test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_output_reads.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_output_reads.Tpo $(DEPDIR)/lower_output_reads.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_output_reads.cpp' object='lower_output_reads.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_output_reads.lo `test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_output_reads.cpp - -lower_ubo_reference.lo: $(GLSL_SRCDIR)/lower_ubo_reference.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lower_ubo_reference.lo -MD -MP -MF $(DEPDIR)/lower_ubo_reference.Tpo -c -o lower_ubo_reference.lo `test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_ubo_reference.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lower_ubo_reference.Tpo $(DEPDIR)/lower_ubo_reference.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_ubo_reference.cpp' object='lower_ubo_reference.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lower_ubo_reference.lo `test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_ubo_reference.cpp - -opt_algebraic.lo: $(GLSL_SRCDIR)/opt_algebraic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_algebraic.lo -MD -MP -MF $(DEPDIR)/opt_algebraic.Tpo -c -o opt_algebraic.lo `test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_algebraic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_algebraic.Tpo $(DEPDIR)/opt_algebraic.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_algebraic.cpp' object='opt_algebraic.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_algebraic.lo `test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_algebraic.cpp - -opt_array_splitting.lo: $(GLSL_SRCDIR)/opt_array_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_array_splitting.lo -MD -MP -MF $(DEPDIR)/opt_array_splitting.Tpo -c -o opt_array_splitting.lo `test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_array_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_array_splitting.Tpo $(DEPDIR)/opt_array_splitting.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_array_splitting.cpp' object='opt_array_splitting.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_array_splitting.lo `test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_array_splitting.cpp - -opt_constant_folding.lo: $(GLSL_SRCDIR)/opt_constant_folding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_constant_folding.lo -MD -MP -MF $(DEPDIR)/opt_constant_folding.Tpo -c -o opt_constant_folding.lo `test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_folding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_constant_folding.Tpo $(DEPDIR)/opt_constant_folding.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_folding.cpp' object='opt_constant_folding.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_constant_folding.lo `test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_folding.cpp - -opt_constant_propagation.lo: $(GLSL_SRCDIR)/opt_constant_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_constant_propagation.lo -MD -MP -MF $(DEPDIR)/opt_constant_propagation.Tpo -c -o opt_constant_propagation.lo `test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_constant_propagation.Tpo $(DEPDIR)/opt_constant_propagation.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_propagation.cpp' object='opt_constant_propagation.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_constant_propagation.lo `test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_propagation.cpp - -opt_constant_variable.lo: $(GLSL_SRCDIR)/opt_constant_variable.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_constant_variable.lo -MD -MP -MF $(DEPDIR)/opt_constant_variable.Tpo -c -o opt_constant_variable.lo `test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_variable.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_constant_variable.Tpo $(DEPDIR)/opt_constant_variable.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_variable.cpp' object='opt_constant_variable.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_constant_variable.lo `test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_variable.cpp - -opt_copy_propagation.lo: $(GLSL_SRCDIR)/opt_copy_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_copy_propagation.lo -MD -MP -MF $(DEPDIR)/opt_copy_propagation.Tpo -c -o opt_copy_propagation.lo `test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_copy_propagation.Tpo $(DEPDIR)/opt_copy_propagation.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation.cpp' object='opt_copy_propagation.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_copy_propagation.lo `test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation.cpp - -opt_copy_propagation_elements.lo: $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_copy_propagation_elements.lo -MD -MP -MF $(DEPDIR)/opt_copy_propagation_elements.Tpo -c -o opt_copy_propagation_elements.lo `test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_copy_propagation_elements.Tpo $(DEPDIR)/opt_copy_propagation_elements.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' object='opt_copy_propagation_elements.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_copy_propagation_elements.lo `test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp - -opt_dead_builtin_varyings.lo: $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_dead_builtin_varyings.lo -MD -MP -MF $(DEPDIR)/opt_dead_builtin_varyings.Tpo -c -o opt_dead_builtin_varyings.lo `test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_dead_builtin_varyings.Tpo $(DEPDIR)/opt_dead_builtin_varyings.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' object='opt_dead_builtin_varyings.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_dead_builtin_varyings.lo `test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp - -opt_dead_code.lo: $(GLSL_SRCDIR)/opt_dead_code.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_dead_code.lo -MD -MP -MF $(DEPDIR)/opt_dead_code.Tpo -c -o opt_dead_code.lo `test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_dead_code.Tpo $(DEPDIR)/opt_dead_code.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code.cpp' object='opt_dead_code.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_dead_code.lo `test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code.cpp - -opt_dead_code_local.lo: $(GLSL_SRCDIR)/opt_dead_code_local.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_dead_code_local.lo -MD -MP -MF $(DEPDIR)/opt_dead_code_local.Tpo -c -o opt_dead_code_local.lo `test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code_local.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_dead_code_local.Tpo $(DEPDIR)/opt_dead_code_local.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code_local.cpp' object='opt_dead_code_local.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_dead_code_local.lo `test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code_local.cpp - -opt_dead_functions.lo: $(GLSL_SRCDIR)/opt_dead_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_dead_functions.lo -MD -MP -MF $(DEPDIR)/opt_dead_functions.Tpo -c -o opt_dead_functions.lo `test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_dead_functions.Tpo $(DEPDIR)/opt_dead_functions.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_functions.cpp' object='opt_dead_functions.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_dead_functions.lo `test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_functions.cpp - -opt_flatten_nested_if_blocks.lo: $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_flatten_nested_if_blocks.lo -MD -MP -MF $(DEPDIR)/opt_flatten_nested_if_blocks.Tpo -c -o opt_flatten_nested_if_blocks.lo `test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_flatten_nested_if_blocks.Tpo $(DEPDIR)/opt_flatten_nested_if_blocks.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' object='opt_flatten_nested_if_blocks.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_flatten_nested_if_blocks.lo `test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp - -opt_flip_matrices.lo: $(GLSL_SRCDIR)/opt_flip_matrices.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_flip_matrices.lo -MD -MP -MF $(DEPDIR)/opt_flip_matrices.Tpo -c -o opt_flip_matrices.lo `test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flip_matrices.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_flip_matrices.Tpo $(DEPDIR)/opt_flip_matrices.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flip_matrices.cpp' object='opt_flip_matrices.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_flip_matrices.lo `test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flip_matrices.cpp - -opt_function_inlining.lo: $(GLSL_SRCDIR)/opt_function_inlining.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_function_inlining.lo -MD -MP -MF $(DEPDIR)/opt_function_inlining.Tpo -c -o opt_function_inlining.lo `test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_function_inlining.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_function_inlining.Tpo $(DEPDIR)/opt_function_inlining.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_function_inlining.cpp' object='opt_function_inlining.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_function_inlining.lo `test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_function_inlining.cpp - -opt_if_simplification.lo: $(GLSL_SRCDIR)/opt_if_simplification.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_if_simplification.lo -MD -MP -MF $(DEPDIR)/opt_if_simplification.Tpo -c -o opt_if_simplification.lo `test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_if_simplification.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_if_simplification.Tpo $(DEPDIR)/opt_if_simplification.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_if_simplification.cpp' object='opt_if_simplification.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_if_simplification.lo `test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_if_simplification.cpp - -opt_noop_swizzle.lo: $(GLSL_SRCDIR)/opt_noop_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_noop_swizzle.lo -MD -MP -MF $(DEPDIR)/opt_noop_swizzle.Tpo -c -o opt_noop_swizzle.lo `test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_noop_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_noop_swizzle.Tpo $(DEPDIR)/opt_noop_swizzle.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' object='opt_noop_swizzle.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_noop_swizzle.lo `test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_noop_swizzle.cpp - -opt_redundant_jumps.lo: $(GLSL_SRCDIR)/opt_redundant_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_redundant_jumps.lo -MD -MP -MF $(DEPDIR)/opt_redundant_jumps.Tpo -c -o opt_redundant_jumps.lo `test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_redundant_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_redundant_jumps.Tpo $(DEPDIR)/opt_redundant_jumps.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' object='opt_redundant_jumps.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_redundant_jumps.lo `test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_redundant_jumps.cpp - -opt_structure_splitting.lo: $(GLSL_SRCDIR)/opt_structure_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_structure_splitting.lo -MD -MP -MF $(DEPDIR)/opt_structure_splitting.Tpo -c -o opt_structure_splitting.lo `test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_structure_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_structure_splitting.Tpo $(DEPDIR)/opt_structure_splitting.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_structure_splitting.cpp' object='opt_structure_splitting.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_structure_splitting.lo `test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_structure_splitting.cpp - -opt_swizzle_swizzle.lo: $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_swizzle_swizzle.lo -MD -MP -MF $(DEPDIR)/opt_swizzle_swizzle.Tpo -c -o opt_swizzle_swizzle.lo `test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_swizzle_swizzle.Tpo $(DEPDIR)/opt_swizzle_swizzle.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' object='opt_swizzle_swizzle.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_swizzle_swizzle.lo `test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp - -opt_tree_grafting.lo: $(GLSL_SRCDIR)/opt_tree_grafting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opt_tree_grafting.lo -MD -MP -MF $(DEPDIR)/opt_tree_grafting.Tpo -c -o opt_tree_grafting.lo `test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_tree_grafting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opt_tree_grafting.Tpo $(DEPDIR)/opt_tree_grafting.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_tree_grafting.cpp' object='opt_tree_grafting.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opt_tree_grafting.lo `test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_tree_grafting.cpp - -s_expression.lo: $(GLSL_SRCDIR)/s_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT s_expression.lo -MD -MP -MF $(DEPDIR)/s_expression.Tpo -c -o s_expression.lo `test -f '$(GLSL_SRCDIR)/s_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/s_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/s_expression.Tpo $(DEPDIR)/s_expression.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/s_expression.cpp' object='s_expression.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o s_expression.lo `test -f '$(GLSL_SRCDIR)/s_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/s_expression.cpp - -builtin_compiler-builtin_stubs.o: $(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_stubs.o -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_stubs.Tpo -c -o builtin_compiler-builtin_stubs.o `test -f '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_stubs.Tpo $(DEPDIR)/builtin_compiler-builtin_stubs.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp' object='builtin_compiler-builtin_stubs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_stubs.o `test -f '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp - -builtin_compiler-builtin_stubs.obj: $(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_stubs.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_stubs.Tpo -c -o builtin_compiler-builtin_stubs.obj `if test -f '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_stubs.Tpo $(DEPDIR)/builtin_compiler-builtin_stubs.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp' object='builtin_compiler-builtin_stubs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_stubs.obj `if test -f '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_compiler/builtin_stubs.cpp'; fi` - -builtin_compiler-standalone_scaffolding.o: $(GLSL_SRCDIR)/standalone_scaffolding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-standalone_scaffolding.o -MD -MP -MF $(DEPDIR)/builtin_compiler-standalone_scaffolding.Tpo -c -o builtin_compiler-standalone_scaffolding.o `test -f '$(GLSL_SRCDIR)/standalone_scaffolding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/standalone_scaffolding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-standalone_scaffolding.Tpo $(DEPDIR)/builtin_compiler-standalone_scaffolding.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/standalone_scaffolding.cpp' object='builtin_compiler-standalone_scaffolding.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-standalone_scaffolding.o `test -f '$(GLSL_SRCDIR)/standalone_scaffolding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/standalone_scaffolding.cpp - -builtin_compiler-standalone_scaffolding.obj: $(GLSL_SRCDIR)/standalone_scaffolding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-standalone_scaffolding.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-standalone_scaffolding.Tpo -c -o builtin_compiler-standalone_scaffolding.obj `if test -f '$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-standalone_scaffolding.Tpo $(DEPDIR)/builtin_compiler-standalone_scaffolding.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/standalone_scaffolding.cpp' object='builtin_compiler-standalone_scaffolding.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-standalone_scaffolding.obj `if test -f '$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/standalone_scaffolding.cpp'; fi` - -builtin_compiler-main.o: $(GLSL_SRCDIR)/main.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-main.o -MD -MP -MF $(DEPDIR)/builtin_compiler-main.Tpo -c -o builtin_compiler-main.o `test -f '$(GLSL_SRCDIR)/main.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/main.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-main.Tpo $(DEPDIR)/builtin_compiler-main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/main.cpp' object='builtin_compiler-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-main.o `test -f '$(GLSL_SRCDIR)/main.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/main.cpp - -builtin_compiler-main.obj: $(GLSL_SRCDIR)/main.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-main.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-main.Tpo -c -o builtin_compiler-main.obj `if test -f '$(GLSL_SRCDIR)/main.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/main.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/main.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-main.Tpo $(DEPDIR)/builtin_compiler-main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/main.cpp' object='builtin_compiler-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-main.obj `if test -f '$(GLSL_SRCDIR)/main.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/main.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/main.cpp'; fi` - -builtin_compiler-glsl_lexer.o: $(GLSL_BUILDDIR)/glsl_lexer.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_lexer.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_lexer.Tpo -c -o builtin_compiler-glsl_lexer.o `test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_lexer.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_lexer.Tpo $(DEPDIR)/builtin_compiler-glsl_lexer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_lexer.cpp' object='builtin_compiler-glsl_lexer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_lexer.o `test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_lexer.cpp - -builtin_compiler-glsl_lexer.obj: $(GLSL_BUILDDIR)/glsl_lexer.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_lexer.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_lexer.Tpo -c -o builtin_compiler-glsl_lexer.obj `if test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glsl_lexer.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glsl_lexer.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_lexer.Tpo $(DEPDIR)/builtin_compiler-glsl_lexer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_lexer.cpp' object='builtin_compiler-glsl_lexer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_lexer.obj `if test -f '$(GLSL_BUILDDIR)/glsl_lexer.cpp'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glsl_lexer.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glsl_lexer.cpp'; fi` - -builtin_compiler-glsl_parser.o: $(GLSL_BUILDDIR)/glsl_parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_parser.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_parser.Tpo -c -o builtin_compiler-glsl_parser.o `test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_parser.Tpo $(DEPDIR)/builtin_compiler-glsl_parser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_parser.cpp' object='builtin_compiler-glsl_parser.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_parser.o `test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp' || echo '$(srcdir)/'`$(GLSL_BUILDDIR)/glsl_parser.cpp - -builtin_compiler-glsl_parser.obj: $(GLSL_BUILDDIR)/glsl_parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_parser.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_parser.Tpo -c -o builtin_compiler-glsl_parser.obj `if test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glsl_parser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glsl_parser.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_parser.Tpo $(DEPDIR)/builtin_compiler-glsl_parser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_BUILDDIR)/glsl_parser.cpp' object='builtin_compiler-glsl_parser.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_parser.obj `if test -f '$(GLSL_BUILDDIR)/glsl_parser.cpp'; then $(CYGPATH_W) '$(GLSL_BUILDDIR)/glsl_parser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_BUILDDIR)/glsl_parser.cpp'; fi` - -builtin_compiler-ast_array_index.o: $(GLSL_SRCDIR)/ast_array_index.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_array_index.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_array_index.Tpo -c -o builtin_compiler-ast_array_index.o `test -f '$(GLSL_SRCDIR)/ast_array_index.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_array_index.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_array_index.Tpo $(DEPDIR)/builtin_compiler-ast_array_index.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_array_index.cpp' object='builtin_compiler-ast_array_index.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_array_index.o `test -f '$(GLSL_SRCDIR)/ast_array_index.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_array_index.cpp - -builtin_compiler-ast_array_index.obj: $(GLSL_SRCDIR)/ast_array_index.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_array_index.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_array_index.Tpo -c -o builtin_compiler-ast_array_index.obj `if test -f '$(GLSL_SRCDIR)/ast_array_index.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_array_index.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_array_index.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_array_index.Tpo $(DEPDIR)/builtin_compiler-ast_array_index.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_array_index.cpp' object='builtin_compiler-ast_array_index.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_array_index.obj `if test -f '$(GLSL_SRCDIR)/ast_array_index.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_array_index.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_array_index.cpp'; fi` - -builtin_compiler-ast_expr.o: $(GLSL_SRCDIR)/ast_expr.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_expr.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_expr.Tpo -c -o builtin_compiler-ast_expr.o `test -f '$(GLSL_SRCDIR)/ast_expr.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_expr.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_expr.Tpo $(DEPDIR)/builtin_compiler-ast_expr.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_expr.cpp' object='builtin_compiler-ast_expr.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_expr.o `test -f '$(GLSL_SRCDIR)/ast_expr.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_expr.cpp - -builtin_compiler-ast_expr.obj: $(GLSL_SRCDIR)/ast_expr.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_expr.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_expr.Tpo -c -o builtin_compiler-ast_expr.obj `if test -f '$(GLSL_SRCDIR)/ast_expr.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_expr.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_expr.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_expr.Tpo $(DEPDIR)/builtin_compiler-ast_expr.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_expr.cpp' object='builtin_compiler-ast_expr.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_expr.obj `if test -f '$(GLSL_SRCDIR)/ast_expr.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_expr.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_expr.cpp'; fi` - -builtin_compiler-ast_function.o: $(GLSL_SRCDIR)/ast_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_function.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_function.Tpo -c -o builtin_compiler-ast_function.o `test -f '$(GLSL_SRCDIR)/ast_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_function.Tpo $(DEPDIR)/builtin_compiler-ast_function.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_function.cpp' object='builtin_compiler-ast_function.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_function.o `test -f '$(GLSL_SRCDIR)/ast_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_function.cpp - -builtin_compiler-ast_function.obj: $(GLSL_SRCDIR)/ast_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_function.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_function.Tpo -c -o builtin_compiler-ast_function.obj `if test -f '$(GLSL_SRCDIR)/ast_function.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_function.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_function.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_function.Tpo $(DEPDIR)/builtin_compiler-ast_function.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_function.cpp' object='builtin_compiler-ast_function.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_function.obj `if test -f '$(GLSL_SRCDIR)/ast_function.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_function.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_function.cpp'; fi` - -builtin_compiler-ast_to_hir.o: $(GLSL_SRCDIR)/ast_to_hir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_to_hir.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_to_hir.Tpo -c -o builtin_compiler-ast_to_hir.o `test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_to_hir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_to_hir.Tpo $(DEPDIR)/builtin_compiler-ast_to_hir.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_to_hir.cpp' object='builtin_compiler-ast_to_hir.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_to_hir.o `test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_to_hir.cpp - -builtin_compiler-ast_to_hir.obj: $(GLSL_SRCDIR)/ast_to_hir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_to_hir.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_to_hir.Tpo -c -o builtin_compiler-ast_to_hir.obj `if test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_to_hir.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_to_hir.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_to_hir.Tpo $(DEPDIR)/builtin_compiler-ast_to_hir.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_to_hir.cpp' object='builtin_compiler-ast_to_hir.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_to_hir.obj `if test -f '$(GLSL_SRCDIR)/ast_to_hir.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_to_hir.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_to_hir.cpp'; fi` - -builtin_compiler-ast_type.o: $(GLSL_SRCDIR)/ast_type.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_type.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_type.Tpo -c -o builtin_compiler-ast_type.o `test -f '$(GLSL_SRCDIR)/ast_type.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_type.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_type.Tpo $(DEPDIR)/builtin_compiler-ast_type.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_type.cpp' object='builtin_compiler-ast_type.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_type.o `test -f '$(GLSL_SRCDIR)/ast_type.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ast_type.cpp - -builtin_compiler-ast_type.obj: $(GLSL_SRCDIR)/ast_type.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ast_type.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ast_type.Tpo -c -o builtin_compiler-ast_type.obj `if test -f '$(GLSL_SRCDIR)/ast_type.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_type.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_type.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ast_type.Tpo $(DEPDIR)/builtin_compiler-ast_type.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ast_type.cpp' object='builtin_compiler-ast_type.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ast_type.obj `if test -f '$(GLSL_SRCDIR)/ast_type.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ast_type.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ast_type.cpp'; fi` - -builtin_compiler-builtin_types.o: $(GLSL_SRCDIR)/builtin_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_types.o -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_types.Tpo -c -o builtin_compiler-builtin_types.o `test -f '$(GLSL_SRCDIR)/builtin_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_types.Tpo $(DEPDIR)/builtin_compiler-builtin_types.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_types.cpp' object='builtin_compiler-builtin_types.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_types.o `test -f '$(GLSL_SRCDIR)/builtin_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_types.cpp - -builtin_compiler-builtin_types.obj: $(GLSL_SRCDIR)/builtin_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_types.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_types.Tpo -c -o builtin_compiler-builtin_types.obj `if test -f '$(GLSL_SRCDIR)/builtin_types.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_types.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_types.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_types.Tpo $(DEPDIR)/builtin_compiler-builtin_types.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_types.cpp' object='builtin_compiler-builtin_types.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_types.obj `if test -f '$(GLSL_SRCDIR)/builtin_types.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_types.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_types.cpp'; fi` - -builtin_compiler-builtin_variables.o: $(GLSL_SRCDIR)/builtin_variables.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_variables.o -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_variables.Tpo -c -o builtin_compiler-builtin_variables.o `test -f '$(GLSL_SRCDIR)/builtin_variables.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_variables.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_variables.Tpo $(DEPDIR)/builtin_compiler-builtin_variables.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_variables.cpp' object='builtin_compiler-builtin_variables.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_variables.o `test -f '$(GLSL_SRCDIR)/builtin_variables.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/builtin_variables.cpp - -builtin_compiler-builtin_variables.obj: $(GLSL_SRCDIR)/builtin_variables.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-builtin_variables.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-builtin_variables.Tpo -c -o builtin_compiler-builtin_variables.obj `if test -f '$(GLSL_SRCDIR)/builtin_variables.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_variables.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_variables.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-builtin_variables.Tpo $(DEPDIR)/builtin_compiler-builtin_variables.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/builtin_variables.cpp' object='builtin_compiler-builtin_variables.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-builtin_variables.obj `if test -f '$(GLSL_SRCDIR)/builtin_variables.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/builtin_variables.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/builtin_variables.cpp'; fi` - -builtin_compiler-glsl_parser_extras.o: $(GLSL_SRCDIR)/glsl_parser_extras.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_parser_extras.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_parser_extras.Tpo -c -o builtin_compiler-glsl_parser_extras.o `test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_parser_extras.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_parser_extras.Tpo $(DEPDIR)/builtin_compiler-glsl_parser_extras.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_parser_extras.cpp' object='builtin_compiler-glsl_parser_extras.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_parser_extras.o `test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_parser_extras.cpp - -builtin_compiler-glsl_parser_extras.obj: $(GLSL_SRCDIR)/glsl_parser_extras.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_parser_extras.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_parser_extras.Tpo -c -o builtin_compiler-glsl_parser_extras.obj `if test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_parser_extras.Tpo $(DEPDIR)/builtin_compiler-glsl_parser_extras.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_parser_extras.cpp' object='builtin_compiler-glsl_parser_extras.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_parser_extras.obj `if test -f '$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_parser_extras.cpp'; fi` - -builtin_compiler-glsl_types.o: $(GLSL_SRCDIR)/glsl_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_types.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_types.Tpo -c -o builtin_compiler-glsl_types.o `test -f '$(GLSL_SRCDIR)/glsl_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_types.Tpo $(DEPDIR)/builtin_compiler-glsl_types.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_types.cpp' object='builtin_compiler-glsl_types.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_types.o `test -f '$(GLSL_SRCDIR)/glsl_types.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_types.cpp - -builtin_compiler-glsl_types.obj: $(GLSL_SRCDIR)/glsl_types.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_types.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_types.Tpo -c -o builtin_compiler-glsl_types.obj `if test -f '$(GLSL_SRCDIR)/glsl_types.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_types.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_types.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_types.Tpo $(DEPDIR)/builtin_compiler-glsl_types.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_types.cpp' object='builtin_compiler-glsl_types.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_types.obj `if test -f '$(GLSL_SRCDIR)/glsl_types.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_types.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_types.cpp'; fi` - -builtin_compiler-glsl_symbol_table.o: $(GLSL_SRCDIR)/glsl_symbol_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_symbol_table.o -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_symbol_table.Tpo -c -o builtin_compiler-glsl_symbol_table.o `test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_symbol_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_symbol_table.Tpo $(DEPDIR)/builtin_compiler-glsl_symbol_table.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_symbol_table.cpp' object='builtin_compiler-glsl_symbol_table.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_symbol_table.o `test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/glsl_symbol_table.cpp - -builtin_compiler-glsl_symbol_table.obj: $(GLSL_SRCDIR)/glsl_symbol_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-glsl_symbol_table.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-glsl_symbol_table.Tpo -c -o builtin_compiler-glsl_symbol_table.obj `if test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-glsl_symbol_table.Tpo $(DEPDIR)/builtin_compiler-glsl_symbol_table.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/glsl_symbol_table.cpp' object='builtin_compiler-glsl_symbol_table.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-glsl_symbol_table.obj `if test -f '$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/glsl_symbol_table.cpp'; fi` - -builtin_compiler-hir_field_selection.o: $(GLSL_SRCDIR)/hir_field_selection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-hir_field_selection.o -MD -MP -MF $(DEPDIR)/builtin_compiler-hir_field_selection.Tpo -c -o builtin_compiler-hir_field_selection.o `test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/hir_field_selection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-hir_field_selection.Tpo $(DEPDIR)/builtin_compiler-hir_field_selection.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/hir_field_selection.cpp' object='builtin_compiler-hir_field_selection.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-hir_field_selection.o `test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/hir_field_selection.cpp - -builtin_compiler-hir_field_selection.obj: $(GLSL_SRCDIR)/hir_field_selection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-hir_field_selection.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-hir_field_selection.Tpo -c -o builtin_compiler-hir_field_selection.obj `if test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/hir_field_selection.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/hir_field_selection.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-hir_field_selection.Tpo $(DEPDIR)/builtin_compiler-hir_field_selection.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/hir_field_selection.cpp' object='builtin_compiler-hir_field_selection.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-hir_field_selection.obj `if test -f '$(GLSL_SRCDIR)/hir_field_selection.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/hir_field_selection.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/hir_field_selection.cpp'; fi` - -builtin_compiler-ir_basic_block.o: $(GLSL_SRCDIR)/ir_basic_block.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_basic_block.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_basic_block.Tpo -c -o builtin_compiler-ir_basic_block.o `test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_basic_block.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_basic_block.Tpo $(DEPDIR)/builtin_compiler-ir_basic_block.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_basic_block.cpp' object='builtin_compiler-ir_basic_block.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_basic_block.o `test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_basic_block.cpp - -builtin_compiler-ir_basic_block.obj: $(GLSL_SRCDIR)/ir_basic_block.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_basic_block.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_basic_block.Tpo -c -o builtin_compiler-ir_basic_block.obj `if test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_basic_block.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_basic_block.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_basic_block.Tpo $(DEPDIR)/builtin_compiler-ir_basic_block.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_basic_block.cpp' object='builtin_compiler-ir_basic_block.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_basic_block.obj `if test -f '$(GLSL_SRCDIR)/ir_basic_block.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_basic_block.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_basic_block.cpp'; fi` - -builtin_compiler-ir_builder.o: $(GLSL_SRCDIR)/ir_builder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_builder.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_builder.Tpo -c -o builtin_compiler-ir_builder.o `test -f '$(GLSL_SRCDIR)/ir_builder.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_builder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_builder.Tpo $(DEPDIR)/builtin_compiler-ir_builder.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_builder.cpp' object='builtin_compiler-ir_builder.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_builder.o `test -f '$(GLSL_SRCDIR)/ir_builder.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_builder.cpp - -builtin_compiler-ir_builder.obj: $(GLSL_SRCDIR)/ir_builder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_builder.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_builder.Tpo -c -o builtin_compiler-ir_builder.obj `if test -f '$(GLSL_SRCDIR)/ir_builder.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_builder.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_builder.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_builder.Tpo $(DEPDIR)/builtin_compiler-ir_builder.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_builder.cpp' object='builtin_compiler-ir_builder.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_builder.obj `if test -f '$(GLSL_SRCDIR)/ir_builder.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_builder.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_builder.cpp'; fi` - -builtin_compiler-ir_clone.o: $(GLSL_SRCDIR)/ir_clone.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_clone.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_clone.Tpo -c -o builtin_compiler-ir_clone.o `test -f '$(GLSL_SRCDIR)/ir_clone.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_clone.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_clone.Tpo $(DEPDIR)/builtin_compiler-ir_clone.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_clone.cpp' object='builtin_compiler-ir_clone.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_clone.o `test -f '$(GLSL_SRCDIR)/ir_clone.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_clone.cpp - -builtin_compiler-ir_clone.obj: $(GLSL_SRCDIR)/ir_clone.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_clone.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_clone.Tpo -c -o builtin_compiler-ir_clone.obj `if test -f '$(GLSL_SRCDIR)/ir_clone.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_clone.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_clone.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_clone.Tpo $(DEPDIR)/builtin_compiler-ir_clone.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_clone.cpp' object='builtin_compiler-ir_clone.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_clone.obj `if test -f '$(GLSL_SRCDIR)/ir_clone.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_clone.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_clone.cpp'; fi` - -builtin_compiler-ir_constant_expression.o: $(GLSL_SRCDIR)/ir_constant_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_constant_expression.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_constant_expression.Tpo -c -o builtin_compiler-ir_constant_expression.o `test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_constant_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_constant_expression.Tpo $(DEPDIR)/builtin_compiler-ir_constant_expression.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_constant_expression.cpp' object='builtin_compiler-ir_constant_expression.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_constant_expression.o `test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_constant_expression.cpp - -builtin_compiler-ir_constant_expression.obj: $(GLSL_SRCDIR)/ir_constant_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_constant_expression.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_constant_expression.Tpo -c -o builtin_compiler-ir_constant_expression.obj `if test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_constant_expression.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_constant_expression.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_constant_expression.Tpo $(DEPDIR)/builtin_compiler-ir_constant_expression.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_constant_expression.cpp' object='builtin_compiler-ir_constant_expression.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_constant_expression.obj `if test -f '$(GLSL_SRCDIR)/ir_constant_expression.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_constant_expression.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_constant_expression.cpp'; fi` - -builtin_compiler-ir.o: $(GLSL_SRCDIR)/ir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir.Tpo -c -o builtin_compiler-ir.o `test -f '$(GLSL_SRCDIR)/ir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir.Tpo $(DEPDIR)/builtin_compiler-ir.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir.cpp' object='builtin_compiler-ir.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir.o `test -f '$(GLSL_SRCDIR)/ir.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir.cpp - -builtin_compiler-ir.obj: $(GLSL_SRCDIR)/ir.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir.Tpo -c -o builtin_compiler-ir.obj `if test -f '$(GLSL_SRCDIR)/ir.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir.Tpo $(DEPDIR)/builtin_compiler-ir.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir.cpp' object='builtin_compiler-ir.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir.obj `if test -f '$(GLSL_SRCDIR)/ir.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir.cpp'; fi` - -builtin_compiler-ir_expression_flattening.o: $(GLSL_SRCDIR)/ir_expression_flattening.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_expression_flattening.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_expression_flattening.Tpo -c -o builtin_compiler-ir_expression_flattening.o `test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_expression_flattening.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_expression_flattening.Tpo $(DEPDIR)/builtin_compiler-ir_expression_flattening.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_expression_flattening.cpp' object='builtin_compiler-ir_expression_flattening.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_expression_flattening.o `test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_expression_flattening.cpp - -builtin_compiler-ir_expression_flattening.obj: $(GLSL_SRCDIR)/ir_expression_flattening.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_expression_flattening.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_expression_flattening.Tpo -c -o builtin_compiler-ir_expression_flattening.obj `if test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_expression_flattening.Tpo $(DEPDIR)/builtin_compiler-ir_expression_flattening.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_expression_flattening.cpp' object='builtin_compiler-ir_expression_flattening.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_expression_flattening.obj `if test -f '$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_expression_flattening.cpp'; fi` - -builtin_compiler-ir_function_can_inline.o: $(GLSL_SRCDIR)/ir_function_can_inline.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function_can_inline.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function_can_inline.Tpo -c -o builtin_compiler-ir_function_can_inline.o `test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_can_inline.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function_can_inline.Tpo $(DEPDIR)/builtin_compiler-ir_function_can_inline.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_can_inline.cpp' object='builtin_compiler-ir_function_can_inline.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function_can_inline.o `test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_can_inline.cpp - -builtin_compiler-ir_function_can_inline.obj: $(GLSL_SRCDIR)/ir_function_can_inline.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function_can_inline.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function_can_inline.Tpo -c -o builtin_compiler-ir_function_can_inline.obj `if test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function_can_inline.Tpo $(DEPDIR)/builtin_compiler-ir_function_can_inline.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_can_inline.cpp' object='builtin_compiler-ir_function_can_inline.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function_can_inline.obj `if test -f '$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function_can_inline.cpp'; fi` - -builtin_compiler-ir_function_detect_recursion.o: $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function_detect_recursion.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Tpo -c -o builtin_compiler-ir_function_detect_recursion.o `test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Tpo $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' object='builtin_compiler-ir_function_detect_recursion.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function_detect_recursion.o `test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp - -builtin_compiler-ir_function_detect_recursion.obj: $(GLSL_SRCDIR)/ir_function_detect_recursion.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function_detect_recursion.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Tpo -c -o builtin_compiler-ir_function_detect_recursion.obj `if test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Tpo $(DEPDIR)/builtin_compiler-ir_function_detect_recursion.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp' object='builtin_compiler-ir_function_detect_recursion.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function_detect_recursion.obj `if test -f '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp'; fi` - -builtin_compiler-ir_function.o: $(GLSL_SRCDIR)/ir_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function.Tpo -c -o builtin_compiler-ir_function.o `test -f '$(GLSL_SRCDIR)/ir_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function.Tpo $(DEPDIR)/builtin_compiler-ir_function.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function.cpp' object='builtin_compiler-ir_function.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function.o `test -f '$(GLSL_SRCDIR)/ir_function.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_function.cpp - -builtin_compiler-ir_function.obj: $(GLSL_SRCDIR)/ir_function.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_function.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_function.Tpo -c -o builtin_compiler-ir_function.obj `if test -f '$(GLSL_SRCDIR)/ir_function.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_function.Tpo $(DEPDIR)/builtin_compiler-ir_function.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_function.cpp' object='builtin_compiler-ir_function.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_function.obj `if test -f '$(GLSL_SRCDIR)/ir_function.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_function.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_function.cpp'; fi` - -builtin_compiler-ir_hierarchical_visitor.o: $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_hierarchical_visitor.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Tpo -c -o builtin_compiler-ir_hierarchical_visitor.o `test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' object='builtin_compiler-ir_hierarchical_visitor.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_hierarchical_visitor.o `test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp - -builtin_compiler-ir_hierarchical_visitor.obj: $(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_hierarchical_visitor.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Tpo -c -o builtin_compiler-ir_hierarchical_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_hierarchical_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp' object='builtin_compiler-ir_hierarchical_visitor.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_hierarchical_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_hierarchical_visitor.cpp'; fi` - -builtin_compiler-ir_hv_accept.o: $(GLSL_SRCDIR)/ir_hv_accept.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_hv_accept.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_hv_accept.Tpo -c -o builtin_compiler-ir_hv_accept.o `test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hv_accept.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_hv_accept.Tpo $(DEPDIR)/builtin_compiler-ir_hv_accept.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hv_accept.cpp' object='builtin_compiler-ir_hv_accept.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_hv_accept.o `test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_hv_accept.cpp - -builtin_compiler-ir_hv_accept.obj: $(GLSL_SRCDIR)/ir_hv_accept.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_hv_accept.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_hv_accept.Tpo -c -o builtin_compiler-ir_hv_accept.obj `if test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_hv_accept.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_hv_accept.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_hv_accept.Tpo $(DEPDIR)/builtin_compiler-ir_hv_accept.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_hv_accept.cpp' object='builtin_compiler-ir_hv_accept.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_hv_accept.obj `if test -f '$(GLSL_SRCDIR)/ir_hv_accept.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_hv_accept.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_hv_accept.cpp'; fi` - -builtin_compiler-ir_import_prototypes.o: $(GLSL_SRCDIR)/ir_import_prototypes.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_import_prototypes.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_import_prototypes.Tpo -c -o builtin_compiler-ir_import_prototypes.o `test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_import_prototypes.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_import_prototypes.Tpo $(DEPDIR)/builtin_compiler-ir_import_prototypes.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_import_prototypes.cpp' object='builtin_compiler-ir_import_prototypes.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_import_prototypes.o `test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_import_prototypes.cpp - -builtin_compiler-ir_import_prototypes.obj: $(GLSL_SRCDIR)/ir_import_prototypes.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_import_prototypes.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_import_prototypes.Tpo -c -o builtin_compiler-ir_import_prototypes.obj `if test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_import_prototypes.Tpo $(DEPDIR)/builtin_compiler-ir_import_prototypes.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_import_prototypes.cpp' object='builtin_compiler-ir_import_prototypes.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_import_prototypes.obj `if test -f '$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_import_prototypes.cpp'; fi` - -builtin_compiler-ir_print_visitor.o: $(GLSL_SRCDIR)/ir_print_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_print_visitor.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_print_visitor.Tpo -c -o builtin_compiler-ir_print_visitor.o `test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_print_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_print_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_print_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_print_visitor.cpp' object='builtin_compiler-ir_print_visitor.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_print_visitor.o `test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_print_visitor.cpp - -builtin_compiler-ir_print_visitor.obj: $(GLSL_SRCDIR)/ir_print_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_print_visitor.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_print_visitor.Tpo -c -o builtin_compiler-ir_print_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_print_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_print_visitor.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_print_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_print_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_print_visitor.cpp' object='builtin_compiler-ir_print_visitor.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_print_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_print_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_print_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_print_visitor.cpp'; fi` - -builtin_compiler-ir_reader.o: $(GLSL_SRCDIR)/ir_reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_reader.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_reader.Tpo -c -o builtin_compiler-ir_reader.o `test -f '$(GLSL_SRCDIR)/ir_reader.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_reader.Tpo $(DEPDIR)/builtin_compiler-ir_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_reader.cpp' object='builtin_compiler-ir_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_reader.o `test -f '$(GLSL_SRCDIR)/ir_reader.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_reader.cpp - -builtin_compiler-ir_reader.obj: $(GLSL_SRCDIR)/ir_reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_reader.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_reader.Tpo -c -o builtin_compiler-ir_reader.obj `if test -f '$(GLSL_SRCDIR)/ir_reader.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_reader.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_reader.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_reader.Tpo $(DEPDIR)/builtin_compiler-ir_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_reader.cpp' object='builtin_compiler-ir_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_reader.obj `if test -f '$(GLSL_SRCDIR)/ir_reader.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_reader.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_reader.cpp'; fi` - -builtin_compiler-ir_rvalue_visitor.o: $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_rvalue_visitor.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Tpo -c -o builtin_compiler-ir_rvalue_visitor.o `test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' object='builtin_compiler-ir_rvalue_visitor.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_rvalue_visitor.o `test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp - -builtin_compiler-ir_rvalue_visitor.obj: $(GLSL_SRCDIR)/ir_rvalue_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_rvalue_visitor.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Tpo -c -o builtin_compiler-ir_rvalue_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Tpo $(DEPDIR)/builtin_compiler-ir_rvalue_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp' object='builtin_compiler-ir_rvalue_visitor.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_rvalue_visitor.obj `if test -f '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_rvalue_visitor.cpp'; fi` - -builtin_compiler-ir_set_program_inouts.o: $(GLSL_SRCDIR)/ir_set_program_inouts.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_set_program_inouts.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Tpo -c -o builtin_compiler-ir_set_program_inouts.o `test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_set_program_inouts.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Tpo $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' object='builtin_compiler-ir_set_program_inouts.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_set_program_inouts.o `test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_set_program_inouts.cpp - -builtin_compiler-ir_set_program_inouts.obj: $(GLSL_SRCDIR)/ir_set_program_inouts.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_set_program_inouts.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Tpo -c -o builtin_compiler-ir_set_program_inouts.obj `if test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Tpo $(DEPDIR)/builtin_compiler-ir_set_program_inouts.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_set_program_inouts.cpp' object='builtin_compiler-ir_set_program_inouts.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_set_program_inouts.obj `if test -f '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_set_program_inouts.cpp'; fi` - -builtin_compiler-ir_validate.o: $(GLSL_SRCDIR)/ir_validate.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_validate.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_validate.Tpo -c -o builtin_compiler-ir_validate.o `test -f '$(GLSL_SRCDIR)/ir_validate.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_validate.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_validate.Tpo $(DEPDIR)/builtin_compiler-ir_validate.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_validate.cpp' object='builtin_compiler-ir_validate.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_validate.o `test -f '$(GLSL_SRCDIR)/ir_validate.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_validate.cpp - -builtin_compiler-ir_validate.obj: $(GLSL_SRCDIR)/ir_validate.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_validate.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_validate.Tpo -c -o builtin_compiler-ir_validate.obj `if test -f '$(GLSL_SRCDIR)/ir_validate.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_validate.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_validate.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_validate.Tpo $(DEPDIR)/builtin_compiler-ir_validate.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_validate.cpp' object='builtin_compiler-ir_validate.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_validate.obj `if test -f '$(GLSL_SRCDIR)/ir_validate.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_validate.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_validate.cpp'; fi` - -builtin_compiler-ir_variable_refcount.o: $(GLSL_SRCDIR)/ir_variable_refcount.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_variable_refcount.o -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_variable_refcount.Tpo -c -o builtin_compiler-ir_variable_refcount.o `test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_variable_refcount.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_variable_refcount.Tpo $(DEPDIR)/builtin_compiler-ir_variable_refcount.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_variable_refcount.cpp' object='builtin_compiler-ir_variable_refcount.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_variable_refcount.o `test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/ir_variable_refcount.cpp - -builtin_compiler-ir_variable_refcount.obj: $(GLSL_SRCDIR)/ir_variable_refcount.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-ir_variable_refcount.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-ir_variable_refcount.Tpo -c -o builtin_compiler-ir_variable_refcount.obj `if test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-ir_variable_refcount.Tpo $(DEPDIR)/builtin_compiler-ir_variable_refcount.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/ir_variable_refcount.cpp' object='builtin_compiler-ir_variable_refcount.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-ir_variable_refcount.obj `if test -f '$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/ir_variable_refcount.cpp'; fi` - -builtin_compiler-linker.o: $(GLSL_SRCDIR)/linker.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-linker.o -MD -MP -MF $(DEPDIR)/builtin_compiler-linker.Tpo -c -o builtin_compiler-linker.o `test -f '$(GLSL_SRCDIR)/linker.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/linker.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-linker.Tpo $(DEPDIR)/builtin_compiler-linker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/linker.cpp' object='builtin_compiler-linker.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-linker.o `test -f '$(GLSL_SRCDIR)/linker.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/linker.cpp - -builtin_compiler-linker.obj: $(GLSL_SRCDIR)/linker.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-linker.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-linker.Tpo -c -o builtin_compiler-linker.obj `if test -f '$(GLSL_SRCDIR)/linker.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/linker.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/linker.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-linker.Tpo $(DEPDIR)/builtin_compiler-linker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/linker.cpp' object='builtin_compiler-linker.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-linker.obj `if test -f '$(GLSL_SRCDIR)/linker.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/linker.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/linker.cpp'; fi` - -builtin_compiler-link_functions.o: $(GLSL_SRCDIR)/link_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_functions.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_functions.Tpo -c -o builtin_compiler-link_functions.o `test -f '$(GLSL_SRCDIR)/link_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_functions.Tpo $(DEPDIR)/builtin_compiler-link_functions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_functions.cpp' object='builtin_compiler-link_functions.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_functions.o `test -f '$(GLSL_SRCDIR)/link_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_functions.cpp - -builtin_compiler-link_functions.obj: $(GLSL_SRCDIR)/link_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_functions.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_functions.Tpo -c -o builtin_compiler-link_functions.obj `if test -f '$(GLSL_SRCDIR)/link_functions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_functions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_functions.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_functions.Tpo $(DEPDIR)/builtin_compiler-link_functions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_functions.cpp' object='builtin_compiler-link_functions.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_functions.obj `if test -f '$(GLSL_SRCDIR)/link_functions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_functions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_functions.cpp'; fi` - -builtin_compiler-link_interface_blocks.o: $(GLSL_SRCDIR)/link_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_interface_blocks.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_interface_blocks.Tpo -c -o builtin_compiler-link_interface_blocks.o `test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_interface_blocks.Tpo $(DEPDIR)/builtin_compiler-link_interface_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_interface_blocks.cpp' object='builtin_compiler-link_interface_blocks.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_interface_blocks.o `test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_interface_blocks.cpp - -builtin_compiler-link_interface_blocks.obj: $(GLSL_SRCDIR)/link_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_interface_blocks.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_interface_blocks.Tpo -c -o builtin_compiler-link_interface_blocks.obj `if test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_interface_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_interface_blocks.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_interface_blocks.Tpo $(DEPDIR)/builtin_compiler-link_interface_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_interface_blocks.cpp' object='builtin_compiler-link_interface_blocks.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_interface_blocks.obj `if test -f '$(GLSL_SRCDIR)/link_interface_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_interface_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_interface_blocks.cpp'; fi` - -builtin_compiler-link_uniforms.o: $(GLSL_SRCDIR)/link_uniforms.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniforms.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniforms.Tpo -c -o builtin_compiler-link_uniforms.o `test -f '$(GLSL_SRCDIR)/link_uniforms.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniforms.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniforms.Tpo $(DEPDIR)/builtin_compiler-link_uniforms.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniforms.cpp' object='builtin_compiler-link_uniforms.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniforms.o `test -f '$(GLSL_SRCDIR)/link_uniforms.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniforms.cpp - -builtin_compiler-link_uniforms.obj: $(GLSL_SRCDIR)/link_uniforms.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniforms.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniforms.Tpo -c -o builtin_compiler-link_uniforms.obj `if test -f '$(GLSL_SRCDIR)/link_uniforms.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniforms.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniforms.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniforms.Tpo $(DEPDIR)/builtin_compiler-link_uniforms.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniforms.cpp' object='builtin_compiler-link_uniforms.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniforms.obj `if test -f '$(GLSL_SRCDIR)/link_uniforms.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniforms.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniforms.cpp'; fi` - -builtin_compiler-link_uniform_initializers.o: $(GLSL_SRCDIR)/link_uniform_initializers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_initializers.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_initializers.Tpo -c -o builtin_compiler-link_uniform_initializers.o `test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_initializers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_initializers.Tpo $(DEPDIR)/builtin_compiler-link_uniform_initializers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_initializers.cpp' object='builtin_compiler-link_uniform_initializers.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_initializers.o `test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_initializers.cpp - -builtin_compiler-link_uniform_initializers.obj: $(GLSL_SRCDIR)/link_uniform_initializers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_initializers.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_initializers.Tpo -c -o builtin_compiler-link_uniform_initializers.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_initializers.Tpo $(DEPDIR)/builtin_compiler-link_uniform_initializers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_initializers.cpp' object='builtin_compiler-link_uniform_initializers.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_initializers.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_initializers.cpp'; fi` - -builtin_compiler-link_uniform_block_active_visitor.o: $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_block_active_visitor.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Tpo -c -o builtin_compiler-link_uniform_block_active_visitor.o `test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Tpo $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' object='builtin_compiler-link_uniform_block_active_visitor.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_block_active_visitor.o `test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp - -builtin_compiler-link_uniform_block_active_visitor.obj: $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_block_active_visitor.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Tpo -c -o builtin_compiler-link_uniform_block_active_visitor.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Tpo $(DEPDIR)/builtin_compiler-link_uniform_block_active_visitor.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp' object='builtin_compiler-link_uniform_block_active_visitor.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_block_active_visitor.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp'; fi` - -builtin_compiler-link_uniform_blocks.o: $(GLSL_SRCDIR)/link_uniform_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_blocks.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_blocks.Tpo -c -o builtin_compiler-link_uniform_blocks.o `test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_blocks.Tpo $(DEPDIR)/builtin_compiler-link_uniform_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_blocks.cpp' object='builtin_compiler-link_uniform_blocks.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_blocks.o `test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_uniform_blocks.cpp - -builtin_compiler-link_uniform_blocks.obj: $(GLSL_SRCDIR)/link_uniform_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_uniform_blocks.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_uniform_blocks.Tpo -c -o builtin_compiler-link_uniform_blocks.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_uniform_blocks.Tpo $(DEPDIR)/builtin_compiler-link_uniform_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_uniform_blocks.cpp' object='builtin_compiler-link_uniform_blocks.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_uniform_blocks.obj `if test -f '$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_uniform_blocks.cpp'; fi` - -builtin_compiler-link_varyings.o: $(GLSL_SRCDIR)/link_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_varyings.o -MD -MP -MF $(DEPDIR)/builtin_compiler-link_varyings.Tpo -c -o builtin_compiler-link_varyings.o `test -f '$(GLSL_SRCDIR)/link_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_varyings.Tpo $(DEPDIR)/builtin_compiler-link_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_varyings.cpp' object='builtin_compiler-link_varyings.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_varyings.o `test -f '$(GLSL_SRCDIR)/link_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/link_varyings.cpp - -builtin_compiler-link_varyings.obj: $(GLSL_SRCDIR)/link_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-link_varyings.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-link_varyings.Tpo -c -o builtin_compiler-link_varyings.obj `if test -f '$(GLSL_SRCDIR)/link_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_varyings.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-link_varyings.Tpo $(DEPDIR)/builtin_compiler-link_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/link_varyings.cpp' object='builtin_compiler-link_varyings.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-link_varyings.obj `if test -f '$(GLSL_SRCDIR)/link_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/link_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/link_varyings.cpp'; fi` - -builtin_compiler-loop_analysis.o: $(GLSL_SRCDIR)/loop_analysis.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_analysis.o -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_analysis.Tpo -c -o builtin_compiler-loop_analysis.o `test -f '$(GLSL_SRCDIR)/loop_analysis.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_analysis.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_analysis.Tpo $(DEPDIR)/builtin_compiler-loop_analysis.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_analysis.cpp' object='builtin_compiler-loop_analysis.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_analysis.o `test -f '$(GLSL_SRCDIR)/loop_analysis.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_analysis.cpp - -builtin_compiler-loop_analysis.obj: $(GLSL_SRCDIR)/loop_analysis.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_analysis.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_analysis.Tpo -c -o builtin_compiler-loop_analysis.obj `if test -f '$(GLSL_SRCDIR)/loop_analysis.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_analysis.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_analysis.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_analysis.Tpo $(DEPDIR)/builtin_compiler-loop_analysis.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_analysis.cpp' object='builtin_compiler-loop_analysis.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_analysis.obj `if test -f '$(GLSL_SRCDIR)/loop_analysis.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_analysis.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_analysis.cpp'; fi` - -builtin_compiler-loop_controls.o: $(GLSL_SRCDIR)/loop_controls.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_controls.o -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_controls.Tpo -c -o builtin_compiler-loop_controls.o `test -f '$(GLSL_SRCDIR)/loop_controls.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_controls.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_controls.Tpo $(DEPDIR)/builtin_compiler-loop_controls.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_controls.cpp' object='builtin_compiler-loop_controls.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_controls.o `test -f '$(GLSL_SRCDIR)/loop_controls.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_controls.cpp - -builtin_compiler-loop_controls.obj: $(GLSL_SRCDIR)/loop_controls.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_controls.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_controls.Tpo -c -o builtin_compiler-loop_controls.obj `if test -f '$(GLSL_SRCDIR)/loop_controls.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_controls.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_controls.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_controls.Tpo $(DEPDIR)/builtin_compiler-loop_controls.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_controls.cpp' object='builtin_compiler-loop_controls.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_controls.obj `if test -f '$(GLSL_SRCDIR)/loop_controls.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_controls.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_controls.cpp'; fi` - -builtin_compiler-loop_unroll.o: $(GLSL_SRCDIR)/loop_unroll.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_unroll.o -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_unroll.Tpo -c -o builtin_compiler-loop_unroll.o `test -f '$(GLSL_SRCDIR)/loop_unroll.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_unroll.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_unroll.Tpo $(DEPDIR)/builtin_compiler-loop_unroll.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_unroll.cpp' object='builtin_compiler-loop_unroll.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_unroll.o `test -f '$(GLSL_SRCDIR)/loop_unroll.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/loop_unroll.cpp - -builtin_compiler-loop_unroll.obj: $(GLSL_SRCDIR)/loop_unroll.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-loop_unroll.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-loop_unroll.Tpo -c -o builtin_compiler-loop_unroll.obj `if test -f '$(GLSL_SRCDIR)/loop_unroll.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_unroll.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_unroll.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-loop_unroll.Tpo $(DEPDIR)/builtin_compiler-loop_unroll.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/loop_unroll.cpp' object='builtin_compiler-loop_unroll.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-loop_unroll.obj `if test -f '$(GLSL_SRCDIR)/loop_unroll.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/loop_unroll.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/loop_unroll.cpp'; fi` - -builtin_compiler-lower_clip_distance.o: $(GLSL_SRCDIR)/lower_clip_distance.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_clip_distance.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_clip_distance.Tpo -c -o builtin_compiler-lower_clip_distance.o `test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_clip_distance.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_clip_distance.Tpo $(DEPDIR)/builtin_compiler-lower_clip_distance.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_clip_distance.cpp' object='builtin_compiler-lower_clip_distance.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_clip_distance.o `test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_clip_distance.cpp - -builtin_compiler-lower_clip_distance.obj: $(GLSL_SRCDIR)/lower_clip_distance.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_clip_distance.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_clip_distance.Tpo -c -o builtin_compiler-lower_clip_distance.obj `if test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_clip_distance.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_clip_distance.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_clip_distance.Tpo $(DEPDIR)/builtin_compiler-lower_clip_distance.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_clip_distance.cpp' object='builtin_compiler-lower_clip_distance.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_clip_distance.obj `if test -f '$(GLSL_SRCDIR)/lower_clip_distance.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_clip_distance.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_clip_distance.cpp'; fi` - -builtin_compiler-lower_discard.o: $(GLSL_SRCDIR)/lower_discard.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_discard.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_discard.Tpo -c -o builtin_compiler-lower_discard.o `test -f '$(GLSL_SRCDIR)/lower_discard.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_discard.Tpo $(DEPDIR)/builtin_compiler-lower_discard.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard.cpp' object='builtin_compiler-lower_discard.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_discard.o `test -f '$(GLSL_SRCDIR)/lower_discard.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard.cpp - -builtin_compiler-lower_discard.obj: $(GLSL_SRCDIR)/lower_discard.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_discard.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_discard.Tpo -c -o builtin_compiler-lower_discard.obj `if test -f '$(GLSL_SRCDIR)/lower_discard.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_discard.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_discard.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_discard.Tpo $(DEPDIR)/builtin_compiler-lower_discard.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard.cpp' object='builtin_compiler-lower_discard.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_discard.obj `if test -f '$(GLSL_SRCDIR)/lower_discard.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_discard.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_discard.cpp'; fi` - -builtin_compiler-lower_discard_flow.o: $(GLSL_SRCDIR)/lower_discard_flow.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_discard_flow.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_discard_flow.Tpo -c -o builtin_compiler-lower_discard_flow.o `test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard_flow.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_discard_flow.Tpo $(DEPDIR)/builtin_compiler-lower_discard_flow.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard_flow.cpp' object='builtin_compiler-lower_discard_flow.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_discard_flow.o `test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_discard_flow.cpp - -builtin_compiler-lower_discard_flow.obj: $(GLSL_SRCDIR)/lower_discard_flow.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_discard_flow.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_discard_flow.Tpo -c -o builtin_compiler-lower_discard_flow.obj `if test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_discard_flow.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_discard_flow.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_discard_flow.Tpo $(DEPDIR)/builtin_compiler-lower_discard_flow.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_discard_flow.cpp' object='builtin_compiler-lower_discard_flow.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_discard_flow.obj `if test -f '$(GLSL_SRCDIR)/lower_discard_flow.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_discard_flow.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_discard_flow.cpp'; fi` - -builtin_compiler-lower_if_to_cond_assign.o: $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_if_to_cond_assign.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Tpo -c -o builtin_compiler-lower_if_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' object='builtin_compiler-lower_if_to_cond_assign.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_if_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp - -builtin_compiler-lower_if_to_cond_assign.obj: $(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_if_to_cond_assign.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Tpo -c -o builtin_compiler-lower_if_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_if_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp' object='builtin_compiler-lower_if_to_cond_assign.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_if_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_if_to_cond_assign.cpp'; fi` - -builtin_compiler-lower_instructions.o: $(GLSL_SRCDIR)/lower_instructions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_instructions.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_instructions.Tpo -c -o builtin_compiler-lower_instructions.o `test -f '$(GLSL_SRCDIR)/lower_instructions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_instructions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_instructions.Tpo $(DEPDIR)/builtin_compiler-lower_instructions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_instructions.cpp' object='builtin_compiler-lower_instructions.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_instructions.o `test -f '$(GLSL_SRCDIR)/lower_instructions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_instructions.cpp - -builtin_compiler-lower_instructions.obj: $(GLSL_SRCDIR)/lower_instructions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_instructions.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_instructions.Tpo -c -o builtin_compiler-lower_instructions.obj `if test -f '$(GLSL_SRCDIR)/lower_instructions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_instructions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_instructions.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_instructions.Tpo $(DEPDIR)/builtin_compiler-lower_instructions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_instructions.cpp' object='builtin_compiler-lower_instructions.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_instructions.obj `if test -f '$(GLSL_SRCDIR)/lower_instructions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_instructions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_instructions.cpp'; fi` - -builtin_compiler-lower_jumps.o: $(GLSL_SRCDIR)/lower_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_jumps.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_jumps.Tpo -c -o builtin_compiler-lower_jumps.o `test -f '$(GLSL_SRCDIR)/lower_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_jumps.Tpo $(DEPDIR)/builtin_compiler-lower_jumps.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_jumps.cpp' object='builtin_compiler-lower_jumps.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_jumps.o `test -f '$(GLSL_SRCDIR)/lower_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_jumps.cpp - -builtin_compiler-lower_jumps.obj: $(GLSL_SRCDIR)/lower_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_jumps.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_jumps.Tpo -c -o builtin_compiler-lower_jumps.obj `if test -f '$(GLSL_SRCDIR)/lower_jumps.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_jumps.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_jumps.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_jumps.Tpo $(DEPDIR)/builtin_compiler-lower_jumps.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_jumps.cpp' object='builtin_compiler-lower_jumps.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_jumps.obj `if test -f '$(GLSL_SRCDIR)/lower_jumps.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_jumps.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_jumps.cpp'; fi` - -builtin_compiler-lower_mat_op_to_vec.o: $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_mat_op_to_vec.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Tpo -c -o builtin_compiler-lower_mat_op_to_vec.o `test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Tpo $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' object='builtin_compiler-lower_mat_op_to_vec.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_mat_op_to_vec.o `test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp - -builtin_compiler-lower_mat_op_to_vec.obj: $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_mat_op_to_vec.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Tpo -c -o builtin_compiler-lower_mat_op_to_vec.obj `if test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Tpo $(DEPDIR)/builtin_compiler-lower_mat_op_to_vec.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp' object='builtin_compiler-lower_mat_op_to_vec.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_mat_op_to_vec.obj `if test -f '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp'; fi` - -builtin_compiler-lower_noise.o: $(GLSL_SRCDIR)/lower_noise.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_noise.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_noise.Tpo -c -o builtin_compiler-lower_noise.o `test -f '$(GLSL_SRCDIR)/lower_noise.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_noise.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_noise.Tpo $(DEPDIR)/builtin_compiler-lower_noise.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_noise.cpp' object='builtin_compiler-lower_noise.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_noise.o `test -f '$(GLSL_SRCDIR)/lower_noise.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_noise.cpp - -builtin_compiler-lower_noise.obj: $(GLSL_SRCDIR)/lower_noise.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_noise.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_noise.Tpo -c -o builtin_compiler-lower_noise.obj `if test -f '$(GLSL_SRCDIR)/lower_noise.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_noise.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_noise.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_noise.Tpo $(DEPDIR)/builtin_compiler-lower_noise.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_noise.cpp' object='builtin_compiler-lower_noise.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_noise.obj `if test -f '$(GLSL_SRCDIR)/lower_noise.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_noise.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_noise.cpp'; fi` - -builtin_compiler-lower_packed_varyings.o: $(GLSL_SRCDIR)/lower_packed_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_packed_varyings.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_packed_varyings.Tpo -c -o builtin_compiler-lower_packed_varyings.o `test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packed_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_packed_varyings.Tpo $(DEPDIR)/builtin_compiler-lower_packed_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packed_varyings.cpp' object='builtin_compiler-lower_packed_varyings.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_packed_varyings.o `test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packed_varyings.cpp - -builtin_compiler-lower_packed_varyings.obj: $(GLSL_SRCDIR)/lower_packed_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_packed_varyings.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_packed_varyings.Tpo -c -o builtin_compiler-lower_packed_varyings.obj `if test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_packed_varyings.Tpo $(DEPDIR)/builtin_compiler-lower_packed_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packed_varyings.cpp' object='builtin_compiler-lower_packed_varyings.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_packed_varyings.obj `if test -f '$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_packed_varyings.cpp'; fi` - -builtin_compiler-lower_named_interface_blocks.o: $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_named_interface_blocks.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Tpo -c -o builtin_compiler-lower_named_interface_blocks.o `test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Tpo $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' object='builtin_compiler-lower_named_interface_blocks.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_named_interface_blocks.o `test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp - -builtin_compiler-lower_named_interface_blocks.obj: $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_named_interface_blocks.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Tpo -c -o builtin_compiler-lower_named_interface_blocks.obj `if test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Tpo $(DEPDIR)/builtin_compiler-lower_named_interface_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp' object='builtin_compiler-lower_named_interface_blocks.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_named_interface_blocks.obj `if test -f '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp'; fi` - -builtin_compiler-lower_packing_builtins.o: $(GLSL_SRCDIR)/lower_packing_builtins.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_packing_builtins.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_packing_builtins.Tpo -c -o builtin_compiler-lower_packing_builtins.o `test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packing_builtins.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_packing_builtins.Tpo $(DEPDIR)/builtin_compiler-lower_packing_builtins.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packing_builtins.cpp' object='builtin_compiler-lower_packing_builtins.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_packing_builtins.o `test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_packing_builtins.cpp - -builtin_compiler-lower_packing_builtins.obj: $(GLSL_SRCDIR)/lower_packing_builtins.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_packing_builtins.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_packing_builtins.Tpo -c -o builtin_compiler-lower_packing_builtins.obj `if test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_packing_builtins.Tpo $(DEPDIR)/builtin_compiler-lower_packing_builtins.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_packing_builtins.cpp' object='builtin_compiler-lower_packing_builtins.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_packing_builtins.obj `if test -f '$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_packing_builtins.cpp'; fi` - -builtin_compiler-lower_texture_projection.o: $(GLSL_SRCDIR)/lower_texture_projection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_texture_projection.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_texture_projection.Tpo -c -o builtin_compiler-lower_texture_projection.o `test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_texture_projection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_texture_projection.Tpo $(DEPDIR)/builtin_compiler-lower_texture_projection.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_texture_projection.cpp' object='builtin_compiler-lower_texture_projection.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_texture_projection.o `test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_texture_projection.cpp - -builtin_compiler-lower_texture_projection.obj: $(GLSL_SRCDIR)/lower_texture_projection.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_texture_projection.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_texture_projection.Tpo -c -o builtin_compiler-lower_texture_projection.obj `if test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_texture_projection.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_texture_projection.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_texture_projection.Tpo $(DEPDIR)/builtin_compiler-lower_texture_projection.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_texture_projection.cpp' object='builtin_compiler-lower_texture_projection.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_texture_projection.obj `if test -f '$(GLSL_SRCDIR)/lower_texture_projection.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_texture_projection.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_texture_projection.cpp'; fi` - -builtin_compiler-lower_variable_index_to_cond_assign.o: $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_variable_index_to_cond_assign.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Tpo -c -o builtin_compiler-lower_variable_index_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' object='builtin_compiler-lower_variable_index_to_cond_assign.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_variable_index_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp - -builtin_compiler-lower_variable_index_to_cond_assign.obj: $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_variable_index_to_cond_assign.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Tpo -c -o builtin_compiler-lower_variable_index_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_variable_index_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp' object='builtin_compiler-lower_variable_index_to_cond_assign.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_variable_index_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp'; fi` - -builtin_compiler-lower_vec_index_to_cond_assign.o: $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vec_index_to_cond_assign.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Tpo -c -o builtin_compiler-lower_vec_index_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' object='builtin_compiler-lower_vec_index_to_cond_assign.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vec_index_to_cond_assign.o `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp - -builtin_compiler-lower_vec_index_to_cond_assign.obj: $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vec_index_to_cond_assign.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Tpo -c -o builtin_compiler-lower_vec_index_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Tpo $(DEPDIR)/builtin_compiler-lower_vec_index_to_cond_assign.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp' object='builtin_compiler-lower_vec_index_to_cond_assign.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vec_index_to_cond_assign.obj `if test -f '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp'; fi` - -builtin_compiler-lower_vec_index_to_swizzle.o: $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vec_index_to_swizzle.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Tpo -c -o builtin_compiler-lower_vec_index_to_swizzle.o `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Tpo $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' object='builtin_compiler-lower_vec_index_to_swizzle.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vec_index_to_swizzle.o `test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp - -builtin_compiler-lower_vec_index_to_swizzle.obj: $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vec_index_to_swizzle.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Tpo -c -o builtin_compiler-lower_vec_index_to_swizzle.obj `if test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Tpo $(DEPDIR)/builtin_compiler-lower_vec_index_to_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp' object='builtin_compiler-lower_vec_index_to_swizzle.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vec_index_to_swizzle.obj `if test -f '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp'; fi` - -builtin_compiler-lower_vector.o: $(GLSL_SRCDIR)/lower_vector.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vector.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vector.Tpo -c -o builtin_compiler-lower_vector.o `test -f '$(GLSL_SRCDIR)/lower_vector.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vector.Tpo $(DEPDIR)/builtin_compiler-lower_vector.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector.cpp' object='builtin_compiler-lower_vector.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vector.o `test -f '$(GLSL_SRCDIR)/lower_vector.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector.cpp - -builtin_compiler-lower_vector.obj: $(GLSL_SRCDIR)/lower_vector.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vector.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vector.Tpo -c -o builtin_compiler-lower_vector.obj `if test -f '$(GLSL_SRCDIR)/lower_vector.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vector.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vector.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vector.Tpo $(DEPDIR)/builtin_compiler-lower_vector.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector.cpp' object='builtin_compiler-lower_vector.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vector.obj `if test -f '$(GLSL_SRCDIR)/lower_vector.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vector.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vector.cpp'; fi` - -builtin_compiler-lower_vector_insert.o: $(GLSL_SRCDIR)/lower_vector_insert.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vector_insert.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vector_insert.Tpo -c -o builtin_compiler-lower_vector_insert.o `test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector_insert.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vector_insert.Tpo $(DEPDIR)/builtin_compiler-lower_vector_insert.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector_insert.cpp' object='builtin_compiler-lower_vector_insert.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vector_insert.o `test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_vector_insert.cpp - -builtin_compiler-lower_vector_insert.obj: $(GLSL_SRCDIR)/lower_vector_insert.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_vector_insert.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_vector_insert.Tpo -c -o builtin_compiler-lower_vector_insert.obj `if test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vector_insert.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vector_insert.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_vector_insert.Tpo $(DEPDIR)/builtin_compiler-lower_vector_insert.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_vector_insert.cpp' object='builtin_compiler-lower_vector_insert.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_vector_insert.obj `if test -f '$(GLSL_SRCDIR)/lower_vector_insert.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_vector_insert.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_vector_insert.cpp'; fi` - -builtin_compiler-lower_output_reads.o: $(GLSL_SRCDIR)/lower_output_reads.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_output_reads.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_output_reads.Tpo -c -o builtin_compiler-lower_output_reads.o `test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_output_reads.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_output_reads.Tpo $(DEPDIR)/builtin_compiler-lower_output_reads.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_output_reads.cpp' object='builtin_compiler-lower_output_reads.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_output_reads.o `test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_output_reads.cpp - -builtin_compiler-lower_output_reads.obj: $(GLSL_SRCDIR)/lower_output_reads.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_output_reads.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_output_reads.Tpo -c -o builtin_compiler-lower_output_reads.obj `if test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_output_reads.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_output_reads.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_output_reads.Tpo $(DEPDIR)/builtin_compiler-lower_output_reads.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_output_reads.cpp' object='builtin_compiler-lower_output_reads.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_output_reads.obj `if test -f '$(GLSL_SRCDIR)/lower_output_reads.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_output_reads.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_output_reads.cpp'; fi` - -builtin_compiler-lower_ubo_reference.o: $(GLSL_SRCDIR)/lower_ubo_reference.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_ubo_reference.o -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_ubo_reference.Tpo -c -o builtin_compiler-lower_ubo_reference.o `test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_ubo_reference.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_ubo_reference.Tpo $(DEPDIR)/builtin_compiler-lower_ubo_reference.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_ubo_reference.cpp' object='builtin_compiler-lower_ubo_reference.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_ubo_reference.o `test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/lower_ubo_reference.cpp - -builtin_compiler-lower_ubo_reference.obj: $(GLSL_SRCDIR)/lower_ubo_reference.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-lower_ubo_reference.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-lower_ubo_reference.Tpo -c -o builtin_compiler-lower_ubo_reference.obj `if test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-lower_ubo_reference.Tpo $(DEPDIR)/builtin_compiler-lower_ubo_reference.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/lower_ubo_reference.cpp' object='builtin_compiler-lower_ubo_reference.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-lower_ubo_reference.obj `if test -f '$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/lower_ubo_reference.cpp'; fi` - -builtin_compiler-opt_algebraic.o: $(GLSL_SRCDIR)/opt_algebraic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_algebraic.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_algebraic.Tpo -c -o builtin_compiler-opt_algebraic.o `test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_algebraic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_algebraic.Tpo $(DEPDIR)/builtin_compiler-opt_algebraic.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_algebraic.cpp' object='builtin_compiler-opt_algebraic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_algebraic.o `test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_algebraic.cpp - -builtin_compiler-opt_algebraic.obj: $(GLSL_SRCDIR)/opt_algebraic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_algebraic.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_algebraic.Tpo -c -o builtin_compiler-opt_algebraic.obj `if test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_algebraic.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_algebraic.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_algebraic.Tpo $(DEPDIR)/builtin_compiler-opt_algebraic.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_algebraic.cpp' object='builtin_compiler-opt_algebraic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_algebraic.obj `if test -f '$(GLSL_SRCDIR)/opt_algebraic.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_algebraic.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_algebraic.cpp'; fi` - -builtin_compiler-opt_array_splitting.o: $(GLSL_SRCDIR)/opt_array_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_array_splitting.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_array_splitting.Tpo -c -o builtin_compiler-opt_array_splitting.o `test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_array_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_array_splitting.Tpo $(DEPDIR)/builtin_compiler-opt_array_splitting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_array_splitting.cpp' object='builtin_compiler-opt_array_splitting.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_array_splitting.o `test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_array_splitting.cpp - -builtin_compiler-opt_array_splitting.obj: $(GLSL_SRCDIR)/opt_array_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_array_splitting.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_array_splitting.Tpo -c -o builtin_compiler-opt_array_splitting.obj `if test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_array_splitting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_array_splitting.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_array_splitting.Tpo $(DEPDIR)/builtin_compiler-opt_array_splitting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_array_splitting.cpp' object='builtin_compiler-opt_array_splitting.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_array_splitting.obj `if test -f '$(GLSL_SRCDIR)/opt_array_splitting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_array_splitting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_array_splitting.cpp'; fi` - -builtin_compiler-opt_constant_folding.o: $(GLSL_SRCDIR)/opt_constant_folding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_folding.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_folding.Tpo -c -o builtin_compiler-opt_constant_folding.o `test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_folding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_folding.Tpo $(DEPDIR)/builtin_compiler-opt_constant_folding.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_folding.cpp' object='builtin_compiler-opt_constant_folding.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_folding.o `test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_folding.cpp - -builtin_compiler-opt_constant_folding.obj: $(GLSL_SRCDIR)/opt_constant_folding.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_folding.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_folding.Tpo -c -o builtin_compiler-opt_constant_folding.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_folding.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_folding.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_folding.Tpo $(DEPDIR)/builtin_compiler-opt_constant_folding.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_folding.cpp' object='builtin_compiler-opt_constant_folding.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_folding.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_folding.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_folding.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_folding.cpp'; fi` - -builtin_compiler-opt_constant_propagation.o: $(GLSL_SRCDIR)/opt_constant_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_propagation.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_propagation.Tpo -c -o builtin_compiler-opt_constant_propagation.o `test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_propagation.Tpo $(DEPDIR)/builtin_compiler-opt_constant_propagation.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_propagation.cpp' object='builtin_compiler-opt_constant_propagation.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_propagation.o `test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_propagation.cpp - -builtin_compiler-opt_constant_propagation.obj: $(GLSL_SRCDIR)/opt_constant_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_propagation.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_propagation.Tpo -c -o builtin_compiler-opt_constant_propagation.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_propagation.Tpo $(DEPDIR)/builtin_compiler-opt_constant_propagation.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_propagation.cpp' object='builtin_compiler-opt_constant_propagation.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_propagation.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_propagation.cpp'; fi` - -builtin_compiler-opt_constant_variable.o: $(GLSL_SRCDIR)/opt_constant_variable.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_variable.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_variable.Tpo -c -o builtin_compiler-opt_constant_variable.o `test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_variable.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_variable.Tpo $(DEPDIR)/builtin_compiler-opt_constant_variable.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_variable.cpp' object='builtin_compiler-opt_constant_variable.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_variable.o `test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_constant_variable.cpp - -builtin_compiler-opt_constant_variable.obj: $(GLSL_SRCDIR)/opt_constant_variable.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_constant_variable.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_constant_variable.Tpo -c -o builtin_compiler-opt_constant_variable.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_variable.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_variable.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_constant_variable.Tpo $(DEPDIR)/builtin_compiler-opt_constant_variable.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_constant_variable.cpp' object='builtin_compiler-opt_constant_variable.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_constant_variable.obj `if test -f '$(GLSL_SRCDIR)/opt_constant_variable.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_constant_variable.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_constant_variable.cpp'; fi` - -builtin_compiler-opt_copy_propagation.o: $(GLSL_SRCDIR)/opt_copy_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_copy_propagation.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_copy_propagation.Tpo -c -o builtin_compiler-opt_copy_propagation.o `test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_copy_propagation.Tpo $(DEPDIR)/builtin_compiler-opt_copy_propagation.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation.cpp' object='builtin_compiler-opt_copy_propagation.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_copy_propagation.o `test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation.cpp - -builtin_compiler-opt_copy_propagation.obj: $(GLSL_SRCDIR)/opt_copy_propagation.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_copy_propagation.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_copy_propagation.Tpo -c -o builtin_compiler-opt_copy_propagation.obj `if test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_copy_propagation.Tpo $(DEPDIR)/builtin_compiler-opt_copy_propagation.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation.cpp' object='builtin_compiler-opt_copy_propagation.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_copy_propagation.obj `if test -f '$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_copy_propagation.cpp'; fi` - -builtin_compiler-opt_copy_propagation_elements.o: $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_copy_propagation_elements.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Tpo -c -o builtin_compiler-opt_copy_propagation_elements.o `test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Tpo $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' object='builtin_compiler-opt_copy_propagation_elements.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_copy_propagation_elements.o `test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp - -builtin_compiler-opt_copy_propagation_elements.obj: $(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_copy_propagation_elements.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Tpo -c -o builtin_compiler-opt_copy_propagation_elements.obj `if test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Tpo $(DEPDIR)/builtin_compiler-opt_copy_propagation_elements.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp' object='builtin_compiler-opt_copy_propagation_elements.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_copy_propagation_elements.obj `if test -f '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_copy_propagation_elements.cpp'; fi` - -builtin_compiler-opt_dead_builtin_varyings.o: $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_builtin_varyings.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Tpo -c -o builtin_compiler-opt_dead_builtin_varyings.o `test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Tpo $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' object='builtin_compiler-opt_dead_builtin_varyings.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_builtin_varyings.o `test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp - -builtin_compiler-opt_dead_builtin_varyings.obj: $(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_builtin_varyings.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Tpo -c -o builtin_compiler-opt_dead_builtin_varyings.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Tpo $(DEPDIR)/builtin_compiler-opt_dead_builtin_varyings.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp' object='builtin_compiler-opt_dead_builtin_varyings.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_builtin_varyings.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_builtin_varyings.cpp'; fi` - -builtin_compiler-opt_dead_code.o: $(GLSL_SRCDIR)/opt_dead_code.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_code.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_code.Tpo -c -o builtin_compiler-opt_dead_code.o `test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_code.Tpo $(DEPDIR)/builtin_compiler-opt_dead_code.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code.cpp' object='builtin_compiler-opt_dead_code.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_code.o `test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code.cpp - -builtin_compiler-opt_dead_code.obj: $(GLSL_SRCDIR)/opt_dead_code.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_code.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_code.Tpo -c -o builtin_compiler-opt_dead_code.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_code.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_code.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_code.Tpo $(DEPDIR)/builtin_compiler-opt_dead_code.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code.cpp' object='builtin_compiler-opt_dead_code.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_code.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_code.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_code.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_code.cpp'; fi` - -builtin_compiler-opt_dead_code_local.o: $(GLSL_SRCDIR)/opt_dead_code_local.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_code_local.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_code_local.Tpo -c -o builtin_compiler-opt_dead_code_local.o `test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code_local.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_code_local.Tpo $(DEPDIR)/builtin_compiler-opt_dead_code_local.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code_local.cpp' object='builtin_compiler-opt_dead_code_local.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_code_local.o `test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_code_local.cpp - -builtin_compiler-opt_dead_code_local.obj: $(GLSL_SRCDIR)/opt_dead_code_local.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_code_local.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_code_local.Tpo -c -o builtin_compiler-opt_dead_code_local.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_code_local.Tpo $(DEPDIR)/builtin_compiler-opt_dead_code_local.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_code_local.cpp' object='builtin_compiler-opt_dead_code_local.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_code_local.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_code_local.cpp'; fi` - -builtin_compiler-opt_dead_functions.o: $(GLSL_SRCDIR)/opt_dead_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_functions.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_functions.Tpo -c -o builtin_compiler-opt_dead_functions.o `test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_functions.Tpo $(DEPDIR)/builtin_compiler-opt_dead_functions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_functions.cpp' object='builtin_compiler-opt_dead_functions.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_functions.o `test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_dead_functions.cpp - -builtin_compiler-opt_dead_functions.obj: $(GLSL_SRCDIR)/opt_dead_functions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_dead_functions.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_dead_functions.Tpo -c -o builtin_compiler-opt_dead_functions.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_functions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_functions.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_dead_functions.Tpo $(DEPDIR)/builtin_compiler-opt_dead_functions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_dead_functions.cpp' object='builtin_compiler-opt_dead_functions.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_dead_functions.obj `if test -f '$(GLSL_SRCDIR)/opt_dead_functions.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_dead_functions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_dead_functions.cpp'; fi` - -builtin_compiler-opt_flatten_nested_if_blocks.o: $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_flatten_nested_if_blocks.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Tpo -c -o builtin_compiler-opt_flatten_nested_if_blocks.o `test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Tpo $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' object='builtin_compiler-opt_flatten_nested_if_blocks.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_flatten_nested_if_blocks.o `test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp - -builtin_compiler-opt_flatten_nested_if_blocks.obj: $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_flatten_nested_if_blocks.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Tpo -c -o builtin_compiler-opt_flatten_nested_if_blocks.obj `if test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Tpo $(DEPDIR)/builtin_compiler-opt_flatten_nested_if_blocks.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp' object='builtin_compiler-opt_flatten_nested_if_blocks.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_flatten_nested_if_blocks.obj `if test -f '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp'; fi` - -builtin_compiler-opt_flip_matrices.o: $(GLSL_SRCDIR)/opt_flip_matrices.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_flip_matrices.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_flip_matrices.Tpo -c -o builtin_compiler-opt_flip_matrices.o `test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flip_matrices.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_flip_matrices.Tpo $(DEPDIR)/builtin_compiler-opt_flip_matrices.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flip_matrices.cpp' object='builtin_compiler-opt_flip_matrices.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_flip_matrices.o `test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_flip_matrices.cpp - -builtin_compiler-opt_flip_matrices.obj: $(GLSL_SRCDIR)/opt_flip_matrices.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_flip_matrices.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_flip_matrices.Tpo -c -o builtin_compiler-opt_flip_matrices.obj `if test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_flip_matrices.Tpo $(DEPDIR)/builtin_compiler-opt_flip_matrices.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_flip_matrices.cpp' object='builtin_compiler-opt_flip_matrices.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_flip_matrices.obj `if test -f '$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_flip_matrices.cpp'; fi` - -builtin_compiler-opt_function_inlining.o: $(GLSL_SRCDIR)/opt_function_inlining.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_function_inlining.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_function_inlining.Tpo -c -o builtin_compiler-opt_function_inlining.o `test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_function_inlining.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_function_inlining.Tpo $(DEPDIR)/builtin_compiler-opt_function_inlining.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_function_inlining.cpp' object='builtin_compiler-opt_function_inlining.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_function_inlining.o `test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_function_inlining.cpp - -builtin_compiler-opt_function_inlining.obj: $(GLSL_SRCDIR)/opt_function_inlining.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_function_inlining.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_function_inlining.Tpo -c -o builtin_compiler-opt_function_inlining.obj `if test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_function_inlining.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_function_inlining.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_function_inlining.Tpo $(DEPDIR)/builtin_compiler-opt_function_inlining.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_function_inlining.cpp' object='builtin_compiler-opt_function_inlining.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_function_inlining.obj `if test -f '$(GLSL_SRCDIR)/opt_function_inlining.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_function_inlining.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_function_inlining.cpp'; fi` - -builtin_compiler-opt_if_simplification.o: $(GLSL_SRCDIR)/opt_if_simplification.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_if_simplification.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_if_simplification.Tpo -c -o builtin_compiler-opt_if_simplification.o `test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_if_simplification.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_if_simplification.Tpo $(DEPDIR)/builtin_compiler-opt_if_simplification.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_if_simplification.cpp' object='builtin_compiler-opt_if_simplification.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_if_simplification.o `test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_if_simplification.cpp - -builtin_compiler-opt_if_simplification.obj: $(GLSL_SRCDIR)/opt_if_simplification.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_if_simplification.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_if_simplification.Tpo -c -o builtin_compiler-opt_if_simplification.obj `if test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_if_simplification.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_if_simplification.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_if_simplification.Tpo $(DEPDIR)/builtin_compiler-opt_if_simplification.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_if_simplification.cpp' object='builtin_compiler-opt_if_simplification.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_if_simplification.obj `if test -f '$(GLSL_SRCDIR)/opt_if_simplification.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_if_simplification.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_if_simplification.cpp'; fi` - -builtin_compiler-opt_noop_swizzle.o: $(GLSL_SRCDIR)/opt_noop_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_noop_swizzle.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Tpo -c -o builtin_compiler-opt_noop_swizzle.o `test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_noop_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Tpo $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' object='builtin_compiler-opt_noop_swizzle.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_noop_swizzle.o `test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_noop_swizzle.cpp - -builtin_compiler-opt_noop_swizzle.obj: $(GLSL_SRCDIR)/opt_noop_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_noop_swizzle.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Tpo -c -o builtin_compiler-opt_noop_swizzle.obj `if test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Tpo $(DEPDIR)/builtin_compiler-opt_noop_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_noop_swizzle.cpp' object='builtin_compiler-opt_noop_swizzle.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_noop_swizzle.obj `if test -f '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_noop_swizzle.cpp'; fi` - -builtin_compiler-opt_redundant_jumps.o: $(GLSL_SRCDIR)/opt_redundant_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_redundant_jumps.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Tpo -c -o builtin_compiler-opt_redundant_jumps.o `test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_redundant_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Tpo $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' object='builtin_compiler-opt_redundant_jumps.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_redundant_jumps.o `test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_redundant_jumps.cpp - -builtin_compiler-opt_redundant_jumps.obj: $(GLSL_SRCDIR)/opt_redundant_jumps.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_redundant_jumps.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Tpo -c -o builtin_compiler-opt_redundant_jumps.obj `if test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Tpo $(DEPDIR)/builtin_compiler-opt_redundant_jumps.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_redundant_jumps.cpp' object='builtin_compiler-opt_redundant_jumps.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_redundant_jumps.obj `if test -f '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_redundant_jumps.cpp'; fi` - -builtin_compiler-opt_structure_splitting.o: $(GLSL_SRCDIR)/opt_structure_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_structure_splitting.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_structure_splitting.Tpo -c -o builtin_compiler-opt_structure_splitting.o `test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_structure_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_structure_splitting.Tpo $(DEPDIR)/builtin_compiler-opt_structure_splitting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_structure_splitting.cpp' object='builtin_compiler-opt_structure_splitting.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_structure_splitting.o `test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_structure_splitting.cpp - -builtin_compiler-opt_structure_splitting.obj: $(GLSL_SRCDIR)/opt_structure_splitting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_structure_splitting.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_structure_splitting.Tpo -c -o builtin_compiler-opt_structure_splitting.obj `if test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_structure_splitting.Tpo $(DEPDIR)/builtin_compiler-opt_structure_splitting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_structure_splitting.cpp' object='builtin_compiler-opt_structure_splitting.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_structure_splitting.obj `if test -f '$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_structure_splitting.cpp'; fi` - -builtin_compiler-opt_swizzle_swizzle.o: $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_swizzle_swizzle.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Tpo -c -o builtin_compiler-opt_swizzle_swizzle.o `test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Tpo $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' object='builtin_compiler-opt_swizzle_swizzle.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_swizzle_swizzle.o `test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp - -builtin_compiler-opt_swizzle_swizzle.obj: $(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_swizzle_swizzle.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Tpo -c -o builtin_compiler-opt_swizzle_swizzle.obj `if test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Tpo $(DEPDIR)/builtin_compiler-opt_swizzle_swizzle.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp' object='builtin_compiler-opt_swizzle_swizzle.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_swizzle_swizzle.obj `if test -f '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_swizzle_swizzle.cpp'; fi` - -builtin_compiler-opt_tree_grafting.o: $(GLSL_SRCDIR)/opt_tree_grafting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_tree_grafting.o -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_tree_grafting.Tpo -c -o builtin_compiler-opt_tree_grafting.o `test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_tree_grafting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_tree_grafting.Tpo $(DEPDIR)/builtin_compiler-opt_tree_grafting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_tree_grafting.cpp' object='builtin_compiler-opt_tree_grafting.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_tree_grafting.o `test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/opt_tree_grafting.cpp - -builtin_compiler-opt_tree_grafting.obj: $(GLSL_SRCDIR)/opt_tree_grafting.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-opt_tree_grafting.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-opt_tree_grafting.Tpo -c -o builtin_compiler-opt_tree_grafting.obj `if test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-opt_tree_grafting.Tpo $(DEPDIR)/builtin_compiler-opt_tree_grafting.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/opt_tree_grafting.cpp' object='builtin_compiler-opt_tree_grafting.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-opt_tree_grafting.obj `if test -f '$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/opt_tree_grafting.cpp'; fi` - -builtin_compiler-s_expression.o: $(GLSL_SRCDIR)/s_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-s_expression.o -MD -MP -MF $(DEPDIR)/builtin_compiler-s_expression.Tpo -c -o builtin_compiler-s_expression.o `test -f '$(GLSL_SRCDIR)/s_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/s_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-s_expression.Tpo $(DEPDIR)/builtin_compiler-s_expression.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/s_expression.cpp' object='builtin_compiler-s_expression.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-s_expression.o `test -f '$(GLSL_SRCDIR)/s_expression.cpp' || echo '$(srcdir)/'`$(GLSL_SRCDIR)/s_expression.cpp - -builtin_compiler-s_expression.obj: $(GLSL_SRCDIR)/s_expression.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT builtin_compiler-s_expression.obj -MD -MP -MF $(DEPDIR)/builtin_compiler-s_expression.Tpo -c -o builtin_compiler-s_expression.obj `if test -f '$(GLSL_SRCDIR)/s_expression.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/s_expression.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/s_expression.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/builtin_compiler-s_expression.Tpo $(DEPDIR)/builtin_compiler-s_expression.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(GLSL_SRCDIR)/s_expression.cpp' object='builtin_compiler-s_expression.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(builtin_compiler_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o builtin_compiler-s_expression.obj `if test -f '$(GLSL_SRCDIR)/s_expression.cpp'; then $(CYGPATH_W) '$(GLSL_SRCDIR)/s_expression.cpp'; else $(CYGPATH_W) '$(srcdir)/$(GLSL_SRCDIR)/s_expression.cpp'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -cscopelist: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ - cscopelist ctags distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/dist/Mesa/src/glsl/builtin_compiler/builtin_stubs.cpp b/dist/Mesa/src/glsl/builtin_compiler/builtin_stubs.cpp deleted file mode 100644 index dfa5d324e..000000000 --- a/dist/Mesa/src/glsl/builtin_compiler/builtin_stubs.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include <stdio.h> -#include "glsl_parser_extras.h" - -/* A dummy file. When compiling prototypes, we don't care about builtins. - * We really don't want to half-compile builtin_functions.cpp and fail, though. - */ -void -_mesa_glsl_release_functions(void) -{ -} - -void -_mesa_glsl_initialize_functions(_mesa_glsl_parse_state *state) -{ - (void) state; -} diff --git a/dist/Mesa/src/glsl/builtins/glsl/determinant.glsl b/dist/Mesa/src/glsl/builtins/glsl/determinant.glsl deleted file mode 100644 index 84f38725e..000000000 --- a/dist/Mesa/src/glsl/builtins/glsl/determinant.glsl +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#version 120 - -// Forward declaration because builtins don't know about other builtins. -float dot(vec4, vec4); - -float determinant(mat2 m) -{ - return m[0][0] * m[1][1] - m[1][0] * m[0][1]; -} - -float determinant(mat3 m) -{ - return (+ m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) - - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) - + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])); -} - -float determinant(mat4 m) -{ - float SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3]; - float SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3]; - float SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2]; - float SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3]; - float SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2]; - float SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1]; - float SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3]; - float SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3]; - float SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2]; - float SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3]; - float SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2]; - float SubFactor11 = m[1][1] * m[3][3] - m[3][1] * m[1][3]; - float SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1]; - float SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3]; - float SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3]; - float SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2]; - float SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3]; - float SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2]; - float SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1]; - - vec4 adj_0; - - adj_0[0] = + (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02); - adj_0[1] = - (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04); - adj_0[2] = + (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05); - adj_0[3] = - (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05); - - return dot(m[0], adj_0); -} diff --git a/dist/Mesa/src/glsl/builtins/glsl/inverse.glsl b/dist/Mesa/src/glsl/builtins/glsl/inverse.glsl deleted file mode 100644 index ffb84f907..000000000 --- a/dist/Mesa/src/glsl/builtins/glsl/inverse.glsl +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#version 120 -mat2 inverse(mat2 m) -{ - mat2 adj; - adj[0][0] = m[1][1]; - adj[0][1] = -m[0][1]; - adj[1][0] = -m[1][0]; - adj[1][1] = m[0][0]; - float det = m[0][0] * m[1][1] - m[1][0] * m[0][1]; - return adj / det; -} - -mat3 inverse(mat3 m) -{ - mat3 adj; - adj[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]); - adj[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]); - adj[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]); - adj[0][1] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]); - adj[1][1] = + (m[0][0] * m[2][2] - m[2][0] * m[0][2]); - adj[2][1] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]); - adj[0][2] = + (m[0][1] * m[1][2] - m[1][1] * m[0][2]); - adj[1][2] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]); - adj[2][2] = + (m[0][0] * m[1][1] - m[1][0] * m[0][1]); - - float det = (+ m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) - - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) - + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])); - - return adj / det; -} - -mat4 inverse(mat4 m) -{ - float SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3]; - float SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3]; - float SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2]; - float SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3]; - float SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2]; - float SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1]; - float SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3]; - float SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3]; - float SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2]; - float SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3]; - float SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2]; - float SubFactor11 = m[1][1] * m[3][3] - m[3][1] * m[1][3]; - float SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1]; - float SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3]; - float SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3]; - float SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2]; - float SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3]; - float SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2]; - float SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1]; - - mat4 adj; - - adj[0][0] = + (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02); - adj[1][0] = - (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04); - adj[2][0] = + (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05); - adj[3][0] = - (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05); - - adj[0][1] = - (m[0][1] * SubFactor00 - m[0][2] * SubFactor01 + m[0][3] * SubFactor02); - adj[1][1] = + (m[0][0] * SubFactor00 - m[0][2] * SubFactor03 + m[0][3] * SubFactor04); - adj[2][1] = - (m[0][0] * SubFactor01 - m[0][1] * SubFactor03 + m[0][3] * SubFactor05); - adj[3][1] = + (m[0][0] * SubFactor02 - m[0][1] * SubFactor04 + m[0][2] * SubFactor05); - - adj[0][2] = + (m[0][1] * SubFactor06 - m[0][2] * SubFactor07 + m[0][3] * SubFactor08); - adj[1][2] = - (m[0][0] * SubFactor06 - m[0][2] * SubFactor09 + m[0][3] * SubFactor10); - adj[2][2] = + (m[0][0] * SubFactor11 - m[0][1] * SubFactor09 + m[0][3] * SubFactor12); - adj[3][2] = - (m[0][0] * SubFactor08 - m[0][1] * SubFactor10 + m[0][2] * SubFactor12); - - adj[0][3] = - (m[0][1] * SubFactor13 - m[0][2] * SubFactor14 + m[0][3] * SubFactor15); - adj[1][3] = + (m[0][0] * SubFactor13 - m[0][2] * SubFactor16 + m[0][3] * SubFactor17); - adj[2][3] = - (m[0][0] * SubFactor14 - m[0][1] * SubFactor16 + m[0][3] * SubFactor18); - adj[3][3] = + (m[0][0] * SubFactor15 - m[0][1] * SubFactor17 + m[0][2] * SubFactor18); - - float det = (+ m[0][0] * adj[0][0] - + m[0][1] * adj[1][0] - + m[0][2] * adj[2][0] - + m[0][3] * adj[3][0]); - - return adj / det; -} - diff --git a/dist/Mesa/src/glsl/builtins/ir/abs.ir b/dist/Mesa/src/glsl/builtins/ir/abs.ir deleted file mode 100644 index d07d1d99e..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/abs.ir +++ /dev/null @@ -1,41 +0,0 @@ -((function abs - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float abs (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 abs (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 abs (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 abs (var_ref arg0))))) - - (signature int - (parameters - (declare (in) int arg0)) - ((return (expression int abs (var_ref arg0))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0)) - ((return (expression ivec2 abs (var_ref arg0))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0)) - ((return (expression ivec3 abs (var_ref arg0))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0)) - ((return (expression ivec4 abs (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/acos.ir b/dist/Mesa/src/glsl/builtins/ir/acos.ir deleted file mode 100644 index 8c3797e96..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/acos.ir +++ /dev/null @@ -1,29 +0,0 @@ -((function acos - (signature float - (parameters - (declare (in) float x)) - ((declare () float s) - (call asin (var_ref s) ((var_ref x))) - (return (expression float - (constant float (1.5707964)) (var_ref s))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((declare () vec2 s) - (call asin (var_ref s) ((var_ref x))) - (return (expression vec2 - (constant float (1.5707964)) (var_ref s))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((declare () vec3 s) - (call asin (var_ref s) ((var_ref x))) - (return (expression vec3 - (constant float (1.5707964)) (var_ref s))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((declare () vec4 s) - (call asin (var_ref s) ((var_ref x))) - (return (expression vec4 - (constant float (1.5707964)) (var_ref s))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/acosh.ir b/dist/Mesa/src/glsl/builtins/ir/acosh.ir deleted file mode 100644 index 9a4c291ad..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/acosh.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function acosh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1))))))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant float (1))))))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant float (1))))))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant float (1))))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/all.ir b/dist/Mesa/src/glsl/builtins/ir/all.ir deleted file mode 100644 index 2cac0dfb6..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/all.ir +++ /dev/null @@ -1,16 +0,0 @@ -((function all - (signature bool - (parameters - (declare (in) bvec2 arg0)) - ((return (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0)))))) - - (signature bool - (parameters - (declare (in) bvec3 arg0)) - ((return (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0)))))) - - (signature bool - (parameters - (declare (in) bvec4 arg0)) - ((return (expression bool && (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/any.ir b/dist/Mesa/src/glsl/builtins/ir/any.ir deleted file mode 100644 index cc6038a31..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/any.ir +++ /dev/null @@ -1,16 +0,0 @@ -((function any - (signature bool - (parameters - (declare (in) bvec2 arg0)) - ((return (expression bool any (var_ref arg0))))) - - (signature bool - (parameters - (declare (in) bvec3 arg0)) - ((return (expression bool any (var_ref arg0))))) - - (signature bool - (parameters - (declare (in) bvec4 arg0)) - ((return (expression bool any (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/asin.ir b/dist/Mesa/src/glsl/builtins/ir/asin.ir deleted file mode 100644 index 45d9e6729..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/asin.ir +++ /dev/null @@ -1,109 +0,0 @@ -((function asin - (signature float - (parameters - (declare (in) float x)) - ((return (expression float * - (expression float sign (var_ref x)) - (expression float - - (constant float (1.5707964)) - (expression float * - (expression float sqrt - (expression float - - (constant float (1.0)) - (expression float abs (var_ref x)))) - (expression float + - (constant float (1.5707964)) - (expression float * - (expression float abs (var_ref x)) - (expression float + - (constant float (-0.21460183)) - (expression float * - (expression float abs (var_ref x)) - (expression float + - (constant float (0.086566724)) - (expression float * - (expression float abs (var_ref x)) - (constant float (-0.03102955)) - )))))))))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 * - (expression vec2 sign (var_ref x)) - (expression vec2 - - (constant float (1.5707964)) - (expression vec2 * - (expression vec2 sqrt - (expression vec2 - - (constant float (1.0)) - (expression vec2 abs (var_ref x)))) - (expression vec2 + - (constant float (1.5707964)) - (expression vec2 * - (expression vec2 abs (var_ref x)) - (expression vec2 + - (constant float (-0.21460183)) - (expression vec2 * - (expression vec2 abs (var_ref x)) - (expression vec2 + - (constant float (0.086566724)) - (expression vec2 * - (expression vec2 abs (var_ref x)) - (constant float (-0.03102955)) - )))))))))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 * - (expression vec3 sign (var_ref x)) - (expression vec3 - - (constant float (1.5707964)) - (expression vec3 * - (expression vec3 sqrt - (expression vec3 - - (constant float (1.0)) - (expression vec3 abs (var_ref x)))) - (expression vec3 + - (constant float (1.5707964)) - (expression vec3 * - (expression vec3 abs (var_ref x)) - (expression vec3 + - (constant float (-0.21460183)) - (expression vec3 * - (expression vec3 abs (var_ref x)) - (expression vec3 + - (constant float (0.086566724)) - (expression vec3 * - (expression vec3 abs (var_ref x)) - (constant float (-0.03102955)) - )))))))))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 * - (expression vec4 sign (var_ref x)) - (expression vec4 - - (constant float (1.5707964)) - (expression vec4 * - (expression vec4 sqrt - (expression vec4 - - (constant float (1.0)) - (expression vec4 abs (var_ref x)))) - (expression vec4 + - (constant float (1.5707964)) - (expression vec4 * - (expression vec4 abs (var_ref x)) - (expression vec4 + - (constant float (-0.21460183)) - (expression vec4 * - (expression vec4 abs (var_ref x)) - (expression vec4 + - (constant float (0.086566724)) - (expression vec4 * - (expression vec4 abs (var_ref x)) - (constant float (-0.03102955)) - )))))))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/asinh.ir b/dist/Mesa/src/glsl/builtins/ir/asinh.ir deleted file mode 100644 index d2dc7102c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/asinh.ir +++ /dev/null @@ -1,53 +0,0 @@ -((function asinh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float * - (expression float sign (var_ref x)) - (expression float log - (expression float + - (expression float abs (var_ref x)) - (expression float sqrt - (expression float + - (expression float * (var_ref x) (var_ref x)) - (constant float (1)))))))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 * - (expression vec2 sign (var_ref x)) - (expression vec2 log - (expression vec2 + - (expression vec2 abs (var_ref x)) - (expression vec2 sqrt - (expression vec2 + - (expression vec2 * (var_ref x) (var_ref x)) - (constant float (1)))))))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 * - (expression vec3 sign (var_ref x)) - (expression vec3 log - (expression vec3 + - (expression vec3 abs (var_ref x)) - (expression vec3 sqrt - (expression vec3 + - (expression vec3 * (var_ref x) (var_ref x)) - (constant float (1)))))))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 * - (expression vec4 sign (var_ref x)) - (expression vec4 log - (expression vec4 + - (expression vec4 abs (var_ref x)) - (expression vec4 sqrt - (expression vec4 + - (expression vec4 * (var_ref x) (var_ref x)) - (constant float (1)))))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/atan.ir b/dist/Mesa/src/glsl/builtins/ir/atan.ir deleted file mode 100644 index a9dc08e97..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/atan.ir +++ /dev/null @@ -1,134 +0,0 @@ -((function atan - (signature float - (parameters - (declare (in) float y_over_x)) - ((declare () float s) - (call asin (var_ref s) - ((expression float * - (var_ref y_over_x) - (expression float rsq - (expression float + - (expression float * - (var_ref y_over_x) - (var_ref y_over_x)) - (constant float (1.0))))))) - (return (var_ref s)))) - - (signature vec2 - (parameters - (declare (in) vec2 y_over_x)) - ((declare () vec2 s) - (call asin (var_ref s) - ((expression vec2 * - (var_ref y_over_x) - (expression vec2 rsq - (expression vec2 + - (expression vec2 * - (var_ref y_over_x) - (var_ref y_over_x)) - (constant float (1.0))))))) - (return (var_ref s)))) - - (signature vec3 - (parameters - (declare (in) vec3 y_over_x)) - ((declare () vec3 s) - (call asin (var_ref s) - ((expression vec3 * - (var_ref y_over_x) - (expression vec3 rsq - (expression vec3 + - (expression vec3 * - (var_ref y_over_x) - (var_ref y_over_x)) - (constant float (1.0))))))) - (return (var_ref s)))) - - (signature vec4 - (parameters - (declare (in) vec4 y_over_x)) - ((declare () vec4 s) - (call asin (var_ref s) - ((expression vec4 * - (var_ref y_over_x) - (expression vec4 rsq - (expression vec4 + - (expression vec4 * - (var_ref y_over_x) - (var_ref y_over_x)) - (constant float (1.0))))))) - (return (var_ref s)))) - - (signature float - (parameters - (declare (in ) float y) - (declare (in ) float x) - ) - ( - (declare () float r) - (if (expression bool > - (expression float abs (var_ref x)) - (expression float * (constant float (1.0e-8)) (expression float abs (var_ref y)))) ( - (call atan (var_ref r) ((expression float / (var_ref y) (var_ref x)))) - (if (expression bool < (var_ref x) (constant float (0.000000)) ) ( - (if (expression bool >= (var_ref y) (constant float (0.000000)) ) - ((assign (x) (var_ref r) (expression float + (var_ref r) (constant float (3.141593))))) - ((assign (x) (var_ref r) (expression float - (var_ref r) (constant float (3.141593)))))) - ) - ( - )) - ) - ( - (declare () float sgn) - (assign (x) (var_ref sgn) (expression float sign (var_ref y))) - (assign (x) (var_ref r) (expression float * (var_ref sgn) (constant float (1.5707965)))) - )) - - (return (var_ref r) ) - )) - - - - (signature vec2 - (parameters - (declare (in) vec2 y) - (declare (in) vec2 x)) - ((declare () vec2 r) - (declare () float temp) - (call atan (var_ref temp) ((swiz x (var_ref y)) (swiz x (var_ref x)))) - (assign (x) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz y (var_ref y)) (swiz y (var_ref x)))) - (assign (y) (var_ref r) (var_ref temp)) - (return (var_ref r)))) - - (signature vec3 - (parameters - (declare (in) vec3 y) - (declare (in) vec3 x)) - ((declare () vec3 r) - (declare () float temp) - (call atan (var_ref temp) ((swiz x (var_ref y)) (swiz x (var_ref x)))) - (assign (x) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz y (var_ref y)) (swiz y (var_ref x)))) - (assign (y) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz z (var_ref y)) (swiz z (var_ref x)))) - (assign (z) (var_ref r) (var_ref temp)) - (return (var_ref r)))) - - (signature vec4 - (parameters - (declare (in) vec4 y) - (declare (in) vec4 x)) - ((declare () vec4 r) - (declare () float temp) - (call atan (var_ref temp) ((swiz x (var_ref y)) (swiz x (var_ref x)))) - (assign (x) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz y (var_ref y)) (swiz y (var_ref x)))) - (assign (y) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz z (var_ref y)) (swiz z (var_ref x)))) - (assign (z) (var_ref r) (var_ref temp)) - (call atan (var_ref temp) ((swiz w (var_ref y)) (swiz w (var_ref x)))) - (assign (w) (var_ref r) (var_ref temp)) - (return (var_ref r)))) - -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/atanh.ir b/dist/Mesa/src/glsl/builtins/ir/atanh.ir deleted file mode 100644 index 5ef3596f0..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/atanh.ir +++ /dev/null @@ -1,37 +0,0 @@ -((function atanh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float * (constant float (0.5)) - (expression float log - (expression float / - (expression float + (constant float (1)) (var_ref x)) - (expression float - (constant float (1)) (var_ref x)))))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 * (constant float (0.5)) - (expression vec2 log - (expression vec2 / - (expression vec2 + (constant float (1)) (var_ref x)) - (expression vec2 - (constant float (1)) (var_ref x)))))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 * (constant float (0.5)) - (expression vec3 log - (expression vec3 / - (expression vec3 + (constant float (1)) (var_ref x)) - (expression vec3 - (constant float (1)) (var_ref x)))))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 * (constant float (0.5)) - (expression vec4 log - (expression vec4 / - (expression vec4 + (constant float (1)) (var_ref x)) - (expression vec4 - (constant float (1)) (var_ref x)))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/bitCount.ir b/dist/Mesa/src/glsl/builtins/ir/bitCount.ir deleted file mode 100644 index 71fcae2db..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/bitCount.ir +++ /dev/null @@ -1,41 +0,0 @@ -((function bitCount - (signature int - (parameters - (declare (in) int value)) - ((return (expression int bit_count (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 value)) - ((return (expression ivec2 bit_count (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 value)) - ((return (expression ivec3 bit_count (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 value)) - ((return (expression ivec4 bit_count (var_ref value))))) - - (signature int - (parameters - (declare (in) uint value)) - ((return (expression int bit_count (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) uvec2 value)) - ((return (expression ivec2 bit_count (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) uvec3 value)) - ((return (expression ivec3 bit_count (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) uvec4 value)) - ((return (expression ivec4 bit_count (var_ref value))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/bitfieldExtract.ir b/dist/Mesa/src/glsl/builtins/ir/bitfieldExtract.ir deleted file mode 100644 index 0491c8218..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/bitfieldExtract.ir +++ /dev/null @@ -1,57 +0,0 @@ -((function bitfieldExtract - (signature int - (parameters - (declare (in) int value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression int bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec2 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec3 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec4 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature uint - (parameters - (declare (in) uint value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uint bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec2 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec3 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 value) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec4 bitfield_extract (var_ref value) (var_ref offset) (var_ref bits))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/bitfieldInsert.ir b/dist/Mesa/src/glsl/builtins/ir/bitfieldInsert.ir deleted file mode 100644 index 2bb4442be..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/bitfieldInsert.ir +++ /dev/null @@ -1,65 +0,0 @@ -((function bitfieldInsert - (signature int - (parameters - (declare (in) int base) - (declare (in) int insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression int bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 base) - (declare (in) ivec2 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec2 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 base) - (declare (in) ivec3 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec3 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 base) - (declare (in) ivec4 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression ivec4 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature uint - (parameters - (declare (in) uint base) - (declare (in) uint insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uint bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 base) - (declare (in) uvec2 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec2 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 base) - (declare (in) uvec3 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec3 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 base) - (declare (in) uvec4 insert) - (declare (in) int offset) - (declare (in) int bits)) - ((return (expression uvec4 bitfield_insert (var_ref base) (var_ref insert) (var_ref offset) (var_ref bits))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/bitfieldReverse.ir b/dist/Mesa/src/glsl/builtins/ir/bitfieldReverse.ir deleted file mode 100644 index f05c119ed..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/bitfieldReverse.ir +++ /dev/null @@ -1,41 +0,0 @@ -((function bitfieldReverse - (signature int - (parameters - (declare (in) int value)) - ((return (expression int bitfield_reverse (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 value)) - ((return (expression ivec2 bitfield_reverse (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 value)) - ((return (expression ivec3 bitfield_reverse (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 value)) - ((return (expression ivec4 bitfield_reverse (var_ref value))))) - - (signature uint - (parameters - (declare (in) uint value)) - ((return (expression uint bitfield_reverse (var_ref value))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 value)) - ((return (expression uvec2 bitfield_reverse (var_ref value))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 value)) - ((return (expression uvec3 bitfield_reverse (var_ref value))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 value)) - ((return (expression uvec4 bitfield_reverse (var_ref value))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/ceil.ir b/dist/Mesa/src/glsl/builtins/ir/ceil.ir deleted file mode 100644 index a26a77504..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/ceil.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function ceil - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float ceil (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 ceil (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 ceil (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 ceil (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/clamp.ir b/dist/Mesa/src/glsl/builtins/ir/clamp.ir deleted file mode 100644 index 2bdc466b2..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/clamp.ir +++ /dev/null @@ -1,148 +0,0 @@ -((function clamp - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1) - (declare (in) float arg2)) - ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1) - (declare (in) vec2 arg2)) - ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1) - (declare (in) vec3 arg2)) - ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1) - (declare (in) vec4 arg2)) - ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) float arg1) - (declare (in) float arg2)) - ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) float arg1) - (declare (in) float arg2)) - ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) float arg1) - (declare (in) float arg2)) - ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature int - (parameters - (declare (in) int arg0) - (declare (in) int arg1) - (declare (in) int arg2)) - ((return (expression int max (expression int min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1) - (declare (in) ivec2 arg2)) - ((return (expression ivec2 max (expression ivec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1) - (declare (in) ivec3 arg2)) - ((return (expression ivec3 max (expression ivec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1) - (declare (in) ivec4 arg2)) - ((return (expression ivec4 max (expression ivec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) int arg1) - (declare (in) int arg2)) - ((return (expression ivec2 max (expression ivec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) int arg1) - (declare (in) int arg2)) - ((return (expression ivec3 max (expression ivec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) int arg1) - (declare (in) int arg2)) - ((return (expression ivec4 max (expression ivec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uint - (parameters - (declare (in) uint arg0) - (declare (in) uint arg1) - (declare (in) uint arg2)) - ((return (expression uint max (expression uint min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1) - (declare (in) uvec2 arg2)) - ((return (expression uvec2 max (expression uvec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1) - (declare (in) uvec3 arg2)) - ((return (expression uvec3 max (expression uvec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1) - (declare (in) uvec4 arg2)) - ((return (expression uvec4 max (expression uvec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uint arg1) - (declare (in) uint arg2)) - ((return (expression uvec2 max (expression uvec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uint arg1) - (declare (in) uint arg2)) - ((return (expression uvec3 max (expression uvec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uint arg1) - (declare (in) uint arg2)) - ((return (expression uvec4 max (expression uvec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/cos.ir b/dist/Mesa/src/glsl/builtins/ir/cos.ir deleted file mode 100644 index 88f266ecc..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/cos.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function cos - (signature float - (parameters - (declare (in) float angle)) - ((return (expression float cos (var_ref angle))))) - - (signature vec2 - (parameters - (declare (in) vec2 angle)) - ((return (expression vec2 cos (var_ref angle))))) - - (signature vec3 - (parameters - (declare (in) vec3 angle)) - ((return (expression vec3 cos (var_ref angle))))) - - (signature vec4 - (parameters - (declare (in) vec4 angle)) - ((return (expression vec4 cos (var_ref angle))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/cosh.ir b/dist/Mesa/src/glsl/builtins/ir/cosh.ir deleted file mode 100644 index 945743138..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/cosh.ir +++ /dev/null @@ -1,30 +0,0 @@ -((function cosh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float * (constant float (0.5)) - (expression float + - (expression float exp (var_ref x)) - (expression float exp (expression float neg (var_ref x)))))))) - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 * (constant float (0.5)) - (expression vec2 + - (expression vec2 exp (var_ref x)) - (expression vec2 exp (expression vec2 neg (var_ref x)))))))) - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 * (constant float (0.5)) - (expression vec3 + - (expression vec3 exp (var_ref x)) - (expression vec3 exp (expression vec3 neg (var_ref x)))))))) - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 * (constant float (0.5)) - (expression vec4 + - (expression vec4 exp (var_ref x)) - (expression vec4 exp (expression vec4 neg (var_ref x)))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/cross.ir b/dist/Mesa/src/glsl/builtins/ir/cross.ir deleted file mode 100644 index 02991fe42..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/cross.ir +++ /dev/null @@ -1,9 +0,0 @@ -((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))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/dFdx.ir b/dist/Mesa/src/glsl/builtins/ir/dFdx.ir deleted file mode 100644 index 30594d33c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/dFdx.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function dFdx - (signature float - (parameters - (declare (in) float p)) - ((return (expression float dFdx (var_ref p))))) - - (signature vec2 - (parameters - (declare (in) vec2 p)) - ((return (expression vec2 dFdx (var_ref p))))) - - (signature vec3 - (parameters - (declare (in) vec3 p)) - ((return (expression vec3 dFdx (var_ref p))))) - - (signature vec4 - (parameters - (declare (in) vec4 p)) - ((return (expression vec4 dFdx (var_ref p))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/dFdy.ir b/dist/Mesa/src/glsl/builtins/ir/dFdy.ir deleted file mode 100644 index fb5798d3c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/dFdy.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function dFdy - (signature float - (parameters - (declare (in) float p)) - ((return (expression float dFdy (var_ref p))))) - - (signature vec2 - (parameters - (declare (in) vec2 p)) - ((return (expression vec2 dFdy (var_ref p))))) - - (signature vec3 - (parameters - (declare (in) vec3 p)) - ((return (expression vec3 dFdy (var_ref p))))) - - (signature vec4 - (parameters - (declare (in) vec4 p)) - ((return (expression vec4 dFdy (var_ref p))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/degrees.ir b/dist/Mesa/src/glsl/builtins/ir/degrees.ir deleted file mode 100644 index dc0d7b9e2..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/degrees.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function degrees - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float * (var_ref arg0) (constant float (57.295780)))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 * (var_ref arg0) (constant float (57.295780)))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 * (var_ref arg0) (constant float (57.295780)))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 * (var_ref arg0) (constant float (57.295780)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/distance.ir b/dist/Mesa/src/glsl/builtins/ir/distance.ir deleted file mode 100644 index c249f8c99..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/distance.ir +++ /dev/null @@ -1,31 +0,0 @@ -((function distance - (signature float - (parameters - (declare (in) float p0) - (declare (in) float p1)) - ((return (expression float abs (expression float - (var_ref p0) (var_ref p1)))))) - - (signature float - (parameters - (declare (in) vec2 p0) - (declare (in) vec2 p1)) - ((declare () vec2 p) - (assign (xy) (var_ref p) (expression vec2 - (var_ref p0) (var_ref p1))) - (return (expression float sqrt (expression float dot (var_ref p) (var_ref p)))))) - - (signature float - (parameters - (declare (in) vec3 p0) - (declare (in) vec3 p1)) - ((declare () vec3 p) - (assign (xyz) (var_ref p) (expression vec3 - (var_ref p0) (var_ref p1))) - (return (expression float sqrt (expression float dot (var_ref p) (var_ref p)))))) - - (signature float - (parameters - (declare (in) vec4 p0) - (declare (in) vec4 p1)) - ((declare () vec4 p) - (assign (xyzw) (var_ref p) (expression vec4 - (var_ref p0) (var_ref p1))) - (return (expression float sqrt (expression float dot (var_ref p) (var_ref p)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/dot.ir b/dist/Mesa/src/glsl/builtins/ir/dot.ir deleted file mode 100644 index 1f27f3235..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/dot.ir +++ /dev/null @@ -1,25 +0,0 @@ -((function dot - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1)) - ((return (expression float * (var_ref arg0) (var_ref arg1))))) - - (signature float - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression float dot (var_ref arg0) (var_ref arg1))))) - - (signature float - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression float dot (var_ref arg0) (var_ref arg1))))) - - (signature float - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression float dot (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/equal.ir b/dist/Mesa/src/glsl/builtins/ir/equal.ir deleted file mode 100644 index a414b3e53..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/equal.ir +++ /dev/null @@ -1,73 +0,0 @@ -((function equal - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) bvec2 arg0) - (declare (in) bvec2 arg1)) - ((return (expression bvec2 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) bvec3 arg0) - (declare (in) bvec3 arg1)) - ((return (expression bvec3 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) bvec4 arg0) - (declare (in) bvec4 arg1)) - ((return (expression bvec4 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 == (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 == (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/exp.ir b/dist/Mesa/src/glsl/builtins/ir/exp.ir deleted file mode 100644 index a73bd6a7f..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/exp.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function exp - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float exp (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 exp (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 exp (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 exp (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/exp2.ir b/dist/Mesa/src/glsl/builtins/ir/exp2.ir deleted file mode 100644 index a842d3fe6..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/exp2.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function exp2 - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float exp2 (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 exp2 (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 exp2 (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 exp2 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/faceforward.ir b/dist/Mesa/src/glsl/builtins/ir/faceforward.ir deleted file mode 100644 index 35b79571c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/faceforward.ir +++ /dev/null @@ -1,37 +0,0 @@ -((function faceforward - (signature float - (parameters - (declare (in) float N) - (declare (in) float I) - (declare (in) float Nref)) - ((if (expression bool < (expression float * (var_ref Nref) (var_ref I)) (constant float (0))) - ((return (var_ref N))) - ((return (expression float neg (var_ref N))))))) - - (signature vec2 - (parameters - (declare (in) vec2 N) - (declare (in) vec2 I) - (declare (in) vec2 Nref)) - ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) - ((return (var_ref N))) - ((return (expression vec2 neg (var_ref N))))))) - - (signature vec3 - (parameters - (declare (in) vec3 N) - (declare (in) vec3 I) - (declare (in) vec3 Nref)) - ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) - ((return (var_ref N))) - ((return (expression vec3 neg (var_ref N))))))) - - (signature vec4 - (parameters - (declare (in) vec4 N) - (declare (in) vec4 I) - (declare (in) vec4 Nref)) - ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0))) - ((return (var_ref N))) - ((return (expression vec4 neg (var_ref N))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/findLSB.ir b/dist/Mesa/src/glsl/builtins/ir/findLSB.ir deleted file mode 100644 index 2ddbb7f70..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/findLSB.ir +++ /dev/null @@ -1,41 +0,0 @@ -((function findLSB - (signature int - (parameters - (declare (in) int value)) - ((return (expression int find_lsb (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 value)) - ((return (expression ivec2 find_lsb (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 value)) - ((return (expression ivec3 find_lsb (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 value)) - ((return (expression ivec4 find_lsb (var_ref value))))) - - (signature int - (parameters - (declare (in) uint value)) - ((return (expression int find_lsb (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) uvec2 value)) - ((return (expression ivec2 find_lsb (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) uvec3 value)) - ((return (expression ivec3 find_lsb (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) uvec4 value)) - ((return (expression ivec4 find_lsb (var_ref value))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/findMSB.ir b/dist/Mesa/src/glsl/builtins/ir/findMSB.ir deleted file mode 100644 index 24e270f5e..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/findMSB.ir +++ /dev/null @@ -1,41 +0,0 @@ -((function findMSB - (signature int - (parameters - (declare (in) int value)) - ((return (expression int find_msb (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 value)) - ((return (expression ivec2 find_msb (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 value)) - ((return (expression ivec3 find_msb (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 value)) - ((return (expression ivec4 find_msb (var_ref value))))) - - (signature int - (parameters - (declare (in) uint value)) - ((return (expression int find_msb (var_ref value))))) - - (signature ivec2 - (parameters - (declare (in) uvec2 value)) - ((return (expression ivec2 find_msb (var_ref value))))) - - (signature ivec3 - (parameters - (declare (in) uvec3 value)) - ((return (expression ivec3 find_msb (var_ref value))))) - - (signature ivec4 - (parameters - (declare (in) uvec4 value)) - ((return (expression ivec4 find_msb (var_ref value))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/floatBitsToInt.ir b/dist/Mesa/src/glsl/builtins/ir/floatBitsToInt.ir deleted file mode 100644 index a5db4b326..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/floatBitsToInt.ir +++ /dev/null @@ -1,21 +0,0 @@ -((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/dist/Mesa/src/glsl/builtins/ir/floatBitsToUint.ir b/dist/Mesa/src/glsl/builtins/ir/floatBitsToUint.ir deleted file mode 100644 index 09463bd9a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/floatBitsToUint.ir +++ /dev/null @@ -1,21 +0,0 @@ -((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/dist/Mesa/src/glsl/builtins/ir/floor.ir b/dist/Mesa/src/glsl/builtins/ir/floor.ir deleted file mode 100644 index 8dd805279..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/floor.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function floor - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float floor (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 floor (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 floor (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 floor (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/fract.ir b/dist/Mesa/src/glsl/builtins/ir/fract.ir deleted file mode 100644 index 3f0763d1b..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/fract.ir +++ /dev/null @@ -1,22 +0,0 @@ -((function fract - (signature float - (parameters - (declare (in) float x)) - ((return (expression float fract (var_ref x))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 fract (var_ref x))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 fract (var_ref x))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 fract (var_ref x))))) -)) - diff --git a/dist/Mesa/src/glsl/builtins/ir/ftransform.ir b/dist/Mesa/src/glsl/builtins/ir/ftransform.ir deleted file mode 100644 index 9ca63dc1e..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/ftransform.ir +++ /dev/null @@ -1,9 +0,0 @@ -((declare (uniform) mat4 gl_ModelViewProjectionMatrix) - (declare (in) vec4 gl_Vertex) - (function ftransform - (signature vec4 - (parameters) - ((return (expression vec4 * - (var_ref gl_ModelViewProjectionMatrix) - (var_ref gl_Vertex))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/fwidth.ir b/dist/Mesa/src/glsl/builtins/ir/fwidth.ir deleted file mode 100644 index 385e05d6a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/fwidth.ir +++ /dev/null @@ -1,29 +0,0 @@ -((function fwidth - (signature float - (parameters - (declare (in) float p)) - ((return (expression float + - (expression float abs (expression float dFdx (var_ref p))) - (expression float abs (expression float dFdy (var_ref p))))))) - - (signature vec2 - (parameters - (declare (in) vec2 p)) - ((return (expression vec2 + - (expression vec2 abs (expression vec2 dFdx (var_ref p))) - (expression vec2 abs (expression vec2 dFdy (var_ref p))))))) - - (signature vec3 - (parameters - (declare (in) vec3 p)) - ((return (expression vec3 + - (expression vec3 abs (expression vec3 dFdx (var_ref p))) - (expression vec3 abs (expression vec3 dFdy (var_ref p))))))) - - (signature vec4 - (parameters - (declare (in) vec4 p)) - ((return (expression vec4 + - (expression vec4 abs (expression vec4 dFdx (var_ref p))) - (expression vec4 abs (expression vec4 dFdy (var_ref p))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/greaterThan.ir b/dist/Mesa/src/glsl/builtins/ir/greaterThan.ir deleted file mode 100644 index 18af86528..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/greaterThan.ir +++ /dev/null @@ -1,55 +0,0 @@ -((function greaterThan - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 > (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 > (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/greaterThanEqual.ir b/dist/Mesa/src/glsl/builtins/ir/greaterThanEqual.ir deleted file mode 100644 index 6d3bc892c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/greaterThanEqual.ir +++ /dev/null @@ -1,55 +0,0 @@ -((function greaterThanEqual - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 >= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 >= (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/intBitsToFloat.ir b/dist/Mesa/src/glsl/builtins/ir/intBitsToFloat.ir deleted file mode 100644 index cc6aafe1a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/intBitsToFloat.ir +++ /dev/null @@ -1,21 +0,0 @@ -((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/dist/Mesa/src/glsl/builtins/ir/inversesqrt.ir b/dist/Mesa/src/glsl/builtins/ir/inversesqrt.ir deleted file mode 100644 index 5b66d2b36..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/inversesqrt.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function inversesqrt - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float rsq (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 rsq (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 rsq (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 rsq (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/isinf.ir b/dist/Mesa/src/glsl/builtins/ir/isinf.ir deleted file mode 100644 index 92922f6fa..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/isinf.ir +++ /dev/null @@ -1,17 +0,0 @@ -((function isinf - (signature bool - (parameters - (declare (in) float x)) - ((return (expression bool == (expression float abs (var_ref x)) (constant float (+INF)))))) - (signature bvec2 - (parameters - (declare (in) vec2 x)) - ((return (expression bvec2 == (expression vec2 abs (var_ref x)) (constant vec2 (+INF +INF)))))) - (signature bvec3 - (parameters - (declare (in) vec3 x)) - ((return (expression bvec3 == (expression vec3 abs (var_ref x)) (constant vec3 (+INF +INF +INF)))))) - (signature bvec4 - (parameters - (declare (in) vec4 x)) - ((return (expression bvec4 == (expression vec4 abs (var_ref x)) (constant vec4 (+INF +INF +INF +INF)))))))) diff --git a/dist/Mesa/src/glsl/builtins/ir/isnan.ir b/dist/Mesa/src/glsl/builtins/ir/isnan.ir deleted file mode 100644 index b67349f2a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/isnan.ir +++ /dev/null @@ -1,17 +0,0 @@ -((function isnan - (signature bool - (parameters - (declare (in) float x)) - ((return (expression bool != (var_ref x) (var_ref x))))) - (signature bvec2 - (parameters - (declare (in) vec2 x)) - ((return (expression bvec2 != (var_ref x) (var_ref x))))) - (signature bvec3 - (parameters - (declare (in) vec3 x)) - ((return (expression bvec3 != (var_ref x) (var_ref x))))) - (signature bvec4 - (parameters - (declare (in) vec4 x)) - ((return (expression bvec4 != (var_ref x) (var_ref x))))))) diff --git a/dist/Mesa/src/glsl/builtins/ir/length.ir b/dist/Mesa/src/glsl/builtins/ir/length.ir deleted file mode 100644 index b72334ee8..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/length.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function length - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float abs (var_ref arg0))))) - - (signature float - (parameters - (declare (in) vec2 arg0)) - ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) - - (signature float - (parameters - (declare (in) vec3 arg0)) - ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) - - (signature float - (parameters - (declare (in) vec4 arg0)) - ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/lessThan.ir b/dist/Mesa/src/glsl/builtins/ir/lessThan.ir deleted file mode 100644 index 8401fe9db..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/lessThan.ir +++ /dev/null @@ -1,55 +0,0 @@ -((function lessThan - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 < (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 < (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/lessThanEqual.ir b/dist/Mesa/src/glsl/builtins/ir/lessThanEqual.ir deleted file mode 100644 index c1cdd3fb6..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/lessThanEqual.ir +++ /dev/null @@ -1,55 +0,0 @@ -((function lessThanEqual - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 <= (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 <= (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/log.ir b/dist/Mesa/src/glsl/builtins/ir/log.ir deleted file mode 100644 index d168abb5a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/log.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function log - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float log (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 log (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 log (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 log (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/log2.ir b/dist/Mesa/src/glsl/builtins/ir/log2.ir deleted file mode 100644 index b96c6276f..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/log2.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function log2 - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float log2 (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 log2 (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 log2 (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 log2 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/matrixCompMult.ir b/dist/Mesa/src/glsl/builtins/ir/matrixCompMult.ir deleted file mode 100644 index 2400f11af..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/matrixCompMult.ir +++ /dev/null @@ -1,91 +0,0 @@ -((function matrixCompMult - (signature mat2 - (parameters - (declare (in) mat2 x) - (declare (in) mat2 y)) - ((declare () mat2 z) - (assign (xy) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xy) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) -(return (var_ref z)))) - - (signature mat3 - (parameters - (declare (in) mat3 x) - (declare (in) mat3 y)) - ((declare () mat3 z) - (assign (xyz) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyz) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xyz) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) -(return (var_ref z)))) - - (signature mat4 - (parameters - (declare (in) mat4 x) - (declare (in) mat4 y)) - ((declare () mat4 z) - (assign (xyzw) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (3))) (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) -(return (var_ref z)))) - - (signature mat2x3 - (parameters - (declare (in) mat2x3 x) - (declare (in) mat2x3 y)) - ((declare () mat2x3 z) - (assign (xyz) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyz) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) -(return (var_ref z)))) - - (signature mat3x2 - (parameters - (declare (in) mat3x2 x) - (declare (in) mat3x2 y)) - ((declare () mat3x2 z) - (assign (xy) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xy) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xy) (array_ref (var_ref z) (constant int (2))) (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) -(return (var_ref z)))) - - (signature mat2x4 - (parameters - (declare (in) mat2x4 x) - (declare (in) mat2x4 y)) - ((declare () mat2x4 z) - (assign (xyzw) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) -(return (var_ref z)))) - - (signature mat4x2 - (parameters - (declare (in) mat4x2 x) - (declare (in) mat4x2 y)) - ((declare () mat4x2 z) - (assign (xy) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xy) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xy) (array_ref (var_ref z) (constant int (2))) (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) - (assign (xy) (array_ref (var_ref z) (constant int (3))) (expression vec2 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) -(return (var_ref z)))) - - (signature mat3x4 - (parameters - (declare (in) mat3x4 x) - (declare (in) mat3x4 y)) - ((declare () mat3x4 z) - (assign (xyzw) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xyzw) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) -(return (var_ref z)))) - - (signature mat4x3 - (parameters - (declare (in) mat4x3 x) - (declare (in) mat4x3 y)) - ((declare () mat4x3 z) - (assign (xyz) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) - (assign (xyz) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) - (assign (xyz) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) - (assign (xyz) (array_ref (var_ref z) (constant int (3))) (expression vec3 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) -(return (var_ref z)))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/max.ir b/dist/Mesa/src/glsl/builtins/ir/max.ir deleted file mode 100644 index 2b5a02868..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/max.ir +++ /dev/null @@ -1,127 +0,0 @@ -((function max - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1)) - ((return (expression float max (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression vec2 max (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression vec3 max (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression vec4 max (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) float arg1)) - ((return (expression vec2 max (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) float arg1)) - ((return (expression vec3 max (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) float arg1)) - ((return (expression vec4 max (var_ref arg0) (var_ref arg1))))) - - (signature int - (parameters - (declare (in) int arg0) - (declare (in) int arg1)) - ((return (expression int max (var_ref arg0) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression ivec2 max (var_ref arg0) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression ivec3 max (var_ref arg0) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression ivec4 max (var_ref arg0) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) int arg1)) - ((return (expression ivec2 max (var_ref arg0) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) int arg1)) - ((return (expression ivec3 max (var_ref arg0) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) int arg1)) - ((return (expression ivec4 max (var_ref arg0) (var_ref arg1))))) - - (signature uint - (parameters - (declare (in) uint arg0) - (declare (in) uint arg1)) - ((return (expression uint max (var_ref arg0) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression uvec2 max (var_ref arg0) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression uvec3 max (var_ref arg0) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression uvec4 max (var_ref arg0) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uint arg1)) - ((return (expression uvec2 max (var_ref arg0) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uint arg1)) - ((return (expression uvec3 max (var_ref arg0) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uint arg1)) - ((return (expression uvec4 max (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/min.ir b/dist/Mesa/src/glsl/builtins/ir/min.ir deleted file mode 100644 index 2deef1118..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/min.ir +++ /dev/null @@ -1,127 +0,0 @@ -((function min - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1)) - ((return (expression float min (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression vec2 min (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression vec3 min (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression vec4 min (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) float arg1)) - ((return (expression vec2 min (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) float arg1)) - ((return (expression vec3 min (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) float arg1)) - ((return (expression vec4 min (var_ref arg0) (var_ref arg1))))) - - (signature int - (parameters - (declare (in) int arg0) - (declare (in) int arg1)) - ((return (expression int min (var_ref arg0) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression ivec2 min (var_ref arg0) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression ivec3 min (var_ref arg0) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression ivec4 min (var_ref arg0) (var_ref arg1))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) int arg1)) - ((return (expression ivec2 min (var_ref arg0) (var_ref arg1))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) int arg1)) - ((return (expression ivec3 min (var_ref arg0) (var_ref arg1))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) int arg1)) - ((return (expression ivec4 min (var_ref arg0) (var_ref arg1))))) - - (signature uint - (parameters - (declare (in) uint arg0) - (declare (in) uint arg1)) - ((return (expression uint min (var_ref arg0) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression uvec2 min (var_ref arg0) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression uvec3 min (var_ref arg0) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression uvec4 min (var_ref arg0) (var_ref arg1))))) - - (signature uvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uint arg1)) - ((return (expression uvec2 min (var_ref arg0) (var_ref arg1))))) - - (signature uvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uint arg1)) - ((return (expression uvec3 min (var_ref arg0) (var_ref arg1))))) - - (signature uvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uint arg1)) - ((return (expression uvec4 min (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/mix.ir b/dist/Mesa/src/glsl/builtins/ir/mix.ir deleted file mode 100644 index e66653211..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/mix.ir +++ /dev/null @@ -1,88 +0,0 @@ -((function mix - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1) - (declare (in) float arg2)) - ((return (expression float lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1) - (declare (in) vec2 arg2)) - ((return (expression vec2 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1) - (declare (in) vec3 arg2)) - ((return (expression vec3 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1) - (declare (in) vec4 arg2)) - ((return (expression vec4 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1) - (declare (in) float arg2)) - ((return (expression vec2 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1) - (declare (in) float arg2)) - ((return (expression vec3 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1) - (declare (in) float arg2)) - ((return (expression vec4 lrp (var_ref arg0) (var_ref arg1) (var_ref arg2))))) - - (signature float - (parameters - (declare (in) float v1) - (declare (in) float v2) - (declare (in) bool a)) - ((assign (var_ref a) (x) (var_ref v1) (var_ref v2)) - (return (var_ref v1)))) - - (signature vec2 - (parameters - (declare (in) vec2 v1) - (declare (in) vec2 v2) - (declare (in) bvec2 a)) - ((assign (swiz x (var_ref a)) (x) (var_ref v1) (swiz x (var_ref v2))) - (assign (swiz y (var_ref a)) (y) (var_ref v1) (swiz y (var_ref v2))) - (return (var_ref v1)))) - - (signature vec3 - (parameters - (declare (in) vec3 v1) - (declare (in) vec3 v2) - (declare (in) bvec3 a)) - ((assign (swiz x (var_ref a)) (x) (var_ref v1) (swiz x (var_ref v2))) - (assign (swiz y (var_ref a)) (y) (var_ref v1) (swiz y (var_ref v2))) - (assign (swiz z (var_ref a)) (z) (var_ref v1) (swiz z (var_ref v2))) - (return (var_ref v1)))) - - (signature vec4 - (parameters - (declare (in) vec4 v1) - (declare (in) vec4 v2) - (declare (in) bvec4 a)) - ((assign (swiz x (var_ref a)) (x) (var_ref v1) (swiz x (var_ref v2))) - (assign (swiz y (var_ref a)) (y) (var_ref v1) (swiz y (var_ref v2))) - (assign (swiz z (var_ref a)) (z) (var_ref v1) (swiz z (var_ref v2))) - (assign (swiz w (var_ref a)) (w) (var_ref v1) (swiz w (var_ref v2))) - (return (var_ref v1)))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/mod.ir b/dist/Mesa/src/glsl/builtins/ir/mod.ir deleted file mode 100644 index aeaea240e..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/mod.ir +++ /dev/null @@ -1,43 +0,0 @@ -((function mod - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1)) - ((return (expression float % (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression vec2 % (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression vec3 % (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression vec4 % (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) float arg1)) - ((return (expression vec2 % (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) float arg1)) - ((return (expression vec3 % (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) float arg1)) - ((return (expression vec4 % (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/modf.ir b/dist/Mesa/src/glsl/builtins/ir/modf.ir deleted file mode 100644 index f4f631567..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/modf.ir +++ /dev/null @@ -1,37 +0,0 @@ -((function modf - (signature float - (parameters - (declare (in) float x) - (declare (out) float i)) - ((declare () float t) - (assign (x) (var_ref t) (expression float trunc (var_ref x))) - (assign (x) (var_ref i) (var_ref t)) - (return (expression float - (var_ref x) (var_ref t))))) - - (signature vec2 - (parameters - (declare (in) vec2 x) - (declare (out) vec2 i)) - ((declare () vec2 t) - (assign (xy) (var_ref t) (expression vec2 trunc (var_ref x))) - (assign (xy) (var_ref i) (var_ref t)) - (return (expression vec2 - (var_ref x) (var_ref t))))) - - (signature vec3 - (parameters - (declare (in) vec3 x) - (declare (out) vec3 i)) - ((declare () vec3 t) - (assign (xyz) (var_ref t) (expression vec3 trunc (var_ref x))) - (assign (xyz) (var_ref i) (var_ref t)) - (return (expression vec3 - (var_ref x) (var_ref t))))) - - (signature vec4 - (parameters - (declare (in) vec4 x) - (declare (out) vec4 i)) - ((declare () vec4 t) - (assign (xyzw) (var_ref t) (expression vec4 trunc (var_ref x))) - (assign (xyzw) (var_ref i) (var_ref t)) - (return (expression vec4 - (var_ref x) (var_ref t))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/noise1.ir b/dist/Mesa/src/glsl/builtins/ir/noise1.ir deleted file mode 100644 index 115505610..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/noise1.ir +++ /dev/null @@ -1,18 +0,0 @@ -((function noise1 - (signature float - (parameters - (declare (in) float x)) - ((return (expression float noise (var_ref x))))) - (signature float - (parameters - (declare (in) vec2 x)) - ((return (expression float noise (var_ref x))))) - (signature float - (parameters - (declare (in) vec3 x)) - ((return (expression float noise (var_ref x))))) - (signature float - (parameters - (declare (in) vec4 x)) - ((return (expression float noise (var_ref x))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/noise2.ir b/dist/Mesa/src/glsl/builtins/ir/noise2.ir deleted file mode 100644 index d3366145f..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/noise2.ir +++ /dev/null @@ -1,61 +0,0 @@ -((function noise2 - (signature vec2 - (parameters (declare (in) vec4 p)) - ( - (declare () float a) - (declare () float b) - (declare () vec2 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0))))) - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (return (var_ref t)) - )) - - (signature vec2 - (parameters (declare (in) vec3 p)) - ( - (declare () float a) - (declare () float b) - (declare () vec2 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0))))) - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (return (var_ref t)) - )) - - (signature vec2 - (parameters - (declare (in ) vec2 p) - ) - ( - (declare () float a) - (declare () float b) - (declare () vec2 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0))))) - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (return (var_ref t)) - )) - - (signature vec2 - (parameters - (declare (in ) float p) - ) - ( - (declare () float a) - (declare () float b) - (declare () vec2 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0))))) - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (return (var_ref t)) - )) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/noise3.ir b/dist/Mesa/src/glsl/builtins/ir/noise3.ir deleted file mode 100644 index 1d8aa3f30..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/noise3.ir +++ /dev/null @@ -1,73 +0,0 @@ -((function noise3 - (signature vec3 - (parameters (declare (in) vec4 p)) - ( - (declare () float a) - (declare () float b) - (declare () float c) - (declare () vec3 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0))))) - (assign (x) (var_ref c) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (1559.0 113.0 1861.0 797.0))))) - - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (assign (z) (var_ref t) (var_ref c)) - (return (var_ref t)) - )) - - (signature vec3 - (parameters (declare (in) vec3 p)) - ( - (declare () float a) - (declare () float b) - (declare () float c) - (declare () vec3 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0))))) - (assign (x) (var_ref c) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (1559.0 113.0 1861.0))))) - - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (assign (z) (var_ref t) (var_ref c)) - (return (var_ref t)) - )) - - (signature vec3 - (parameters (declare (in) vec2 p)) - ( - (declare () float a) - (declare () float b) - (declare () float c) - (declare () vec3 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0))))) - (assign (x) (var_ref c) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (1559.0 113.0))))) - - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (assign (z) (var_ref t) (var_ref c)) - (return (var_ref t)) - )) - - (signature vec3 - (parameters (declare (in) float p)) - ( - (declare () float a) - (declare () float b) - (declare () float c) - (declare () vec3 t) - - (assign (x) (var_ref a) (expression float noise (var_ref p))) - (assign (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0))))) - (assign (x) (var_ref c) (expression float noise (expression float + (var_ref p) (constant float (1559.0))))) - - (assign (x) (var_ref t) (var_ref a)) - (assign (y) (var_ref t) (var_ref b)) - (assign (z) (var_ref t) (var_ref c)) - (return (var_ref t)) - )) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/noise4.ir b/dist/Mesa/src/glsl/builtins/ir/noise4.ir deleted file mode 100644 index 494969654..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/noise4.ir +++ /dev/null @@ -1,97 +0,0 @@ -((function noise4 - (signature vec4 - (parameters (declare (in) vec4 p)) - ( - (declare () float _x) - (declare () float _y) - (declare () float _z) - (declare () float _w) - (declare () vec4 _r) - - (declare () vec4 _p) - (assign (xyzw) (var_ref _p) (expression vec4 + (var_ref p) (constant vec4 (1559.0 113.0 1861.0 797.0))) ) - - (assign (x) (var_ref _x) (expression float noise(var_ref p))) - (assign (x) (var_ref _y) (expression float noise(expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0))))) - (assign (x) (var_ref _z) (expression float noise(var_ref _p))) - (assign (x) (var_ref _w) (expression float noise(expression vec4 + (var_ref _p) (constant vec4 (601.0 313.0 29.0 277.0))))) - - (assign (x) (var_ref _r) (var_ref _x)) - (assign (y) (var_ref _r) (var_ref _y)) - (assign (z) (var_ref _r) (var_ref _z)) - (assign (w) (var_ref _r) (var_ref _w)) - (return (var_ref _r)) - )) - - (signature vec4 - (parameters (declare (in) vec3 p)) - ( - (declare () float _x) - (declare () float _y) - (declare () float _z) - (declare () float _w) - (declare () vec4 _r) - - (declare () vec3 _p) - (assign (xyz) (var_ref _p) (expression vec3 + (var_ref p) (constant vec3 (1559.0 113.0 1861.0))) ) - - (assign (x) (var_ref _x) (expression float noise(var_ref p))) - (assign (x) (var_ref _y) (expression float noise(expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0))))) - (assign (x) (var_ref _z) (expression float noise(var_ref _p))) - (assign (x) (var_ref _w) (expression float noise(expression vec3 + (var_ref _p) (constant vec3 (601.0 313.0 29.0))))) - - (assign (x) (var_ref _r) (var_ref _x)) - (assign (y) (var_ref _r) (var_ref _y)) - (assign (z) (var_ref _r) (var_ref _z)) - (assign (w) (var_ref _r) (var_ref _w)) - (return (var_ref _r)) - )) - - (signature vec4 - (parameters (declare (in) vec2 p)) - ( - (declare () float _x) - (declare () float _y) - (declare () float _z) - (declare () float _w) - (declare () vec4 _r) - - (declare () vec2 _p) - (assign (xy) (var_ref _p) (expression vec2 + (var_ref p) (constant vec2 (1559.0 113.0))) ) - - (assign (x) (var_ref _x) (expression float noise(var_ref p))) - (assign (x) (var_ref _y) (expression float noise(expression vec2 + (var_ref p) (constant vec2 (601.0 313.0))))) - (assign (x) (var_ref _z) (expression float noise(var_ref _p))) - (assign (x) (var_ref _w) (expression float noise(expression vec2 + (var_ref _p) (constant vec2 (601.0 313.0))))) - - (assign (x) (var_ref _r) (var_ref _x)) - (assign (y) (var_ref _r) (var_ref _y)) - (assign (z) (var_ref _r) (var_ref _z)) - (assign (w) (var_ref _r) (var_ref _w)) - (return (var_ref _r)) - )) - - (signature vec4 - (parameters (declare (in) float p)) - ( - (declare () float _x) - (declare () float _y) - (declare () float _z) - (declare () float _w) - (declare () vec4 _r) - - (declare () float _p) - (assign (x) (var_ref _p) (expression float + (var_ref p) (constant float (1559.0))) ) - - (assign (x) (var_ref _x) (expression float noise(var_ref p))) - (assign (x) (var_ref _y) (expression float noise(expression float + (var_ref p) (constant float (601.0))))) - (assign (x) (var_ref _z) (expression float noise(var_ref _p))) - (assign (x) (var_ref _w) (expression float noise(expression float + (var_ref _p) (constant float (601.0))))) - - (assign (x) (var_ref _r) (var_ref _x)) - (assign (y) (var_ref _r) (var_ref _y)) - (assign (z) (var_ref _r) (var_ref _z)) - (assign (w) (var_ref _r) (var_ref _w)) - (return (var_ref _r)) - )) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/normalize.ir b/dist/Mesa/src/glsl/builtins/ir/normalize.ir deleted file mode 100644 index 0de0db0b6..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/normalize.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function normalize - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float sign (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/not.ir b/dist/Mesa/src/glsl/builtins/ir/not.ir deleted file mode 100644 index b696b0655..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/not.ir +++ /dev/null @@ -1,16 +0,0 @@ -((function not - (signature bvec2 - (parameters - (declare (in) bvec2 arg0)) - ((return (expression bvec2 ! (var_ref arg0))))) - - (signature bvec3 - (parameters - (declare (in) bvec3 arg0)) - ((return (expression bvec3 ! (var_ref arg0))))) - - (signature bvec4 - (parameters - (declare (in) bvec4 arg0)) - ((return (expression bvec4 ! (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/notEqual.ir b/dist/Mesa/src/glsl/builtins/ir/notEqual.ir deleted file mode 100644 index abaf1914c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/notEqual.ir +++ /dev/null @@ -1,73 +0,0 @@ -((function notEqual - (signature bvec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression bvec2 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression bvec3 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression bvec4 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) bvec2 arg0) - (declare (in) bvec2 arg1)) - ((return (expression bvec2 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) bvec3 arg0) - (declare (in) bvec3 arg1)) - ((return (expression bvec3 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) bvec4 arg0) - (declare (in) bvec4 arg1)) - ((return (expression bvec4 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) ivec2 arg0) - (declare (in) ivec2 arg1)) - ((return (expression bvec2 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) ivec3 arg0) - (declare (in) ivec3 arg1)) - ((return (expression bvec3 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) ivec4 arg0) - (declare (in) ivec4 arg1)) - ((return (expression bvec4 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec2 - (parameters - (declare (in) uvec2 arg0) - (declare (in) uvec2 arg1)) - ((return (expression bvec2 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec3 - (parameters - (declare (in) uvec3 arg0) - (declare (in) uvec3 arg1)) - ((return (expression bvec3 != (var_ref arg0) (var_ref arg1))))) - - (signature bvec4 - (parameters - (declare (in) uvec4 arg0) - (declare (in) uvec4 arg1)) - ((return (expression bvec4 != (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/outerProduct.ir b/dist/Mesa/src/glsl/builtins/ir/outerProduct.ir deleted file mode 100644 index 0e3f375bb..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/outerProduct.ir +++ /dev/null @@ -1,92 +0,0 @@ -((function outerProduct - (signature mat2 - (parameters - (declare (in) vec2 u) - (declare (in) vec2 v)) - ((declare () mat2 m) - (assign (xy) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v)))) - (return (var_ref m)))) - - (signature mat2x3 - (parameters - (declare (in) vec3 u) - (declare (in) vec2 v)) - ((declare () mat2x3 m) - (assign (xyz) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v)))) - (return (var_ref m)))) - - (signature mat2x4 - (parameters - (declare (in) vec4 u) - (declare (in) vec2 v)) - ((declare () mat2x4 m) - (assign (xyzw) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v)))) - (return (var_ref m)))) - - (signature mat3x2 - (parameters - (declare (in) vec2 u) - (declare (in) vec3 v)) - ((declare () mat3x2 m) - (assign (xy) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref u) (swiz z (var_ref v)))) - (return (var_ref m)) - )) - - (signature mat3 - (parameters - (declare (in) vec3 u) - (declare (in) vec3 v)) - ((declare () mat3 m) - (assign (xyz) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref u) (swiz z (var_ref v)))) - (return (var_ref m)))) - - (signature mat3x4 - (parameters - (declare (in) vec4 u) - (declare (in) vec3 v)) - ((declare () mat3x4 m) - (assign (xyzw) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref u) (swiz z (var_ref v)))) - (return (var_ref m)))) - - (signature mat4x2 - (parameters - (declare (in) vec2 u) - (declare (in) vec4 v)) - ((declare () mat4x2 m) - (assign (xy) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref u) (swiz z (var_ref v)))) - (assign (xy) (array_ref (var_ref m) (constant int (3))) (expression vec2 * (var_ref u) (swiz w (var_ref v)))) - (return (var_ref m)))) - - (signature mat4x3 - (parameters - (declare (in) vec3 u) - (declare (in) vec4 v)) - ((declare () mat4x3 m) - (assign (xyz) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref u) (swiz z (var_ref v)))) - (assign (xyz) (array_ref (var_ref m) (constant int (3))) (expression vec3 * (var_ref u) (swiz w (var_ref v)))) - (return (var_ref m)))) - - (signature mat4 - (parameters - (declare (in) vec4 u) - (declare (in) vec4 v)) - ((declare () mat4 m) - (assign (xyzw) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref u) (swiz z (var_ref v)))) - (assign (xyzw) (array_ref (var_ref m) (constant int (3))) (expression vec4 * (var_ref u) (swiz w (var_ref v)))) - (return (var_ref m)))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/packHalf2x16.ir b/dist/Mesa/src/glsl/builtins/ir/packHalf2x16.ir deleted file mode 100644 index 2f8540715..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/packHalf2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function packHalf2x16 - (signature uint - (parameters - (declare (in) vec2 arg0)) - ((return (expression uint packHalf2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/packSnorm2x16.ir b/dist/Mesa/src/glsl/builtins/ir/packSnorm2x16.ir deleted file mode 100644 index b4575d2da..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/packSnorm2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function packSnorm2x16 - (signature uint - (parameters - (declare (in) vec2 arg0)) - ((return (expression uint packSnorm2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/packSnorm4x8.ir b/dist/Mesa/src/glsl/builtins/ir/packSnorm4x8.ir deleted file mode 100644 index a153aa9b3..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/packSnorm4x8.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function packSnorm4x8 - (signature uint - (parameters - (declare (in) vec4 arg0)) - ((return (expression uint packSnorm4x8 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/packUnorm2x16.ir b/dist/Mesa/src/glsl/builtins/ir/packUnorm2x16.ir deleted file mode 100644 index c809f2d70..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/packUnorm2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function packUnorm2x16 - (signature uint - (parameters - (declare (in) vec2 arg0)) - ((return (expression uint packUnorm2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/packUnorm4x8.ir b/dist/Mesa/src/glsl/builtins/ir/packUnorm4x8.ir deleted file mode 100644 index 3a8e46cb8..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/packUnorm4x8.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function packUnorm4x8 - (signature uint - (parameters - (declare (in) vec4 arg0)) - ((return (expression uint packUnorm4x8 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/pow.ir b/dist/Mesa/src/glsl/builtins/ir/pow.ir deleted file mode 100644 index a61bc4418..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/pow.ir +++ /dev/null @@ -1,25 +0,0 @@ -((function pow - (signature float - (parameters - (declare (in) float arg0) - (declare (in) float arg1)) - ((return (expression float pow (var_ref arg0) (var_ref arg1))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0) - (declare (in) vec2 arg1)) - ((return (expression vec2 pow (var_ref arg0) (var_ref arg1))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression vec3 pow (var_ref arg0) (var_ref arg1))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0) - (declare (in) vec4 arg1)) - ((return (expression vec4 pow (var_ref arg0) (var_ref arg1))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/radians.ir b/dist/Mesa/src/glsl/builtins/ir/radians.ir deleted file mode 100644 index a419101cf..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/radians.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function radians - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float * (var_ref arg0) (constant float (0.0174532925)))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 * (var_ref arg0) (constant float (0.0174532925)))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 * (var_ref arg0) (constant float (0.0174532925)))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 * (var_ref arg0) (constant float (0.0174532925)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/reflect.ir b/dist/Mesa/src/glsl/builtins/ir/reflect.ir deleted file mode 100644 index 1fa394e3c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/reflect.ir +++ /dev/null @@ -1,58 +0,0 @@ -((function reflect - (signature float - (parameters - (declare (in) float i) - (declare (in) float n)) - ((return (expression float - - (var_ref i) - (expression float * - (constant float (2.0)) - (expression float * - (expression float * - (var_ref n) - (var_ref i)) - (var_ref n))))))) - - (signature vec2 - (parameters - (declare (in) vec2 i) - (declare (in) vec2 n)) - ((return (expression vec2 - - (var_ref i) - (expression vec2 * - (constant float (2.0)) - (expression vec2 * - (expression float dot - (var_ref n) - (var_ref i)) - (var_ref n))))))) - - (signature vec3 - (parameters - (declare (in) vec3 i) - (declare (in) vec3 n)) - ((return (expression vec3 - - (var_ref i) - (expression vec3 * - (constant float (2.0)) - (expression vec3 * - (expression float dot - (var_ref n) - (var_ref i)) - (var_ref n))))))) - - (signature vec4 - (parameters - (declare (in) vec4 i) - (declare (in) vec4 n)) - ((return (expression vec4 - - (var_ref i) - (expression vec4 * - (constant float (2.0)) - (expression vec4 * - (expression float dot - (var_ref n) - (var_ref i)) - (var_ref n))))))) - -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/refract.ir b/dist/Mesa/src/glsl/builtins/ir/refract.ir deleted file mode 100644 index 60899f01c..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/refract.ir +++ /dev/null @@ -1,102 +0,0 @@ -((function refract - (signature float - (parameters - (declare (in) float i) - (declare (in) float n) - (declare (in) float eta)) - ((declare () float k) - (assign (x) (var_ref k) - (expression float - (constant float (1.0)) - (expression float * (var_ref eta) - (expression float * (var_ref eta) - (expression float - (constant float (1.0)) - (expression float * - (expression float * (var_ref n) (var_ref i)) - (expression float * (var_ref n) (var_ref i)))))))) - (if (expression bool < (var_ref k) (constant float (0.0))) - ((return (constant float (0.0)))) - ((return (expression float - - (expression float * (var_ref eta) (var_ref i)) - (expression float * - (expression float + - (expression float * (var_ref eta) - (expression float * (var_ref n) (var_ref i))) - (expression float sqrt (var_ref k))) - (var_ref n)))))))) - - (signature vec2 - (parameters - (declare (in) vec2 i) - (declare (in) vec2 n) - (declare (in) float eta)) - ((declare () float k) - (assign (x) (var_ref k) - (expression float - (constant float (1.0)) - (expression float * (var_ref eta) - (expression float * (var_ref eta) - (expression float - (constant float (1.0)) - (expression float * - (expression float dot (var_ref n) (var_ref i)) - (expression float dot (var_ref n) (var_ref i)))))))) - (if (expression bool < (var_ref k) (constant float (0.0))) - ((return (constant vec2 (0.0 0.0)))) - ((return (expression vec2 - - (expression vec2 * (var_ref eta) (var_ref i)) - (expression vec2 * - (expression float + - (expression float * (var_ref eta) - (expression float dot (var_ref n) (var_ref i))) - (expression float sqrt (var_ref k))) - (var_ref n)))))))) - - (signature vec3 - (parameters - (declare (in) vec3 i) - (declare (in) vec3 n) - (declare (in) float eta)) - ((declare () float k) - (assign (x) (var_ref k) - (expression float - (constant float (1.0)) - (expression float * (var_ref eta) - (expression float * (var_ref eta) - (expression float - (constant float (1.0)) - (expression float * - (expression float dot (var_ref n) (var_ref i)) - (expression float dot (var_ref n) (var_ref i)))))))) - (if (expression bool < (var_ref k) (constant float (0.0))) - ((return (constant vec3 (0.0 0.0 0.0)))) - ((return (expression vec3 - - (expression vec3 * (var_ref eta) (var_ref i)) - (expression vec3 * - (expression float + - (expression float * (var_ref eta) - (expression float dot (var_ref n) (var_ref i))) - (expression float sqrt (var_ref k))) - (var_ref n)))))))) - - (signature vec4 - (parameters - (declare (in) vec4 i) - (declare (in) vec4 n) - (declare (in) float eta)) - ((declare () float k) - (assign (x) (var_ref k) - (expression float - (constant float (1.0)) - (expression float * (var_ref eta) - (expression float * (var_ref eta) - (expression float - (constant float (1.0)) - (expression float * - (expression float dot (var_ref n) (var_ref i)) - (expression float dot (var_ref n) (var_ref i)))))))) - (if (expression bool < (var_ref k) (constant float (0.0))) - ((return (constant vec4 (0.0 0.0 0.0 0.0)))) - ((return (expression vec4 - - (expression vec4 * (var_ref eta) (var_ref i)) - (expression vec4 * - (expression float + - (expression float * (var_ref eta) - (expression float dot (var_ref n) (var_ref i))) - (expression float sqrt (var_ref k))) - (var_ref n)))))))) - -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/round.ir b/dist/Mesa/src/glsl/builtins/ir/round.ir deleted file mode 100644 index d0d425bd6..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/round.ir +++ /dev/null @@ -1,21 +0,0 @@ -((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))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/roundEven.ir b/dist/Mesa/src/glsl/builtins/ir/roundEven.ir deleted file mode 100644 index a9c99b6f4..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/roundEven.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function roundEven - (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))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/sign.ir b/dist/Mesa/src/glsl/builtins/ir/sign.ir deleted file mode 100644 index 1f51718da..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/sign.ir +++ /dev/null @@ -1,42 +0,0 @@ -((function sign - (signature float - (parameters - (declare (in) float x)) - ((return (expression float sign (var_ref x))))) - - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 sign (var_ref x))))) - - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 sign (var_ref x))))) - - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 sign (var_ref x))))) - - (signature int - (parameters - (declare (in) int x)) - ((return (expression int sign (var_ref x))))) - - (signature ivec2 - (parameters - (declare (in) ivec2 x)) - ((return (expression ivec2 sign (var_ref x))))) - - (signature ivec3 - (parameters - (declare (in) ivec3 x)) - ((return (expression ivec3 sign (var_ref x))))) - - (signature ivec4 - (parameters - (declare (in) ivec4 x)) - ((return (expression ivec4 sign (var_ref x))))) -)) - diff --git a/dist/Mesa/src/glsl/builtins/ir/sin.ir b/dist/Mesa/src/glsl/builtins/ir/sin.ir deleted file mode 100644 index e6009d8ef..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/sin.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function sin - (signature float - (parameters - (declare (in) float angle)) - ((return (expression float sin (var_ref angle))))) - - (signature vec2 - (parameters - (declare (in) vec2 angle)) - ((return (expression vec2 sin (var_ref angle))))) - - (signature vec3 - (parameters - (declare (in) vec3 angle)) - ((return (expression vec3 sin (var_ref angle))))) - - (signature vec4 - (parameters - (declare (in) vec4 angle)) - ((return (expression vec4 sin (var_ref angle))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/sinh.ir b/dist/Mesa/src/glsl/builtins/ir/sinh.ir deleted file mode 100644 index 31edd30e5..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/sinh.ir +++ /dev/null @@ -1,30 +0,0 @@ -((function sinh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float * (constant float (0.5)) - (expression float - - (expression float exp (var_ref x)) - (expression float exp (expression float neg (var_ref x)))))))) - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 * (constant float (0.5)) - (expression vec2 - - (expression vec2 exp (var_ref x)) - (expression vec2 exp (expression vec2 neg (var_ref x)))))))) - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 * (constant float (0.5)) - (expression vec3 - - (expression vec3 exp (var_ref x)) - (expression vec3 exp (expression vec3 neg (var_ref x)))))))) - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 * (constant float (0.5)) - (expression vec4 - - (expression vec4 exp (var_ref x)) - (expression vec4 exp (expression vec4 neg (var_ref x)))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/smoothstep.ir b/dist/Mesa/src/glsl/builtins/ir/smoothstep.ir deleted file mode 100644 index 94c98b29e..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/smoothstep.ir +++ /dev/null @@ -1,100 +0,0 @@ -((function smoothstep - (signature float - (parameters - (declare (in) float edge0) - (declare (in) float edge1) - (declare (in) float x)) - ((declare () float t) - (assign (x) (var_ref t) - (expression float max - (expression float min - (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression float * (var_ref t) (expression float * (var_ref t) (expression float - (constant float (3.0)) (expression float * (constant float (2.0)) (var_ref t)))))))) - (signature vec2 - (parameters - (declare (in) float edge0) - (declare (in) float edge1) - (declare (in) vec2 x)) - ((declare () vec2 t) - (assign (xy) (var_ref t) - (expression vec2 max - (expression vec2 min - (expression vec2 / (expression vec2 - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec2 * (var_ref t) (expression vec2 * (var_ref t) (expression vec2 - (constant float (3.0)) (expression vec2 * (constant float (2.0)) (var_ref t)))))))) - - (signature vec3 - (parameters - (declare (in) float edge0) - (declare (in) float edge1) - (declare (in) vec3 x)) - ((declare () vec3 t) - (assign (xyz) (var_ref t) - (expression vec3 max - (expression vec3 min - (expression vec3 / (expression vec3 - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec3 * (var_ref t) (expression vec3 * (var_ref t) (expression vec3 - (constant float (3.0)) (expression vec3 * (constant float (2.0)) (var_ref t)))))))) - - - (signature vec4 - (parameters - (declare (in) float edge0) - (declare (in) float edge1) - (declare (in) vec4 x)) - ((declare () vec4 t) - (assign (xyzw) (var_ref t) - (expression vec4 max - (expression vec4 min - (expression vec4 / (expression vec4 - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec4 * (var_ref t) (expression vec4 * (var_ref t) (expression vec4 - (constant float (3.0)) (expression vec4 * (constant float (2.0)) (var_ref t)))))))) - - (signature vec2 - (parameters - (declare (in) vec2 edge0) - (declare (in) vec2 edge1) - (declare (in) vec2 x)) - ((declare () vec2 t) - (assign (xy) (var_ref t) - (expression vec2 max - (expression vec2 min - (expression vec2 / (expression vec2 - (var_ref x) (var_ref edge0)) (expression vec2 - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec2 * (var_ref t) (expression vec2 * (var_ref t) (expression vec2 - (constant float (3.0)) (expression vec2 * (constant float (2.0)) (var_ref t)))))))) - - (signature vec3 - (parameters - (declare (in) vec3 edge0) - (declare (in) vec3 edge1) - (declare (in) vec3 x)) - ((declare () vec3 t) - (assign (xyz) (var_ref t) - (expression vec3 max - (expression vec3 min - (expression vec3 / (expression vec3 - (var_ref x) (var_ref edge0)) (expression vec3 - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec3 * (var_ref t) (expression vec3 * (var_ref t) (expression vec3 - (constant float (3.0)) (expression vec3 * (constant float (2.0)) (var_ref t)))))))) - - (signature vec4 - (parameters - (declare (in) vec4 edge0) - (declare (in) vec4 edge1) - (declare (in) vec4 x)) - ((declare () vec4 t) - (assign (xyzw) (var_ref t) - (expression vec4 max - (expression vec4 min - (expression vec4 / (expression vec4 - (var_ref x) (var_ref edge0)) (expression vec4 - (var_ref edge1) (var_ref edge0))) - (constant float (1.0))) - (constant float (0.0)))) - (return (expression vec4 * (var_ref t) (expression vec4 * (var_ref t) (expression vec4 - (constant float (3.0)) (expression vec4 * (constant float (2.0)) (var_ref t)))))))) -)) - diff --git a/dist/Mesa/src/glsl/builtins/ir/sqrt.ir b/dist/Mesa/src/glsl/builtins/ir/sqrt.ir deleted file mode 100644 index 0302d164a..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/sqrt.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function sqrt - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float sqrt (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 sqrt (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 sqrt (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 sqrt (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/step.ir b/dist/Mesa/src/glsl/builtins/ir/step.ir deleted file mode 100644 index efcd7bc80..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/step.ir +++ /dev/null @@ -1,68 +0,0 @@ -((function step - (signature float - (parameters - (declare (in) float edge) - (declare (in) float x)) - ((return (expression float b2f (expression bool >= (var_ref x) (var_ref edge)))))) - - (signature vec2 - (parameters - (declare (in) float edge) - (declare (in) vec2 x)) - ((declare () vec2 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge)))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge)))) - (return (var_ref t)))) - - (signature vec3 - (parameters - (declare (in) float edge) - (declare (in) vec3 x)) - ((declare () vec3 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge)))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge)))) - (assign (z) (var_ref t) (expression float b2f (expression bool >= (swiz z (var_ref x))(var_ref edge)))) - (return (var_ref t)))) - - (signature vec4 - (parameters - (declare (in) float edge) - (declare (in) vec4 x)) - ((declare () vec4 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge)))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge)))) - (assign (z) (var_ref t) (expression float b2f (expression bool >= (swiz z (var_ref x))(var_ref edge)))) - (assign (w) (var_ref t) (expression float b2f (expression bool >= (swiz w (var_ref x))(var_ref edge)))) - (return (var_ref t)))) - - (signature vec2 - (parameters - (declare (in) vec2 edge) - (declare (in) vec2 x)) - ((declare () vec2 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(swiz x (var_ref edge))))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(swiz y (var_ref edge))))) - (return (var_ref t)))) - - (signature vec3 - (parameters - (declare (in) vec3 edge) - (declare (in) vec3 x)) - ((declare () vec3 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(swiz x (var_ref edge))))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(swiz y (var_ref edge))))) - (assign (z) (var_ref t) (expression float b2f (expression bool >= (swiz z (var_ref x))(swiz z (var_ref edge))))) - (return (var_ref t)))) - - (signature vec4 - (parameters - (declare (in) vec4 edge) - (declare (in) vec4 x)) - ((declare () vec4 t) - (assign (x) (var_ref t) (expression float b2f (expression bool >= (swiz x (var_ref x))(swiz x (var_ref edge))))) - (assign (y) (var_ref t) (expression float b2f (expression bool >= (swiz y (var_ref x))(swiz y (var_ref edge))))) - (assign (z) (var_ref t) (expression float b2f (expression bool >= (swiz z (var_ref x))(swiz z (var_ref edge))))) - (assign (w) (var_ref t) (expression float b2f (expression bool >= (swiz w (var_ref x))(swiz w (var_ref edge))))) - (return (var_ref t)))) -)) - diff --git a/dist/Mesa/src/glsl/builtins/ir/tan.ir b/dist/Mesa/src/glsl/builtins/ir/tan.ir deleted file mode 100644 index 997986318..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/tan.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function tan - (signature float - (parameters - (declare (in) float angle)) - ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle)))))) - - (signature vec2 - (parameters - (declare (in) vec2 angle)) - ((return (expression vec2 / (expression vec2 sin (var_ref angle)) (expression vec2 cos (var_ref angle)))))) - - (signature vec3 - (parameters - (declare (in) vec3 angle)) - ((return (expression vec3 / (expression vec3 sin (var_ref angle)) (expression vec3 cos (var_ref angle)))))) - - (signature vec4 - (parameters - (declare (in) vec4 angle)) - ((return (expression vec4 / (expression vec4 sin (var_ref angle)) (expression vec4 cos (var_ref angle)))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/tanh.ir b/dist/Mesa/src/glsl/builtins/ir/tanh.ir deleted file mode 100644 index 3b7271bf7..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/tanh.ir +++ /dev/null @@ -1,42 +0,0 @@ -((function tanh - (signature float - (parameters - (declare (in) float x)) - ((return (expression float / - (expression float - - (expression float exp (var_ref x)) - (expression float exp (expression float neg (var_ref x)))) - (expression float + - (expression float exp (var_ref x)) - (expression float exp (expression float neg (var_ref x)))))))) - (signature vec2 - (parameters - (declare (in) vec2 x)) - ((return (expression vec2 / - (expression vec2 - - (expression vec2 exp (var_ref x)) - (expression vec2 exp (expression vec2 neg (var_ref x)))) - (expression vec2 + - (expression vec2 exp (var_ref x)) - (expression vec2 exp (expression vec2 neg (var_ref x)))))))) - (signature vec3 - (parameters - (declare (in) vec3 x)) - ((return (expression vec3 / - (expression vec3 - - (expression vec3 exp (var_ref x)) - (expression vec3 exp (expression vec3 neg (var_ref x)))) - (expression vec3 + - (expression vec3 exp (var_ref x)) - (expression vec3 exp (expression vec3 neg (var_ref x)))))))) - (signature vec4 - (parameters - (declare (in) vec4 x)) - ((return (expression vec4 / - (expression vec4 - - (expression vec4 exp (var_ref x)) - (expression vec4 exp (expression vec4 neg (var_ref x)))) - (expression vec4 + - (expression vec4 exp (var_ref x)) - (expression vec4 exp (expression vec4 neg (var_ref x)))))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/transpose.ir b/dist/Mesa/src/glsl/builtins/ir/transpose.ir deleted file mode 100644 index 043327d23..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/transpose.ir +++ /dev/null @@ -1,139 +0,0 @@ -((function transpose - (signature mat2 - (parameters - (declare (in) mat2 m)) - ((declare () mat2 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) -(return (var_ref t)))) - - (signature mat3x2 - (parameters - (declare (in) mat2x3 m)) - ((declare () mat3x2 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) -(return (var_ref t)))) - - (signature mat4x2 - (parameters - (declare (in) mat2x4 m)) - ((declare () mat4x2 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (1))))) -(return (var_ref t)))) - - (signature mat2x3 - (parameters - (declare (in) mat3x2 m)) - ((declare () mat2x3 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) -(return (var_ref t)))) - - (signature mat3 - (parameters - (declare (in) mat3 m)) - ((declare () mat3 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (2))))) -(return (var_ref t)))) - - (signature mat4x3 - (parameters - (declare (in) mat3x4 m)) - ((declare () mat4x3 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (2))))) -(return (var_ref t)))) - - (signature mat2x4 - (parameters - (declare (in) mat4x2 m)) - ((declare () mat2x4 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) - (assign (w) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (3))))) -(return (var_ref t)))) - - (signature mat3x4 - (parameters - (declare (in) mat4x3 m)) - ((declare () mat3x4 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (2))))) - (assign (w) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (3))))) -(return (var_ref t)))) - - (signature mat4 - (parameters - (declare (in) mat4 m)) - ((declare () mat4 t) - (assign (x) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (0))))) - (assign (x) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (0))))) - (assign (y) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (1))))) - (assign (y) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (1))))) - (assign (z) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (2))))) - (assign (z) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (2))))) - (assign (w) (array_ref (var_ref t) (constant int (0))) (swiz x (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (1))) (swiz y (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (2))) (swiz z (array_ref (var_ref m) (constant int (3))))) - (assign (w) (array_ref (var_ref t) (constant int (3))) (swiz w (array_ref (var_ref m) (constant int (3))))) -(return (var_ref t)))) -) - -) - diff --git a/dist/Mesa/src/glsl/builtins/ir/trunc.ir b/dist/Mesa/src/glsl/builtins/ir/trunc.ir deleted file mode 100644 index d320a2a77..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/trunc.ir +++ /dev/null @@ -1,21 +0,0 @@ -((function trunc - (signature float - (parameters - (declare (in) float arg0)) - ((return (expression float trunc (var_ref arg0))))) - - (signature vec2 - (parameters - (declare (in) vec2 arg0)) - ((return (expression vec2 trunc (var_ref arg0))))) - - (signature vec3 - (parameters - (declare (in) vec3 arg0)) - ((return (expression vec3 trunc (var_ref arg0))))) - - (signature vec4 - (parameters - (declare (in) vec4 arg0)) - ((return (expression vec4 trunc (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/uintBitsToFloat.ir b/dist/Mesa/src/glsl/builtins/ir/uintBitsToFloat.ir deleted file mode 100644 index 1073d7618..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/uintBitsToFloat.ir +++ /dev/null @@ -1,21 +0,0 @@ -((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/dist/Mesa/src/glsl/builtins/ir/unpackHalf2x16.ir b/dist/Mesa/src/glsl/builtins/ir/unpackHalf2x16.ir deleted file mode 100644 index f5b6fc237..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/unpackHalf2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function unpackHalf2x16 - (signature vec2 - (parameters - (declare (in) uint arg0)) - ((return (expression vec2 unpackHalf2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/unpackSnorm2x16.ir b/dist/Mesa/src/glsl/builtins/ir/unpackSnorm2x16.ir deleted file mode 100644 index 9092a0638..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/unpackSnorm2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function unpackSnorm2x16 - (signature vec2 - (parameters - (declare (in) uint arg0)) - ((return (expression vec2 unpackSnorm2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/unpackSnorm4x8.ir b/dist/Mesa/src/glsl/builtins/ir/unpackSnorm4x8.ir deleted file mode 100644 index 3c6ed4a6b..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/unpackSnorm4x8.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function unpackSnorm4x8 - (signature vec4 - (parameters - (declare (in) uint arg0)) - ((return (expression vec4 unpackSnorm4x8 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/unpackUnorm2x16.ir b/dist/Mesa/src/glsl/builtins/ir/unpackUnorm2x16.ir deleted file mode 100644 index 935dc8582..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/unpackUnorm2x16.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function unpackUnorm2x16 - (signature vec2 - (parameters - (declare (in) uint arg0)) - ((return (expression vec2 unpackUnorm2x16 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/ir/unpackUnorm4x8.ir b/dist/Mesa/src/glsl/builtins/ir/unpackUnorm4x8.ir deleted file mode 100644 index e1dfd7438..000000000 --- a/dist/Mesa/src/glsl/builtins/ir/unpackUnorm4x8.ir +++ /dev/null @@ -1,6 +0,0 @@ -((function unpackUnorm4x8 - (signature vec4 - (parameters - (declare (in) uint arg0)) - ((return (expression vec4 unpackUnorm4x8 (var_ref arg0))))) -)) diff --git a/dist/Mesa/src/glsl/builtins/profiles/100es.frag b/dist/Mesa/src/glsl/builtins/profiles/100es.frag deleted file mode 100644 index 28c4527a2..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/100es.frag +++ /dev/null @@ -1,8 +0,0 @@ -#version 100 -precision highp float; - -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); diff --git a/dist/Mesa/src/glsl/builtins/profiles/100es.glsl b/dist/Mesa/src/glsl/builtins/profiles/100es.glsl deleted file mode 100644 index 0d60a7f35..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/100es.glsl +++ /dev/null @@ -1,296 +0,0 @@ -#version 100 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); - -vec4 textureCube (samplerCube sampler, vec3 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/100es.vert b/dist/Mesa/src/glsl/builtins/profiles/100es.vert deleted file mode 100644 index 8f7ea61f7..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/100es.vert +++ /dev/null @@ -1,6 +0,0 @@ -#version 100 -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); diff --git a/dist/Mesa/src/glsl/builtins/profiles/110.frag b/dist/Mesa/src/glsl/builtins/profiles/110.frag deleted file mode 100644 index 25bc62c09..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/110.frag +++ /dev/null @@ -1,364 +0,0 @@ -#version 110 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1D (sampler1D sampler, float coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias); - - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/110.glsl b/dist/Mesa/src/glsl/builtins/profiles/110.glsl deleted file mode 100644 index 821978b7d..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/110.glsl +++ /dev/null @@ -1,332 +0,0 @@ -#version 110 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); - -vec4 textureCube (samplerCube sampler, vec3 coord); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/110.vert b/dist/Mesa/src/glsl/builtins/profiles/110.vert deleted file mode 100644 index 545e59c53..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/110.vert +++ /dev/null @@ -1,351 +0,0 @@ -#version 110 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -vec4 ftransform(); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); - -/* - * 8.8 - Fragment Processing Functions (none in vertex shader) - */ - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/120.frag b/dist/Mesa/src/glsl/builtins/profiles/120.frag deleted file mode 100644 index a207435f3..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/120.frag +++ /dev/null @@ -1,396 +0,0 @@ -#version 120 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1D (sampler1D sampler, float coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias); - - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/120.glsl b/dist/Mesa/src/glsl/builtins/profiles/120.glsl deleted file mode 100644 index c01d1dc71..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/120.glsl +++ /dev/null @@ -1,364 +0,0 @@ -#version 120 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); - -vec4 textureCube (samplerCube sampler, vec3 coord); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/120.vert b/dist/Mesa/src/glsl/builtins/profiles/120.vert deleted file mode 100644 index e14c93164..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/120.vert +++ /dev/null @@ -1,383 +0,0 @@ -#version 120 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -vec4 ftransform(); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); - -/* - * 8.8 - Fragment Processing Functions (none in vertex shader) - */ - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/130.frag b/dist/Mesa/src/glsl/builtins/profiles/130.frag deleted file mode 100644 index d0233b8a2..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/130.frag +++ /dev/null @@ -1,141 +0,0 @@ -#version 130 - -/* texture - bias variants */ - vec4 texture( sampler1D sampler, float P, float bias); -ivec4 texture(isampler1D sampler, float P, float bias); -uvec4 texture(usampler1D sampler, float P, float bias); - - vec4 texture( sampler2D sampler, vec2 P, float bias); -ivec4 texture(isampler2D sampler, vec2 P, float bias); -uvec4 texture(usampler2D sampler, vec2 P, float bias); - - vec4 texture( sampler3D sampler, vec3 P, float bias); -ivec4 texture(isampler3D sampler, vec3 P, float bias); -uvec4 texture(usampler3D sampler, vec3 P, float bias); - - vec4 texture( samplerCube sampler, vec3 P, float bias); -ivec4 texture(isamplerCube sampler, vec3 P, float bias); -uvec4 texture(usamplerCube sampler, vec3 P, float bias); - -float texture(sampler1DShadow sampler, vec3 P, float bias); -float texture(sampler2DShadow sampler, vec3 P, float bias); -float texture(samplerCubeShadow sampler, vec4 P, float bias); - - vec4 texture( sampler1DArray sampler, vec2 P, float bias); -ivec4 texture(isampler1DArray sampler, vec2 P, float bias); -uvec4 texture(usampler1DArray sampler, vec2 P, float bias); - - vec4 texture( sampler2DArray sampler, vec3 P, float bias); -ivec4 texture(isampler2DArray sampler, vec3 P, float bias); -uvec4 texture(usampler2DArray sampler, vec3 P, float bias); - -float texture(sampler1DArrayShadow sampler, vec3 P, float bias); - -/* textureProj - bias variants */ - vec4 textureProj( sampler1D sampler, vec2 P, float bias); -ivec4 textureProj(isampler1D sampler, vec2 P, float bias); -uvec4 textureProj(usampler1D sampler, vec2 P, float bias); - vec4 textureProj( sampler1D sampler, vec4 P, float bias); -ivec4 textureProj(isampler1D sampler, vec4 P, float bias); -uvec4 textureProj(usampler1D sampler, vec4 P, float bias); - - vec4 textureProj( sampler2D sampler, vec3 P, float bias); -ivec4 textureProj(isampler2D sampler, vec3 P, float bias); -uvec4 textureProj(usampler2D sampler, vec3 P, float bias); - vec4 textureProj( sampler2D sampler, vec4 P, float bias); -ivec4 textureProj(isampler2D sampler, vec4 P, float bias); -uvec4 textureProj(usampler2D sampler, vec4 P, float bias); - - vec4 textureProj( sampler3D sampler, vec4 P, float bias); -ivec4 textureProj(isampler3D sampler, vec4 P, float bias); -uvec4 textureProj(usampler3D sampler, vec4 P, float bias); - -float textureProj(sampler1DShadow sampler, vec4 P, float bias); -float textureProj(sampler2DShadow sampler, vec4 P, float bias); - -/* textureOffset - bias variants */ - vec4 textureOffset( sampler1D sampler, float P, int offset, float bias); -ivec4 textureOffset(isampler1D sampler, float P, int offset, float bias); -uvec4 textureOffset(usampler1D sampler, float P, int offset, float bias); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset, float bias); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset, float bias); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset, float bias); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset, float bias); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset, float bias); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset, float bias); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset, float bias); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset, float bias); - -float textureOffset(sampler1DArrayShadow samp, vec3 P, int offset, float bias); - -/* textureProjOffsetOffset - bias variants */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset, float bias); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset, float bias); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset, float bias); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset, float bias); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset, float bias); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset, float bias); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset, float bias); - -float textureProjOffset(sampler1DShadow s, vec4 P, int offset, float bias); -float textureProjOffset(sampler2DShadow s, vec4 P, ivec2 offset, float bias); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias); - -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias); - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/130.glsl b/dist/Mesa/src/glsl/builtins/profiles/130.glsl deleted file mode 100644 index 15f973b17..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/130.glsl +++ /dev/null @@ -1,904 +0,0 @@ -#version 130 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -float sinh(float x); -vec2 sinh(vec2 x); -vec3 sinh(vec3 x); -vec4 sinh(vec4 x); - -float cosh(float x); -vec2 cosh(vec2 x); -vec3 cosh(vec3 x); -vec4 cosh(vec4 x); - -float tanh(float x); -vec2 tanh(vec2 x); -vec3 tanh(vec3 x); -vec4 tanh(vec4 x); - -float asinh(float x); -vec2 asinh(vec2 x); -vec3 asinh(vec3 x); -vec4 asinh(vec4 x); - -float acosh(float x); -vec2 acosh(vec2 x); -vec3 acosh(vec3 x); -vec4 acosh(vec4 x); - -float atanh(float x); -vec2 atanh(vec2 x); -vec3 atanh(vec3 x); -vec4 atanh(vec4 x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); -int abs(int x); -ivec2 abs(ivec2 x); -ivec3 abs(ivec3 x); -ivec4 abs(ivec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); -int sign(int x); -ivec2 sign(ivec2 x); -ivec3 sign(ivec3 x); -ivec4 sign(ivec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float trunc(float x); -vec2 trunc(vec2 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); -vec4 roundEven(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float modf(float x, out float i); -vec2 modf(vec2 x, out vec2 i); -vec3 modf(vec3 x, out vec3 i); -vec4 modf(vec4 x, out vec4 i); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -int min(int x, int y); -ivec2 min(ivec2 x, ivec2 y); -ivec3 min(ivec3 x, ivec3 y); -ivec4 min(ivec4 x, ivec4 y); - -ivec2 min(ivec2 x, int y); -ivec3 min(ivec3 x, int y); -ivec4 min(ivec4 x, int y); - -uint min(uint x, uint y); -uvec2 min(uvec2 x, uvec2 y); -uvec3 min(uvec3 x, uvec3 y); -uvec4 min(uvec4 x, uvec4 y); - -uvec2 min(uvec2 x, uint y); -uvec3 min(uvec3 x, uint y); -uvec4 min(uvec4 x, uint y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -int max(int x, int y); -ivec2 max(ivec2 x, ivec2 y); -ivec3 max(ivec3 x, ivec3 y); -ivec4 max(ivec4 x, ivec4 y); - -ivec2 max(ivec2 x, int y); -ivec3 max(ivec3 x, int y); -ivec4 max(ivec4 x, int y); - -uint max(uint x, uint y); -uvec2 max(uvec2 x, uvec2 y); -uvec3 max(uvec3 x, uvec3 y); -uvec4 max(uvec4 x, uvec4 y); - -uvec2 max(uvec2 x, uint y); -uvec3 max(uvec3 x, uint y); -uvec4 max(uvec4 x, uint y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -int clamp(int x, int minVal, int maxVal); -ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal); -ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal); -ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal); - -ivec2 clamp(ivec2 x, int minVal, int maxVal); -ivec3 clamp(ivec3 x, int minVal, int maxVal); -ivec4 clamp(ivec4 x, int minVal, int maxVal); - -uint clamp(uint x, uint minVal, uint maxVal); -uvec2 clamp(uvec2 x, uvec2 minVal, uvec2 maxVal); -uvec3 clamp(uvec3 x, uvec3 minVal, uvec3 maxVal); -uvec4 clamp(uvec4 x, uvec4 minVal, uvec4 maxVal); - -uvec2 clamp(uvec2 x, uint minVal, uint maxVal); -uvec3 clamp(uvec3 x, uint minVal, uint maxVal); -uvec4 clamp(uvec4 x, uint minVal, uint maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float mix(float x, float y, bool a); -vec2 mix(vec2 x, vec2 y, bvec2 a); -vec3 mix(vec3 x, vec3 y, bvec3 a); -vec4 mix(vec4 x, vec4 y, bvec4 a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -bool isnan(float x); -bvec2 isnan(vec2 x); -bvec3 isnan(vec3 x); -bvec4 isnan(vec4 x); - -bool isinf(float x); -bvec2 isinf(vec2 x); -bvec3 isinf(vec3 x); -bvec4 isinf(vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); -bvec2 lessThan(uvec2 x, uvec2 y); -bvec3 lessThan(uvec3 x, uvec3 y); -bvec4 lessThan(uvec4 x, uvec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); -bvec2 lessThanEqual(uvec2 x, uvec2 y); -bvec3 lessThanEqual(uvec3 x, uvec3 y); -bvec4 lessThanEqual(uvec4 x, uvec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); -bvec2 greaterThan(uvec2 x, uvec2 y); -bvec3 greaterThan(uvec3 x, uvec3 y); -bvec4 greaterThan(uvec4 x, uvec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); -bvec2 greaterThanEqual(uvec2 x, uvec2 y); -bvec3 greaterThanEqual(uvec3 x, uvec3 y); -bvec4 greaterThanEqual(uvec4 x, uvec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(uvec2 x, uvec2 y); -bvec3 equal(uvec3 x, uvec3 y); -bvec4 equal(uvec4 x, uvec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(uvec2 x, uvec2 y); -bvec3 notEqual(uvec3 x, uvec3 y); -bvec4 notEqual(uvec4 x, uvec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ - -/* textureSize */ -int textureSize( sampler1D sampler, int lod); -int textureSize(isampler1D sampler, int lod); -int textureSize(usampler1D sampler, int lod); - -ivec2 textureSize( sampler2D sampler, int lod); -ivec2 textureSize(isampler2D sampler, int lod); -ivec2 textureSize(usampler2D sampler, int lod); - -ivec3 textureSize( sampler3D sampler, int lod); -ivec3 textureSize(isampler3D sampler, int lod); -ivec3 textureSize(usampler3D sampler, int lod); - -ivec2 textureSize( samplerCube sampler, int lod); -ivec2 textureSize(isamplerCube sampler, int lod); -ivec2 textureSize(usamplerCube sampler, int lod); - -int textureSize(sampler1DShadow sampler, int lod); -ivec2 textureSize(sampler2DShadow sampler, int lod); -ivec2 textureSize(samplerCubeShadow sampler, int lod); - -ivec2 textureSize( sampler1DArray sampler, int lod); -ivec2 textureSize(isampler1DArray sampler, int lod); -ivec2 textureSize(usampler1DArray sampler, int lod); -ivec3 textureSize( sampler2DArray sampler, int lod); -ivec3 textureSize(isampler2DArray sampler, int lod); -ivec3 textureSize(usampler2DArray sampler, int lod); - -ivec2 textureSize(sampler1DArrayShadow sampler, int lod); -ivec3 textureSize(sampler2DArrayShadow sampler, int lod); - -/* texture - no bias */ - vec4 texture( sampler1D sampler, float P); -ivec4 texture(isampler1D sampler, float P); -uvec4 texture(usampler1D sampler, float P); - - vec4 texture( sampler2D sampler, vec2 P); -ivec4 texture(isampler2D sampler, vec2 P); -uvec4 texture(usampler2D sampler, vec2 P); - - vec4 texture( sampler3D sampler, vec3 P); -ivec4 texture(isampler3D sampler, vec3 P); -uvec4 texture(usampler3D sampler, vec3 P); - - vec4 texture( samplerCube sampler, vec3 P); -ivec4 texture(isamplerCube sampler, vec3 P); -uvec4 texture(usamplerCube sampler, vec3 P); - -float texture(sampler1DShadow sampler, vec3 P); -float texture(sampler2DShadow sampler, vec3 P); -float texture(samplerCubeShadow sampler, vec4 P); - - vec4 texture( sampler1DArray sampler, vec2 P); -ivec4 texture(isampler1DArray sampler, vec2 P); -uvec4 texture(usampler1DArray sampler, vec2 P); - - vec4 texture( sampler2DArray sampler, vec3 P); -ivec4 texture(isampler2DArray sampler, vec3 P); -uvec4 texture(usampler2DArray sampler, vec3 P); - -float texture(sampler1DArrayShadow sampler, vec3 P); -float texture(sampler2DArrayShadow sampler, vec4 P); - -/* textureProj - no bias */ - vec4 textureProj( sampler1D sampler, vec2 P); -ivec4 textureProj(isampler1D sampler, vec2 P); -uvec4 textureProj(usampler1D sampler, vec2 P); - vec4 textureProj( sampler1D sampler, vec4 P); -ivec4 textureProj(isampler1D sampler, vec4 P); -uvec4 textureProj(usampler1D sampler, vec4 P); - - vec4 textureProj( sampler2D sampler, vec3 P); -ivec4 textureProj(isampler2D sampler, vec3 P); -uvec4 textureProj(usampler2D sampler, vec3 P); - vec4 textureProj( sampler2D sampler, vec4 P); -ivec4 textureProj(isampler2D sampler, vec4 P); -uvec4 textureProj(usampler2D sampler, vec4 P); - - vec4 textureProj( sampler3D sampler, vec4 P); -ivec4 textureProj(isampler3D sampler, vec4 P); -uvec4 textureProj(usampler3D sampler, vec4 P); - -float textureProj(sampler1DShadow sampler, vec4 P); -float textureProj(sampler2DShadow sampler, vec4 P); - -/* textureLod */ - vec4 textureLod( sampler1D sampler, float P, float lod); -ivec4 textureLod(isampler1D sampler, float P, float lod); -uvec4 textureLod(usampler1D sampler, float P, float lod); - - vec4 textureLod( sampler2D sampler, vec2 P, float lod); -ivec4 textureLod(isampler2D sampler, vec2 P, float lod); -uvec4 textureLod(usampler2D sampler, vec2 P, float lod); - - vec4 textureLod( sampler3D sampler, vec3 P, float lod); -ivec4 textureLod(isampler3D sampler, vec3 P, float lod); -uvec4 textureLod(usampler3D sampler, vec3 P, float lod); - - vec4 textureLod( samplerCube sampler, vec3 P, float lod); -ivec4 textureLod(isamplerCube sampler, vec3 P, float lod); -uvec4 textureLod(usamplerCube sampler, vec3 P, float lod); - -float textureLod(sampler1DShadow sampler, vec3 P, float lod); -float textureLod(sampler2DShadow sampler, vec3 P, float lod); - - vec4 textureLod( sampler1DArray sampler, vec2 P, float lod); -ivec4 textureLod(isampler1DArray sampler, vec2 P, float lod); -uvec4 textureLod(usampler1DArray sampler, vec2 P, float lod); - - vec4 textureLod( sampler2DArray sampler, vec3 P, float lod); -ivec4 textureLod(isampler2DArray sampler, vec3 P, float lod); -uvec4 textureLod(usampler2DArray sampler, vec3 P, float lod); - -float textureLod(sampler1DArrayShadow sampler, vec3 P, float lod); - -/* textureOffset - no bias */ - vec4 textureOffset( sampler1D sampler, float P, int offset); -ivec4 textureOffset(isampler1D sampler, float P, int offset); -uvec4 textureOffset(usampler1D sampler, float P, int offset); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset); - -float textureOffset(sampler1DArrayShadow sampler, vec3 P, int offset); - -/* texelFetch */ - vec4 texelFetch( sampler1D sampler, int P, int lod); -ivec4 texelFetch(isampler1D sampler, int P, int lod); -uvec4 texelFetch(usampler1D sampler, int P, int lod); - - vec4 texelFetch( sampler2D sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler2D sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler2D sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler3D sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler3D sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler3D sampler, ivec3 P, int lod); - - vec4 texelFetch( sampler1DArray sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler1DArray sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler1DArray sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler2DArray sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod); - -/* texelFetchOffset */ - vec4 texelFetchOffset( sampler1D sampler, int P, int lod, int offset); -ivec4 texelFetchOffset(isampler1D sampler, int P, int lod, int offset); -uvec4 texelFetchOffset(usampler1D sampler, int P, int lod, int offset); - - vec4 texelFetchOffset( sampler2D sampler, ivec2 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2D sampler, ivec2 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2D sampler, ivec2 P, int lod, ivec2 offset); - - vec4 texelFetchOffset( sampler3D sampler, ivec3 P, int lod, ivec3 offset); -ivec4 texelFetchOffset(isampler3D sampler, ivec3 P, int lod, ivec3 offset); -uvec4 texelFetchOffset(usampler3D sampler, ivec3 P, int lod, ivec3 offset); - - vec4 texelFetchOffset( sampler1DArray sampler, ivec2 P, int lod, int offset); -ivec4 texelFetchOffset(isampler1DArray sampler, ivec2 P, int lod, int offset); -uvec4 texelFetchOffset(usampler1DArray sampler, ivec2 P, int lod, int offset); - - vec4 texelFetchOffset( sampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2DArray sampler, ivec3 P, int lod, ivec2 offset); - -/* textureProjOffset - no bias */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset); - -float textureProjOffset(sampler1DShadow sampler, vec4 P, int offset); -float textureProjOffset(sampler2DShadow sampler, vec4 P, ivec2 offset); - -/* textureLodOffset */ - vec4 textureLodOffset( sampler1D sampler, float P, float lod, int offset); -ivec4 textureLodOffset(isampler1D sampler, float P, float lod, int offset); -uvec4 textureLodOffset(usampler1D sampler, float P, float lod, int offset); - - vec4 textureLodOffset( sampler2D sampler, vec2 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2D sampler, vec2 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2D sampler, vec2 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler3D sampler, vec3 P, float lod, ivec3 offset); -ivec4 textureLodOffset(isampler3D sampler, vec3 P, float lod, ivec3 offset); -uvec4 textureLodOffset(usampler3D sampler, vec3 P, float lod, ivec3 offset); - -float textureLodOffset(sampler1DShadow samp, vec3 P, float lod, int offset); -float textureLodOffset(sampler2DShadow samp, vec3 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler1DArray sampler, vec2 P, float lod, int offset); -ivec4 textureLodOffset(isampler1DArray sampler, vec2 P, float lod, int offset); -uvec4 textureLodOffset(usampler1DArray sampler, vec2 P, float lod, int offset); - - vec4 textureLodOffset( sampler2DArray samp, vec3 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2DArray samp, vec3 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2DArray samp, vec3 P, float lod, ivec2 offset); - -float textureLodOffset(sampler1DArrayShadow s, vec3 P, float lod, int offset); - -/* textureProjLod */ - vec4 textureProjLod( sampler1D sampler, vec2 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec2 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec2 P, float lod); - vec4 textureProjLod( sampler1D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler2D sampler, vec3 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec3 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec3 P, float lod); - vec4 textureProjLod( sampler2D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler3D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler3D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler3D sampler, vec4 P, float lod); - -float textureProjLod(sampler1DShadow sampler, vec4 P, float lod); -float textureProjLod(sampler2DShadow sampler, vec4 P, float lod); - -/* textureProjLodOffset */ - vec4 textureProjLodOffset( sampler1D sampler, vec2 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec2 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec2 P, float lod, int offset); - vec4 textureProjLodOffset( sampler1D sampler, vec4 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec4 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec4 P, float lod, int offset); - - vec4 textureProjLodOffset( sampler2D sampler, vec3 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec3 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec3 P, float lod, ivec2 offset); - vec4 textureProjLodOffset( sampler2D sampler, vec4 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec4 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec4 P, float lod, ivec2 offset); - - vec4 textureProjLodOffset( sampler3D sampler, vec4 P, float lod, ivec3 offset); -ivec4 textureProjLodOffset(isampler3D sampler, vec4 P, float lod, ivec3 offset); -uvec4 textureProjLodOffset(usampler3D sampler, vec4 P, float lod, ivec3 offset); - -float textureProjLodOffset(sampler1DShadow s, vec4 P, float lod, int offset); -float textureProjLodOffset(sampler2DShadow s, vec4 P, float lod, ivec2 offset); - -/* textureGrad */ - vec4 textureGrad( sampler1D sampler, float P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1D sampler, float P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1D sampler, float P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); - - vec4 textureGrad( sampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); - -float textureGrad(sampler1DShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); -float textureGrad(samplerCubeShadow sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler1DArray sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1DArray sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1DArray sampler, vec2 P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler1DArrayShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DArrayShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureGradOffset */ - vec4 textureGradOffset( sampler1D s, float P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1D s, float P, float dx, float dy, int offset); -uvec4 textureGradOffset(usampler1D s, float P, float dx, float dy, int offset); - - vec4 textureGradOffset( sampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - - vec4 textureGradOffset( sampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -ivec4 textureGradOffset(isampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -uvec4 textureGradOffset(usampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); - -float textureGradOffset(sampler1DShadow s, vec3 P, float dx, float dy, int off); -float textureGradOffset(sampler2DShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureGradOffset( sampler1DArray s, vec2 P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1DArray s, vec2 P, float dx, float dy, int off); -uvec4 textureGradOffset(usampler1DArray s, vec2 P, float dx, float dy, int off); - - vec4 textureGradOffset( sampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureGradOffset(isampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureGradOffset(usampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler1DArrayShadow s, vec3 P, float dx, float dy, int o); -float textureGradOffset(sampler2DArrayShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* textureProjGrad */ - vec4 textureProjGrad( sampler1D sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec2 P, float dPdx, float dPdy); - vec4 textureProjGrad( sampler1D sampler, vec4 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec4 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec4 P, float dPdx, float dPdy); - - vec4 textureProjGrad( sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); - - vec4 textureProjGrad( sampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -ivec4 textureProjGrad(isampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -uvec4 textureProjGrad(usampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); - -float textureProjGrad(sampler1DShadow sampler, vec4 P, float dPdx, float dPdy); -float textureProjGrad(sampler2DShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureProjGradOffset */ - vec4 textureProjGradOffset( sampler1D s, vec2 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec2 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec2 P, float dx, float dy, int off); - vec4 textureProjGradOffset( sampler1D s, vec4 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec4 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec4 P, float dx, float dy, int off); - - vec4 textureProjGradOffset( sampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureProjGradOffset( sampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -ivec4 textureProjGradOffset(isampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -uvec4 textureProjGradOffset(usampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); - -float textureProjGradOffset(sampler1DShadow s, vec4 P, float dx, float dy, int o); -float textureProjGradOffset(sampler2DShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/130.vert b/dist/Mesa/src/glsl/builtins/profiles/130.vert deleted file mode 100644 index 99d127eb8..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/130.vert +++ /dev/null @@ -1,2 +0,0 @@ -#version 130 -vec4 ftransform(); diff --git a/dist/Mesa/src/glsl/builtins/profiles/140.frag b/dist/Mesa/src/glsl/builtins/profiles/140.frag deleted file mode 100644 index 2e50a1567..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/140.frag +++ /dev/null @@ -1,140 +0,0 @@ -#version 140 -/* texture - bias variants */ - vec4 texture( sampler1D sampler, float P, float bias); -ivec4 texture(isampler1D sampler, float P, float bias); -uvec4 texture(usampler1D sampler, float P, float bias); - - vec4 texture( sampler2D sampler, vec2 P, float bias); -ivec4 texture(isampler2D sampler, vec2 P, float bias); -uvec4 texture(usampler2D sampler, vec2 P, float bias); - - vec4 texture( sampler3D sampler, vec3 P, float bias); -ivec4 texture(isampler3D sampler, vec3 P, float bias); -uvec4 texture(usampler3D sampler, vec3 P, float bias); - - vec4 texture( samplerCube sampler, vec3 P, float bias); -ivec4 texture(isamplerCube sampler, vec3 P, float bias); -uvec4 texture(usamplerCube sampler, vec3 P, float bias); - -float texture(sampler1DShadow sampler, vec3 P, float bias); -float texture(sampler2DShadow sampler, vec3 P, float bias); -float texture(samplerCubeShadow sampler, vec4 P, float bias); - - vec4 texture( sampler1DArray sampler, vec2 P, float bias); -ivec4 texture(isampler1DArray sampler, vec2 P, float bias); -uvec4 texture(usampler1DArray sampler, vec2 P, float bias); - - vec4 texture( sampler2DArray sampler, vec3 P, float bias); -ivec4 texture(isampler2DArray sampler, vec3 P, float bias); -uvec4 texture(usampler2DArray sampler, vec3 P, float bias); - -float texture(sampler1DArrayShadow sampler, vec3 P, float bias); - -/* textureProj - bias variants */ - vec4 textureProj( sampler1D sampler, vec2 P, float bias); -ivec4 textureProj(isampler1D sampler, vec2 P, float bias); -uvec4 textureProj(usampler1D sampler, vec2 P, float bias); - vec4 textureProj( sampler1D sampler, vec4 P, float bias); -ivec4 textureProj(isampler1D sampler, vec4 P, float bias); -uvec4 textureProj(usampler1D sampler, vec4 P, float bias); - - vec4 textureProj( sampler2D sampler, vec3 P, float bias); -ivec4 textureProj(isampler2D sampler, vec3 P, float bias); -uvec4 textureProj(usampler2D sampler, vec3 P, float bias); - vec4 textureProj( sampler2D sampler, vec4 P, float bias); -ivec4 textureProj(isampler2D sampler, vec4 P, float bias); -uvec4 textureProj(usampler2D sampler, vec4 P, float bias); - - vec4 textureProj( sampler3D sampler, vec4 P, float bias); -ivec4 textureProj(isampler3D sampler, vec4 P, float bias); -uvec4 textureProj(usampler3D sampler, vec4 P, float bias); - -float textureProj(sampler1DShadow sampler, vec4 P, float bias); -float textureProj(sampler2DShadow sampler, vec4 P, float bias); - -/* textureOffset - bias variants */ - vec4 textureOffset( sampler1D sampler, float P, int offset, float bias); -ivec4 textureOffset(isampler1D sampler, float P, int offset, float bias); -uvec4 textureOffset(usampler1D sampler, float P, int offset, float bias); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset, float bias); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset, float bias); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset, float bias); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset, float bias); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset, float bias); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset, float bias); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset, float bias); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset, float bias); - -float textureOffset(sampler1DArrayShadow samp, vec3 P, int offset, float bias); - -/* textureProjOffsetOffset - bias variants */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset, float bias); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset, float bias); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset, float bias); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset, float bias); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset, float bias); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset, float bias); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset, float bias); - -float textureProjOffset(sampler1DShadow s, vec4 P, int offset, float bias); -float textureProjOffset(sampler2DShadow s, vec4 P, ivec2 offset, float bias); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias); - -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias); - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/140.glsl b/dist/Mesa/src/glsl/builtins/profiles/140.glsl deleted file mode 100644 index 90e04816d..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/140.glsl +++ /dev/null @@ -1,989 +0,0 @@ -#version 140 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -float sinh(float x); -vec2 sinh(vec2 x); -vec3 sinh(vec3 x); -vec4 sinh(vec4 x); - -float cosh(float x); -vec2 cosh(vec2 x); -vec3 cosh(vec3 x); -vec4 cosh(vec4 x); - -float tanh(float x); -vec2 tanh(vec2 x); -vec3 tanh(vec3 x); -vec4 tanh(vec4 x); - -float asinh(float x); -vec2 asinh(vec2 x); -vec3 asinh(vec3 x); -vec4 asinh(vec4 x); - -float acosh(float x); -vec2 acosh(vec2 x); -vec3 acosh(vec3 x); -vec4 acosh(vec4 x); - -float atanh(float x); -vec2 atanh(vec2 x); -vec3 atanh(vec3 x); -vec4 atanh(vec4 x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); -int abs(int x); -ivec2 abs(ivec2 x); -ivec3 abs(ivec3 x); -ivec4 abs(ivec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); -int sign(int x); -ivec2 sign(ivec2 x); -ivec3 sign(ivec3 x); -ivec4 sign(ivec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float trunc(float x); -vec2 trunc(vec2 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); -vec4 roundEven(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float modf(float x, out float i); -vec2 modf(vec2 x, out vec2 i); -vec3 modf(vec3 x, out vec3 i); -vec4 modf(vec4 x, out vec4 i); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -int min(int x, int y); -ivec2 min(ivec2 x, ivec2 y); -ivec3 min(ivec3 x, ivec3 y); -ivec4 min(ivec4 x, ivec4 y); - -ivec2 min(ivec2 x, int y); -ivec3 min(ivec3 x, int y); -ivec4 min(ivec4 x, int y); - -uint min(uint x, uint y); -uvec2 min(uvec2 x, uvec2 y); -uvec3 min(uvec3 x, uvec3 y); -uvec4 min(uvec4 x, uvec4 y); - -uvec2 min(uvec2 x, uint y); -uvec3 min(uvec3 x, uint y); -uvec4 min(uvec4 x, uint y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -int max(int x, int y); -ivec2 max(ivec2 x, ivec2 y); -ivec3 max(ivec3 x, ivec3 y); -ivec4 max(ivec4 x, ivec4 y); - -ivec2 max(ivec2 x, int y); -ivec3 max(ivec3 x, int y); -ivec4 max(ivec4 x, int y); - -uint max(uint x, uint y); -uvec2 max(uvec2 x, uvec2 y); -uvec3 max(uvec3 x, uvec3 y); -uvec4 max(uvec4 x, uvec4 y); - -uvec2 max(uvec2 x, uint y); -uvec3 max(uvec3 x, uint y); -uvec4 max(uvec4 x, uint y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -int clamp(int x, int minVal, int maxVal); -ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal); -ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal); -ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal); - -ivec2 clamp(ivec2 x, int minVal, int maxVal); -ivec3 clamp(ivec3 x, int minVal, int maxVal); -ivec4 clamp(ivec4 x, int minVal, int maxVal); - -uint clamp(uint x, uint minVal, uint maxVal); -uvec2 clamp(uvec2 x, uvec2 minVal, uvec2 maxVal); -uvec3 clamp(uvec3 x, uvec3 minVal, uvec3 maxVal); -uvec4 clamp(uvec4 x, uvec4 minVal, uvec4 maxVal); - -uvec2 clamp(uvec2 x, uint minVal, uint maxVal); -uvec3 clamp(uvec3 x, uint minVal, uint maxVal); -uvec4 clamp(uvec4 x, uint minVal, uint maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float mix(float x, float y, bool a); -vec2 mix(vec2 x, vec2 y, bvec2 a); -vec3 mix(vec3 x, vec3 y, bvec3 a); -vec4 mix(vec4 x, vec4 y, bvec4 a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -bool isnan(float x); -bvec2 isnan(vec2 x); -bvec3 isnan(vec3 x); -bvec4 isnan(vec4 x); - -bool isinf(float x); -bvec2 isinf(vec2 x); -bvec3 isinf(vec3 x); -bvec4 isinf(vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -mat2 inverse(mat2 m); -mat3 inverse(mat3 m); -mat4 inverse(mat4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); -bvec2 lessThan(uvec2 x, uvec2 y); -bvec3 lessThan(uvec3 x, uvec3 y); -bvec4 lessThan(uvec4 x, uvec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); -bvec2 lessThanEqual(uvec2 x, uvec2 y); -bvec3 lessThanEqual(uvec3 x, uvec3 y); -bvec4 lessThanEqual(uvec4 x, uvec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); -bvec2 greaterThan(uvec2 x, uvec2 y); -bvec3 greaterThan(uvec3 x, uvec3 y); -bvec4 greaterThan(uvec4 x, uvec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); -bvec2 greaterThanEqual(uvec2 x, uvec2 y); -bvec3 greaterThanEqual(uvec3 x, uvec3 y); -bvec4 greaterThanEqual(uvec4 x, uvec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(uvec2 x, uvec2 y); -bvec3 equal(uvec3 x, uvec3 y); -bvec4 equal(uvec4 x, uvec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(uvec2 x, uvec2 y); -bvec3 notEqual(uvec3 x, uvec3 y); -bvec4 notEqual(uvec4 x, uvec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ - -/* textureSize */ -int textureSize( sampler1D sampler, int lod); -int textureSize(isampler1D sampler, int lod); -int textureSize(usampler1D sampler, int lod); - -ivec2 textureSize( sampler2D sampler, int lod); -ivec2 textureSize(isampler2D sampler, int lod); -ivec2 textureSize(usampler2D sampler, int lod); - -ivec3 textureSize( sampler3D sampler, int lod); -ivec3 textureSize(isampler3D sampler, int lod); -ivec3 textureSize(usampler3D sampler, int lod); - -ivec2 textureSize( samplerCube sampler, int lod); -ivec2 textureSize(isamplerCube sampler, int lod); -ivec2 textureSize(usamplerCube sampler, int lod); - -int textureSize(sampler1DShadow sampler, int lod); -ivec2 textureSize(sampler2DShadow sampler, int lod); -ivec2 textureSize(samplerCubeShadow sampler, int lod); - -ivec2 textureSize( sampler1DArray sampler, int lod); -ivec2 textureSize(isampler1DArray sampler, int lod); -ivec2 textureSize(usampler1DArray sampler, int lod); -ivec3 textureSize( sampler2DArray sampler, int lod); -ivec3 textureSize(isampler2DArray sampler, int lod); -ivec3 textureSize(usampler2DArray sampler, int lod); - -ivec2 textureSize(sampler1DArrayShadow sampler, int lod); -ivec3 textureSize(sampler2DArrayShadow sampler, int lod); - -ivec2 textureSize(sampler2DRect sampler); -ivec2 textureSize(isampler2DRect sampler); -ivec2 textureSize(usampler2DRect sampler); -ivec2 textureSize(sampler2DRectShadow sampler); - -int textureSize( samplerBuffer sampler); -int textureSize(isamplerBuffer sampler); -int textureSize(usamplerBuffer sampler); - -/* texture - no bias */ - vec4 texture( sampler1D sampler, float P); -ivec4 texture(isampler1D sampler, float P); -uvec4 texture(usampler1D sampler, float P); - - vec4 texture( sampler2D sampler, vec2 P); -ivec4 texture(isampler2D sampler, vec2 P); -uvec4 texture(usampler2D sampler, vec2 P); - - vec4 texture( sampler3D sampler, vec3 P); -ivec4 texture(isampler3D sampler, vec3 P); -uvec4 texture(usampler3D sampler, vec3 P); - - vec4 texture( samplerCube sampler, vec3 P); -ivec4 texture(isamplerCube sampler, vec3 P); -uvec4 texture(usamplerCube sampler, vec3 P); - -float texture(sampler1DShadow sampler, vec3 P); -float texture(sampler2DShadow sampler, vec3 P); -float texture(samplerCubeShadow sampler, vec4 P); - - vec4 texture( sampler1DArray sampler, vec2 P); -ivec4 texture(isampler1DArray sampler, vec2 P); -uvec4 texture(usampler1DArray sampler, vec2 P); - - vec4 texture( sampler2DArray sampler, vec3 P); -ivec4 texture(isampler2DArray sampler, vec3 P); -uvec4 texture(usampler2DArray sampler, vec3 P); - -float texture(sampler1DArrayShadow sampler, vec3 P); -float texture(sampler2DArrayShadow sampler, vec4 P); - - vec4 texture( sampler2DRect sampler, vec2 P); -ivec4 texture(isampler2DRect sampler, vec2 P); -uvec4 texture(usampler2DRect sampler, vec2 P); - -float texture(sampler2DRectShadow sampler, vec3 P); - -/* textureProj - no bias */ - vec4 textureProj( sampler1D sampler, vec2 P); -ivec4 textureProj(isampler1D sampler, vec2 P); -uvec4 textureProj(usampler1D sampler, vec2 P); - vec4 textureProj( sampler1D sampler, vec4 P); -ivec4 textureProj(isampler1D sampler, vec4 P); -uvec4 textureProj(usampler1D sampler, vec4 P); - - vec4 textureProj( sampler2D sampler, vec3 P); -ivec4 textureProj(isampler2D sampler, vec3 P); -uvec4 textureProj(usampler2D sampler, vec3 P); - vec4 textureProj( sampler2D sampler, vec4 P); -ivec4 textureProj(isampler2D sampler, vec4 P); -uvec4 textureProj(usampler2D sampler, vec4 P); - - vec4 textureProj( sampler3D sampler, vec4 P); -ivec4 textureProj(isampler3D sampler, vec4 P); -uvec4 textureProj(usampler3D sampler, vec4 P); - -float textureProj(sampler1DShadow sampler, vec4 P); -float textureProj(sampler2DShadow sampler, vec4 P); - - vec4 textureProj( sampler2DRect sampler, vec3 P); -ivec4 textureProj(isampler2DRect sampler, vec3 P); -uvec4 textureProj(usampler2DRect sampler, vec3 P); - vec4 textureProj( sampler2DRect sampler, vec4 P); -ivec4 textureProj(isampler2DRect sampler, vec4 P); -uvec4 textureProj(usampler2DRect sampler, vec4 P); - -float textureProj(sampler2DRectShadow sampler, vec4 P); - -/* textureLod */ - vec4 textureLod( sampler1D sampler, float P, float lod); -ivec4 textureLod(isampler1D sampler, float P, float lod); -uvec4 textureLod(usampler1D sampler, float P, float lod); - - vec4 textureLod( sampler2D sampler, vec2 P, float lod); -ivec4 textureLod(isampler2D sampler, vec2 P, float lod); -uvec4 textureLod(usampler2D sampler, vec2 P, float lod); - - vec4 textureLod( sampler3D sampler, vec3 P, float lod); -ivec4 textureLod(isampler3D sampler, vec3 P, float lod); -uvec4 textureLod(usampler3D sampler, vec3 P, float lod); - - vec4 textureLod( samplerCube sampler, vec3 P, float lod); -ivec4 textureLod(isamplerCube sampler, vec3 P, float lod); -uvec4 textureLod(usamplerCube sampler, vec3 P, float lod); - -float textureLod(sampler1DShadow sampler, vec3 P, float lod); -float textureLod(sampler2DShadow sampler, vec3 P, float lod); - - vec4 textureLod( sampler1DArray sampler, vec2 P, float lod); -ivec4 textureLod(isampler1DArray sampler, vec2 P, float lod); -uvec4 textureLod(usampler1DArray sampler, vec2 P, float lod); - - vec4 textureLod( sampler2DArray sampler, vec3 P, float lod); -ivec4 textureLod(isampler2DArray sampler, vec3 P, float lod); -uvec4 textureLod(usampler2DArray sampler, vec3 P, float lod); - -float textureLod(sampler1DArrayShadow sampler, vec3 P, float lod); - -/* textureOffset - no bias */ - vec4 textureOffset( sampler1D sampler, float P, int offset); -ivec4 textureOffset(isampler1D sampler, float P, int offset); -uvec4 textureOffset(usampler1D sampler, float P, int offset); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset); - - vec4 textureOffset( sampler2DRect sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2DRect sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2DRect sampler, vec2 P, ivec2 offset); - -float textureOffset(sampler2DRectShadow sampler, vec3 P, ivec2 offset); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset); - -float textureOffset(sampler1DArrayShadow sampler, vec3 P, int offset); - -/* texelFetch */ - vec4 texelFetch( sampler1D sampler, int P, int lod); -ivec4 texelFetch(isampler1D sampler, int P, int lod); -uvec4 texelFetch(usampler1D sampler, int P, int lod); - - vec4 texelFetch( sampler2D sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler2D sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler2D sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler3D sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler3D sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler3D sampler, ivec3 P, int lod); - - vec4 texelFetch( sampler2DRect sampler, ivec2 P); -ivec4 texelFetch(isampler2DRect sampler, ivec2 P); -uvec4 texelFetch(usampler2DRect sampler, ivec2 P); - - vec4 texelFetch( sampler1DArray sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler1DArray sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler1DArray sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler2DArray sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod); - - vec4 texelFetch( samplerBuffer sampler, int P); -ivec4 texelFetch(isamplerBuffer sampler, int P); -uvec4 texelFetch(usamplerBuffer sampler, int P); - -/* texelFetchOffset */ - vec4 texelFetchOffset( sampler1D sampler, int P, int lod, int offset); -ivec4 texelFetchOffset(isampler1D sampler, int P, int lod, int offset); -uvec4 texelFetchOffset(usampler1D sampler, int P, int lod, int offset); - - vec4 texelFetchOffset( sampler2D sampler, ivec2 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2D sampler, ivec2 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2D sampler, ivec2 P, int lod, ivec2 offset); - - vec4 texelFetchOffset( sampler3D sampler, ivec3 P, int lod, ivec3 offset); -ivec4 texelFetchOffset(isampler3D sampler, ivec3 P, int lod, ivec3 offset); -uvec4 texelFetchOffset(usampler3D sampler, ivec3 P, int lod, ivec3 offset); - - vec4 texelFetchOffset( sampler2DRect sampler, ivec2 P, ivec2 offset); -ivec4 texelFetchOffset(isampler2DRect sampler, ivec2 P, ivec2 offset); -uvec4 texelFetchOffset(usampler2DRect sampler, ivec2 P, ivec2 offset); - - vec4 texelFetchOffset( sampler1DArray sampler, ivec2 P, int lod, int offset); -ivec4 texelFetchOffset(isampler1DArray sampler, ivec2 P, int lod, int offset); -uvec4 texelFetchOffset(usampler1DArray sampler, ivec2 P, int lod, int offset); - - vec4 texelFetchOffset( sampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2DArray sampler, ivec3 P, int lod, ivec2 offset); - -/* textureProjOffset - no bias */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset); - - vec4 textureProjOffset( sampler2DRect sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2DRect sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2DRect sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2DRect sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2DRect sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2DRect sampler, vec4 P, ivec2 offset); - -float textureProjOffset(sampler2DRectShadow sampler, vec4 P, ivec2 offset); - -float textureProjOffset(sampler1DShadow sampler, vec4 P, int offset); -float textureProjOffset(sampler2DShadow sampler, vec4 P, ivec2 offset); - -/* textureLodOffset */ - vec4 textureLodOffset( sampler1D sampler, float P, float lod, int offset); -ivec4 textureLodOffset(isampler1D sampler, float P, float lod, int offset); -uvec4 textureLodOffset(usampler1D sampler, float P, float lod, int offset); - - vec4 textureLodOffset( sampler2D sampler, vec2 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2D sampler, vec2 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2D sampler, vec2 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler3D sampler, vec3 P, float lod, ivec3 offset); -ivec4 textureLodOffset(isampler3D sampler, vec3 P, float lod, ivec3 offset); -uvec4 textureLodOffset(usampler3D sampler, vec3 P, float lod, ivec3 offset); - -float textureLodOffset(sampler1DShadow samp, vec3 P, float lod, int offset); -float textureLodOffset(sampler2DShadow samp, vec3 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler1DArray sampler, vec2 P, float lod, int offset); -ivec4 textureLodOffset(isampler1DArray sampler, vec2 P, float lod, int offset); -uvec4 textureLodOffset(usampler1DArray sampler, vec2 P, float lod, int offset); - - vec4 textureLodOffset( sampler2DArray samp, vec3 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2DArray samp, vec3 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2DArray samp, vec3 P, float lod, ivec2 offset); - -float textureLodOffset(sampler1DArrayShadow s, vec3 P, float lod, int offset); - -/* textureProjLod */ - vec4 textureProjLod( sampler1D sampler, vec2 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec2 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec2 P, float lod); - vec4 textureProjLod( sampler1D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler2D sampler, vec3 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec3 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec3 P, float lod); - vec4 textureProjLod( sampler2D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler3D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler3D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler3D sampler, vec4 P, float lod); - -float textureProjLod(sampler1DShadow sampler, vec4 P, float lod); -float textureProjLod(sampler2DShadow sampler, vec4 P, float lod); - -/* textureProjLodOffset */ - vec4 textureProjLodOffset( sampler1D sampler, vec2 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec2 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec2 P, float lod, int offset); - vec4 textureProjLodOffset( sampler1D sampler, vec4 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec4 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec4 P, float lod, int offset); - - vec4 textureProjLodOffset( sampler2D sampler, vec3 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec3 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec3 P, float lod, ivec2 offset); - vec4 textureProjLodOffset( sampler2D sampler, vec4 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec4 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec4 P, float lod, ivec2 offset); - - vec4 textureProjLodOffset( sampler3D sampler, vec4 P, float lod, ivec3 offset); -ivec4 textureProjLodOffset(isampler3D sampler, vec4 P, float lod, ivec3 offset); -uvec4 textureProjLodOffset(usampler3D sampler, vec4 P, float lod, ivec3 offset); - -float textureProjLodOffset(sampler1DShadow s, vec4 P, float lod, int offset); -float textureProjLodOffset(sampler2DShadow s, vec4 P, float lod, ivec2 offset); - -/* textureGrad */ - vec4 textureGrad( sampler1D sampler, float P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1D sampler, float P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1D sampler, float P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); - - vec4 textureGrad( sampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler2DRectShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler1DShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); -float textureGrad(samplerCubeShadow sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler1DArray sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1DArray sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1DArray sampler, vec2 P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler1DArrayShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DArrayShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureGradOffset */ - vec4 textureGradOffset( sampler1D s, float P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1D s, float P, float dx, float dy, int offset); -uvec4 textureGradOffset(usampler1D s, float P, float dx, float dy, int offset); - - vec4 textureGradOffset( sampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - - vec4 textureGradOffset( sampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -ivec4 textureGradOffset(isampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -uvec4 textureGradOffset(usampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); - - vec4 textureGradOffset( sampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - -float textureGradOffset(sampler2DRectShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler1DShadow s, vec3 P, float dx, float dy, int off); -float textureGradOffset(sampler2DShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureGradOffset( sampler1DArray s, vec2 P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1DArray s, vec2 P, float dx, float dy, int off); -uvec4 textureGradOffset(usampler1DArray s, vec2 P, float dx, float dy, int off); - - vec4 textureGradOffset( sampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureGradOffset(isampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureGradOffset(usampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler1DArrayShadow s, vec3 P, float dx, float dy, int o); -float textureGradOffset(sampler2DArrayShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* textureProjGrad */ - vec4 textureProjGrad( sampler1D sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec2 P, float dPdx, float dPdy); - vec4 textureProjGrad( sampler1D sampler, vec4 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec4 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec4 P, float dPdx, float dPdy); - - vec4 textureProjGrad( sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); - - vec4 textureProjGrad( sampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -ivec4 textureProjGrad(isampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -uvec4 textureProjGrad(usampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureProjGrad( sampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -float textureProjGrad(sampler2DRectShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -float textureProjGrad(sampler1DShadow sampler, vec4 P, float dPdx, float dPdy); -float textureProjGrad(sampler2DShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureProjGradOffset */ - vec4 textureProjGradOffset( sampler1D s, vec2 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec2 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec2 P, float dx, float dy, int off); - vec4 textureProjGradOffset( sampler1D s, vec4 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec4 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec4 P, float dx, float dy, int off); - - vec4 textureProjGradOffset( sampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureProjGradOffset( sampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - -float textureProjGradOffset(sampler2DRectShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - - vec4 textureProjGradOffset( sampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -ivec4 textureProjGradOffset(isampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -uvec4 textureProjGradOffset(usampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); - -float textureProjGradOffset(sampler1DShadow s, vec4 P, float dx, float dy, int o); -float textureProjGradOffset(sampler2DShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/150.frag b/dist/Mesa/src/glsl/builtins/profiles/150.frag deleted file mode 100644 index 7798e2578..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/150.frag +++ /dev/null @@ -1,140 +0,0 @@ -#version 150 -/* texture - bias variants */ - vec4 texture( sampler1D sampler, float P, float bias); -ivec4 texture(isampler1D sampler, float P, float bias); -uvec4 texture(usampler1D sampler, float P, float bias); - - vec4 texture( sampler2D sampler, vec2 P, float bias); -ivec4 texture(isampler2D sampler, vec2 P, float bias); -uvec4 texture(usampler2D sampler, vec2 P, float bias); - - vec4 texture( sampler3D sampler, vec3 P, float bias); -ivec4 texture(isampler3D sampler, vec3 P, float bias); -uvec4 texture(usampler3D sampler, vec3 P, float bias); - - vec4 texture( samplerCube sampler, vec3 P, float bias); -ivec4 texture(isamplerCube sampler, vec3 P, float bias); -uvec4 texture(usamplerCube sampler, vec3 P, float bias); - -float texture(sampler1DShadow sampler, vec3 P, float bias); -float texture(sampler2DShadow sampler, vec3 P, float bias); -float texture(samplerCubeShadow sampler, vec4 P, float bias); - - vec4 texture( sampler1DArray sampler, vec2 P, float bias); -ivec4 texture(isampler1DArray sampler, vec2 P, float bias); -uvec4 texture(usampler1DArray sampler, vec2 P, float bias); - - vec4 texture( sampler2DArray sampler, vec3 P, float bias); -ivec4 texture(isampler2DArray sampler, vec3 P, float bias); -uvec4 texture(usampler2DArray sampler, vec3 P, float bias); - -float texture(sampler1DArrayShadow sampler, vec3 P, float bias); - -/* textureProj - bias variants */ - vec4 textureProj( sampler1D sampler, vec2 P, float bias); -ivec4 textureProj(isampler1D sampler, vec2 P, float bias); -uvec4 textureProj(usampler1D sampler, vec2 P, float bias); - vec4 textureProj( sampler1D sampler, vec4 P, float bias); -ivec4 textureProj(isampler1D sampler, vec4 P, float bias); -uvec4 textureProj(usampler1D sampler, vec4 P, float bias); - - vec4 textureProj( sampler2D sampler, vec3 P, float bias); -ivec4 textureProj(isampler2D sampler, vec3 P, float bias); -uvec4 textureProj(usampler2D sampler, vec3 P, float bias); - vec4 textureProj( sampler2D sampler, vec4 P, float bias); -ivec4 textureProj(isampler2D sampler, vec4 P, float bias); -uvec4 textureProj(usampler2D sampler, vec4 P, float bias); - - vec4 textureProj( sampler3D sampler, vec4 P, float bias); -ivec4 textureProj(isampler3D sampler, vec4 P, float bias); -uvec4 textureProj(usampler3D sampler, vec4 P, float bias); - -float textureProj(sampler1DShadow sampler, vec4 P, float bias); -float textureProj(sampler2DShadow sampler, vec4 P, float bias); - -/* textureOffset - bias variants */ - vec4 textureOffset( sampler1D sampler, float P, int offset, float bias); -ivec4 textureOffset(isampler1D sampler, float P, int offset, float bias); -uvec4 textureOffset(usampler1D sampler, float P, int offset, float bias); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset, float bias); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset, float bias); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset, float bias); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset, float bias); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset, float bias); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset, float bias); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset, float bias); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset, float bias); - -float textureOffset(sampler1DArrayShadow samp, vec3 P, int offset, float bias); - -/* textureProjOffsetOffset - bias variants */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset, float bias); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset, float bias); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset, float bias); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset, float bias); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset, float bias); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset, float bias); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset, float bias); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset, float bias); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset, float bias); - -float textureProjOffset(sampler1DShadow s, vec4 P, int offset, float bias); -float textureProjOffset(sampler2DShadow s, vec4 P, ivec2 offset, float bias); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias); -vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias); - -vec4 texture2D (sampler2D sampler, vec2 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias); -vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias); - -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); - -vec4 textureCube (samplerCube sampler, vec3 coord, float bias); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias); - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/150.glsl b/dist/Mesa/src/glsl/builtins/profiles/150.glsl deleted file mode 100644 index 70c65f22c..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/150.glsl +++ /dev/null @@ -1,1009 +0,0 @@ -#version 150 -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -float sinh(float x); -vec2 sinh(vec2 x); -vec3 sinh(vec3 x); -vec4 sinh(vec4 x); - -float cosh(float x); -vec2 cosh(vec2 x); -vec3 cosh(vec3 x); -vec4 cosh(vec4 x); - -float tanh(float x); -vec2 tanh(vec2 x); -vec3 tanh(vec3 x); -vec4 tanh(vec4 x); - -float asinh(float x); -vec2 asinh(vec2 x); -vec3 asinh(vec3 x); -vec4 asinh(vec4 x); - -float acosh(float x); -vec2 acosh(vec2 x); -vec3 acosh(vec3 x); -vec4 acosh(vec4 x); - -float atanh(float x); -vec2 atanh(vec2 x); -vec3 atanh(vec3 x); -vec4 atanh(vec4 x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); -int abs(int x); -ivec2 abs(ivec2 x); -ivec3 abs(ivec3 x); -ivec4 abs(ivec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); -int sign(int x); -ivec2 sign(ivec2 x); -ivec3 sign(ivec3 x); -ivec4 sign(ivec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float trunc(float x); -vec2 trunc(vec2 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); -vec4 roundEven(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float modf(float x, out float i); -vec2 modf(vec2 x, out vec2 i); -vec3 modf(vec3 x, out vec3 i); -vec4 modf(vec4 x, out vec4 i); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -int min(int x, int y); -ivec2 min(ivec2 x, ivec2 y); -ivec3 min(ivec3 x, ivec3 y); -ivec4 min(ivec4 x, ivec4 y); - -ivec2 min(ivec2 x, int y); -ivec3 min(ivec3 x, int y); -ivec4 min(ivec4 x, int y); - -uint min(uint x, uint y); -uvec2 min(uvec2 x, uvec2 y); -uvec3 min(uvec3 x, uvec3 y); -uvec4 min(uvec4 x, uvec4 y); - -uvec2 min(uvec2 x, uint y); -uvec3 min(uvec3 x, uint y); -uvec4 min(uvec4 x, uint y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -int max(int x, int y); -ivec2 max(ivec2 x, ivec2 y); -ivec3 max(ivec3 x, ivec3 y); -ivec4 max(ivec4 x, ivec4 y); - -ivec2 max(ivec2 x, int y); -ivec3 max(ivec3 x, int y); -ivec4 max(ivec4 x, int y); - -uint max(uint x, uint y); -uvec2 max(uvec2 x, uvec2 y); -uvec3 max(uvec3 x, uvec3 y); -uvec4 max(uvec4 x, uvec4 y); - -uvec2 max(uvec2 x, uint y); -uvec3 max(uvec3 x, uint y); -uvec4 max(uvec4 x, uint y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -int clamp(int x, int minVal, int maxVal); -ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal); -ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal); -ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal); - -ivec2 clamp(ivec2 x, int minVal, int maxVal); -ivec3 clamp(ivec3 x, int minVal, int maxVal); -ivec4 clamp(ivec4 x, int minVal, int maxVal); - -uint clamp(uint x, uint minVal, uint maxVal); -uvec2 clamp(uvec2 x, uvec2 minVal, uvec2 maxVal); -uvec3 clamp(uvec3 x, uvec3 minVal, uvec3 maxVal); -uvec4 clamp(uvec4 x, uvec4 minVal, uvec4 maxVal); - -uvec2 clamp(uvec2 x, uint minVal, uint maxVal); -uvec3 clamp(uvec3 x, uint minVal, uint maxVal); -uvec4 clamp(uvec4 x, uint minVal, uint maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float mix(float x, float y, bool a); -vec2 mix(vec2 x, vec2 y, bvec2 a); -vec3 mix(vec3 x, vec3 y, bvec3 a); -vec4 mix(vec4 x, vec4 y, bvec4 a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -bool isnan(float x); -bvec2 isnan(vec2 x); -bvec3 isnan(vec3 x); -bvec4 isnan(vec4 x); - -bool isinf(float x); -bvec2 isinf(vec2 x); -bvec3 isinf(vec3 x); -bvec4 isinf(vec4 x); - -/* - * 8.4 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - - -/* - * 8.5 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -float determinant(mat2 m); -float determinant(mat3 m); -float determinant(mat4 m); - -mat2 inverse(mat2 m); -mat3 inverse(mat3 m); -mat4 inverse(mat4 m); - -/* - * 8.6 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); -bvec2 lessThan(uvec2 x, uvec2 y); -bvec3 lessThan(uvec3 x, uvec3 y); -bvec4 lessThan(uvec4 x, uvec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); -bvec2 lessThanEqual(uvec2 x, uvec2 y); -bvec3 lessThanEqual(uvec3 x, uvec3 y); -bvec4 lessThanEqual(uvec4 x, uvec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); -bvec2 greaterThan(uvec2 x, uvec2 y); -bvec3 greaterThan(uvec3 x, uvec3 y); -bvec4 greaterThan(uvec4 x, uvec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); -bvec2 greaterThanEqual(uvec2 x, uvec2 y); -bvec3 greaterThanEqual(uvec3 x, uvec3 y); -bvec4 greaterThanEqual(uvec4 x, uvec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(uvec2 x, uvec2 y); -bvec3 equal(uvec3 x, uvec3 y); -bvec4 equal(uvec4 x, uvec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(uvec2 x, uvec2 y); -bvec3 notEqual(uvec3 x, uvec3 y); -bvec4 notEqual(uvec4 x, uvec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.7 - Texture Lookup Functions - */ - -/* textureSize */ -int textureSize( sampler1D sampler, int lod); -int textureSize(isampler1D sampler, int lod); -int textureSize(usampler1D sampler, int lod); - -ivec2 textureSize( sampler2D sampler, int lod); -ivec2 textureSize(isampler2D sampler, int lod); -ivec2 textureSize(usampler2D sampler, int lod); - -ivec3 textureSize( sampler3D sampler, int lod); -ivec3 textureSize(isampler3D sampler, int lod); -ivec3 textureSize(usampler3D sampler, int lod); - -ivec2 textureSize( samplerCube sampler, int lod); -ivec2 textureSize(isamplerCube sampler, int lod); -ivec2 textureSize(usamplerCube sampler, int lod); - -int textureSize(sampler1DShadow sampler, int lod); -ivec2 textureSize(sampler2DShadow sampler, int lod); -ivec2 textureSize(samplerCubeShadow sampler, int lod); - -ivec2 textureSize( sampler1DArray sampler, int lod); -ivec2 textureSize(isampler1DArray sampler, int lod); -ivec2 textureSize(usampler1DArray sampler, int lod); -ivec3 textureSize( sampler2DArray sampler, int lod); -ivec3 textureSize(isampler2DArray sampler, int lod); -ivec3 textureSize(usampler2DArray sampler, int lod); - -ivec2 textureSize(sampler1DArrayShadow sampler, int lod); -ivec3 textureSize(sampler2DArrayShadow sampler, int lod); - -ivec2 textureSize(sampler2DRect sampler); -ivec2 textureSize(isampler2DRect sampler); -ivec2 textureSize(usampler2DRect sampler); -ivec2 textureSize(sampler2DRectShadow sampler); - -int textureSize( samplerBuffer sampler); -int textureSize(isamplerBuffer sampler); -int textureSize(usamplerBuffer sampler); - -ivec2 textureSize( sampler2DMS sampler); -ivec2 textureSize(isampler2DMS sampler); -ivec2 textureSize(usampler2DMS sampler); - -ivec3 textureSize( sampler2DMSArray sampler); -ivec3 textureSize(isampler2DMSArray sampler); -ivec3 textureSize(usampler2DMSArray sampler); - -/* texture - no bias */ - vec4 texture( sampler1D sampler, float P); -ivec4 texture(isampler1D sampler, float P); -uvec4 texture(usampler1D sampler, float P); - - vec4 texture( sampler2D sampler, vec2 P); -ivec4 texture(isampler2D sampler, vec2 P); -uvec4 texture(usampler2D sampler, vec2 P); - - vec4 texture( sampler3D sampler, vec3 P); -ivec4 texture(isampler3D sampler, vec3 P); -uvec4 texture(usampler3D sampler, vec3 P); - - vec4 texture( samplerCube sampler, vec3 P); -ivec4 texture(isamplerCube sampler, vec3 P); -uvec4 texture(usamplerCube sampler, vec3 P); - -float texture(sampler1DShadow sampler, vec3 P); -float texture(sampler2DShadow sampler, vec3 P); -float texture(samplerCubeShadow sampler, vec4 P); - - vec4 texture( sampler1DArray sampler, vec2 P); -ivec4 texture(isampler1DArray sampler, vec2 P); -uvec4 texture(usampler1DArray sampler, vec2 P); - - vec4 texture( sampler2DArray sampler, vec3 P); -ivec4 texture(isampler2DArray sampler, vec3 P); -uvec4 texture(usampler2DArray sampler, vec3 P); - -float texture(sampler1DArrayShadow sampler, vec3 P); -float texture(sampler2DArrayShadow sampler, vec4 P); - - vec4 texture( sampler2DRect sampler, vec2 P); -ivec4 texture(isampler2DRect sampler, vec2 P); -uvec4 texture(usampler2DRect sampler, vec2 P); - -float texture(sampler2DRectShadow sampler, vec3 P); - -/* textureProj - no bias */ - vec4 textureProj( sampler1D sampler, vec2 P); -ivec4 textureProj(isampler1D sampler, vec2 P); -uvec4 textureProj(usampler1D sampler, vec2 P); - vec4 textureProj( sampler1D sampler, vec4 P); -ivec4 textureProj(isampler1D sampler, vec4 P); -uvec4 textureProj(usampler1D sampler, vec4 P); - - vec4 textureProj( sampler2D sampler, vec3 P); -ivec4 textureProj(isampler2D sampler, vec3 P); -uvec4 textureProj(usampler2D sampler, vec3 P); - vec4 textureProj( sampler2D sampler, vec4 P); -ivec4 textureProj(isampler2D sampler, vec4 P); -uvec4 textureProj(usampler2D sampler, vec4 P); - - vec4 textureProj( sampler3D sampler, vec4 P); -ivec4 textureProj(isampler3D sampler, vec4 P); -uvec4 textureProj(usampler3D sampler, vec4 P); - -float textureProj(sampler1DShadow sampler, vec4 P); -float textureProj(sampler2DShadow sampler, vec4 P); - - vec4 textureProj( sampler2DRect sampler, vec3 P); -ivec4 textureProj(isampler2DRect sampler, vec3 P); -uvec4 textureProj(usampler2DRect sampler, vec3 P); - vec4 textureProj( sampler2DRect sampler, vec4 P); -ivec4 textureProj(isampler2DRect sampler, vec4 P); -uvec4 textureProj(usampler2DRect sampler, vec4 P); - -float textureProj(sampler2DRectShadow sampler, vec4 P); - -/* textureLod */ - vec4 textureLod( sampler1D sampler, float P, float lod); -ivec4 textureLod(isampler1D sampler, float P, float lod); -uvec4 textureLod(usampler1D sampler, float P, float lod); - - vec4 textureLod( sampler2D sampler, vec2 P, float lod); -ivec4 textureLod(isampler2D sampler, vec2 P, float lod); -uvec4 textureLod(usampler2D sampler, vec2 P, float lod); - - vec4 textureLod( sampler3D sampler, vec3 P, float lod); -ivec4 textureLod(isampler3D sampler, vec3 P, float lod); -uvec4 textureLod(usampler3D sampler, vec3 P, float lod); - - vec4 textureLod( samplerCube sampler, vec3 P, float lod); -ivec4 textureLod(isamplerCube sampler, vec3 P, float lod); -uvec4 textureLod(usamplerCube sampler, vec3 P, float lod); - -float textureLod(sampler1DShadow sampler, vec3 P, float lod); -float textureLod(sampler2DShadow sampler, vec3 P, float lod); - - vec4 textureLod( sampler1DArray sampler, vec2 P, float lod); -ivec4 textureLod(isampler1DArray sampler, vec2 P, float lod); -uvec4 textureLod(usampler1DArray sampler, vec2 P, float lod); - - vec4 textureLod( sampler2DArray sampler, vec3 P, float lod); -ivec4 textureLod(isampler2DArray sampler, vec3 P, float lod); -uvec4 textureLod(usampler2DArray sampler, vec3 P, float lod); - -float textureLod(sampler1DArrayShadow sampler, vec3 P, float lod); - -/* textureOffset - no bias */ - vec4 textureOffset( sampler1D sampler, float P, int offset); -ivec4 textureOffset(isampler1D sampler, float P, int offset); -uvec4 textureOffset(usampler1D sampler, float P, int offset); - - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset); - - vec4 textureOffset( sampler2DRect sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2DRect sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2DRect sampler, vec2 P, ivec2 offset); - -float textureOffset(sampler2DRectShadow sampler, vec3 P, ivec2 offset); - -float textureOffset(sampler1DShadow sampler, vec3 P, int offset); -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset); - - vec4 textureOffset( sampler1DArray sampler, vec2 P, int offset); -ivec4 textureOffset(isampler1DArray sampler, vec2 P, int offset); -uvec4 textureOffset(usampler1DArray sampler, vec2 P, int offset); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset); - -float textureOffset(sampler1DArrayShadow sampler, vec3 P, int offset); - -/* texelFetch */ - vec4 texelFetch( sampler1D sampler, int P, int lod); -ivec4 texelFetch(isampler1D sampler, int P, int lod); -uvec4 texelFetch(usampler1D sampler, int P, int lod); - - vec4 texelFetch( sampler2D sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler2D sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler2D sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler3D sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler3D sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler3D sampler, ivec3 P, int lod); - - vec4 texelFetch( sampler2DRect sampler, ivec2 P); -ivec4 texelFetch(isampler2DRect sampler, ivec2 P); -uvec4 texelFetch(usampler2DRect sampler, ivec2 P); - - vec4 texelFetch( sampler1DArray sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler1DArray sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler1DArray sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler2DArray sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod); - - vec4 texelFetch( samplerBuffer sampler, int P); -ivec4 texelFetch(isamplerBuffer sampler, int P); -uvec4 texelFetch(usamplerBuffer sampler, int P); - - vec4 texelFetch( sampler2DMS sampler, ivec2 P, int sample); -ivec4 texelFetch(isampler2DMS sampler, ivec2 P, int sample); -uvec4 texelFetch(usampler2DMS sampler, ivec2 P, int sample); - - vec4 texelFetch( sampler2DMSArray sampler, ivec3 P, int sample); -ivec4 texelFetch(isampler2DMSArray sampler, ivec3 P, int sample); -uvec4 texelFetch(usampler2DMSArray sampler, ivec3 P, int sample); - -/* texelFetchOffset */ - vec4 texelFetchOffset( sampler1D sampler, int P, int lod, int offset); -ivec4 texelFetchOffset(isampler1D sampler, int P, int lod, int offset); -uvec4 texelFetchOffset(usampler1D sampler, int P, int lod, int offset); - - vec4 texelFetchOffset( sampler2D sampler, ivec2 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2D sampler, ivec2 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2D sampler, ivec2 P, int lod, ivec2 offset); - - vec4 texelFetchOffset( sampler3D sampler, ivec3 P, int lod, ivec3 offset); -ivec4 texelFetchOffset(isampler3D sampler, ivec3 P, int lod, ivec3 offset); -uvec4 texelFetchOffset(usampler3D sampler, ivec3 P, int lod, ivec3 offset); - - vec4 texelFetchOffset( sampler2DRect sampler, ivec2 P, ivec2 offset); -ivec4 texelFetchOffset(isampler2DRect sampler, ivec2 P, ivec2 offset); -uvec4 texelFetchOffset(usampler2DRect sampler, ivec2 P, ivec2 offset); - - vec4 texelFetchOffset( sampler1DArray sampler, ivec2 P, int lod, int offset); -ivec4 texelFetchOffset(isampler1DArray sampler, ivec2 P, int lod, int offset); -uvec4 texelFetchOffset(usampler1DArray sampler, ivec2 P, int lod, int offset); - - vec4 texelFetchOffset( sampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2DArray sampler, ivec3 P, int lod, ivec2 offset); - -/* textureProjOffset - no bias */ - vec4 textureProjOffset( sampler1D sampler, vec2 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec2 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec2 P, int offset); - vec4 textureProjOffset( sampler1D sampler, vec4 P, int offset); -ivec4 textureProjOffset(isampler1D sampler, vec4 P, int offset); -uvec4 textureProjOffset(usampler1D sampler, vec4 P, int offset); - - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset); - - vec4 textureProjOffset( sampler2DRect sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2DRect sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2DRect sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2DRect sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2DRect sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2DRect sampler, vec4 P, ivec2 offset); - -float textureProjOffset(sampler2DRectShadow sampler, vec4 P, ivec2 offset); - -float textureProjOffset(sampler1DShadow sampler, vec4 P, int offset); -float textureProjOffset(sampler2DShadow sampler, vec4 P, ivec2 offset); - -/* textureLodOffset */ - vec4 textureLodOffset( sampler1D sampler, float P, float lod, int offset); -ivec4 textureLodOffset(isampler1D sampler, float P, float lod, int offset); -uvec4 textureLodOffset(usampler1D sampler, float P, float lod, int offset); - - vec4 textureLodOffset( sampler2D sampler, vec2 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2D sampler, vec2 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2D sampler, vec2 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler3D sampler, vec3 P, float lod, ivec3 offset); -ivec4 textureLodOffset(isampler3D sampler, vec3 P, float lod, ivec3 offset); -uvec4 textureLodOffset(usampler3D sampler, vec3 P, float lod, ivec3 offset); - -float textureLodOffset(sampler1DShadow samp, vec3 P, float lod, int offset); -float textureLodOffset(sampler2DShadow samp, vec3 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler1DArray sampler, vec2 P, float lod, int offset); -ivec4 textureLodOffset(isampler1DArray sampler, vec2 P, float lod, int offset); -uvec4 textureLodOffset(usampler1DArray sampler, vec2 P, float lod, int offset); - - vec4 textureLodOffset( sampler2DArray samp, vec3 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2DArray samp, vec3 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2DArray samp, vec3 P, float lod, ivec2 offset); - -float textureLodOffset(sampler1DArrayShadow s, vec3 P, float lod, int offset); - -/* textureProjLod */ - vec4 textureProjLod( sampler1D sampler, vec2 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec2 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec2 P, float lod); - vec4 textureProjLod( sampler1D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler1D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler1D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler2D sampler, vec3 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec3 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec3 P, float lod); - vec4 textureProjLod( sampler2D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler3D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler3D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler3D sampler, vec4 P, float lod); - -float textureProjLod(sampler1DShadow sampler, vec4 P, float lod); -float textureProjLod(sampler2DShadow sampler, vec4 P, float lod); - -/* textureProjLodOffset */ - vec4 textureProjLodOffset( sampler1D sampler, vec2 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec2 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec2 P, float lod, int offset); - vec4 textureProjLodOffset( sampler1D sampler, vec4 P, float lod, int offset); -ivec4 textureProjLodOffset(isampler1D sampler, vec4 P, float lod, int offset); -uvec4 textureProjLodOffset(usampler1D sampler, vec4 P, float lod, int offset); - - vec4 textureProjLodOffset( sampler2D sampler, vec3 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec3 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec3 P, float lod, ivec2 offset); - vec4 textureProjLodOffset( sampler2D sampler, vec4 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec4 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec4 P, float lod, ivec2 offset); - - vec4 textureProjLodOffset( sampler3D sampler, vec4 P, float lod, ivec3 offset); -ivec4 textureProjLodOffset(isampler3D sampler, vec4 P, float lod, ivec3 offset); -uvec4 textureProjLodOffset(usampler3D sampler, vec4 P, float lod, ivec3 offset); - -float textureProjLodOffset(sampler1DShadow s, vec4 P, float lod, int offset); -float textureProjLodOffset(sampler2DShadow s, vec4 P, float lod, ivec2 offset); - -/* textureGrad */ - vec4 textureGrad( sampler1D sampler, float P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1D sampler, float P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1D sampler, float P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); - - vec4 textureGrad( sampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler2DRectShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler1DShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); -float textureGrad(samplerCubeShadow sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler1DArray sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureGrad(isampler1DArray sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureGrad(usampler1DArray sampler, vec2 P, float dPdx, float dPdy); - - vec4 textureGrad( sampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler1DArrayShadow sampler, vec3 P, float dPdx, float dPdy); -float textureGrad(sampler2DArrayShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureGradOffset */ - vec4 textureGradOffset( sampler1D s, float P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1D s, float P, float dx, float dy, int offset); -uvec4 textureGradOffset(usampler1D s, float P, float dx, float dy, int offset); - - vec4 textureGradOffset( sampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - - vec4 textureGradOffset( sampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -ivec4 textureGradOffset(isampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -uvec4 textureGradOffset(usampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); - - vec4 textureGradOffset( sampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2DRect s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - -float textureGradOffset(sampler2DRectShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler1DShadow s, vec3 P, float dx, float dy, int off); -float textureGradOffset(sampler2DShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureGradOffset( sampler1DArray s, vec2 P, float dx, float dy, int off); -ivec4 textureGradOffset(isampler1DArray s, vec2 P, float dx, float dy, int off); -uvec4 textureGradOffset(usampler1DArray s, vec2 P, float dx, float dy, int off); - - vec4 textureGradOffset( sampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureGradOffset(isampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureGradOffset(usampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler1DArrayShadow s, vec3 P, float dx, float dy, int o); -float textureGradOffset(sampler2DArrayShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* textureProjGrad */ - vec4 textureProjGrad( sampler1D sampler, vec2 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec2 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec2 P, float dPdx, float dPdy); - vec4 textureProjGrad( sampler1D sampler, vec4 P, float dPdx, float dPdy); -ivec4 textureProjGrad(isampler1D sampler, vec4 P, float dPdx, float dPdy); -uvec4 textureProjGrad(usampler1D sampler, vec4 P, float dPdx, float dPdy); - - vec4 textureProjGrad( sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); - - vec4 textureProjGrad( sampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -ivec4 textureProjGrad(isampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -uvec4 textureProjGrad(usampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureProjGrad( sampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -float textureProjGrad(sampler2DRectShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -float textureProjGrad(sampler1DShadow sampler, vec4 P, float dPdx, float dPdy); -float textureProjGrad(sampler2DShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureProjGradOffset */ - vec4 textureProjGradOffset( sampler1D s, vec2 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec2 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec2 P, float dx, float dy, int off); - vec4 textureProjGradOffset( sampler1D s, vec4 P, float dx, float dy, int off); -ivec4 textureProjGradOffset(isampler1D s, vec4 P, float dx, float dy, int off); -uvec4 textureProjGradOffset(usampler1D s, vec4 P, float dx, float dy, int off); - - vec4 textureProjGradOffset( sampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureProjGradOffset( sampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - -float textureProjGradOffset(sampler2DRectShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - - vec4 textureProjGradOffset( sampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -ivec4 textureProjGradOffset(isampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -uvec4 textureProjGradOffset(usampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); - -float textureProjGradOffset(sampler1DShadow s, vec4 P, float dx, float dy, int o); -float textureProjGradOffset(sampler2DShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* - * The following texture functions are deprecated: - */ -vec4 texture1D (sampler1D sampler, float coord); -vec4 texture1DProj (sampler1D sampler, vec2 coord); -vec4 texture1DProj (sampler1D sampler, vec4 coord); -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); - -vec4 texture2D (sampler2D sampler, vec2 coord); -vec4 texture2DProj (sampler2D sampler, vec3 coord); -vec4 texture2DProj (sampler2D sampler, vec4 coord); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); - -vec4 textureCube (samplerCube sampler, vec3 coord); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); - -vec4 shadow1D (sampler1DShadow sampler, vec3 coord); -vec4 shadow2D (sampler2DShadow sampler, vec3 coord); -vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord); -vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); - -/* - * 8.9 - Noise Functions - */ -float noise1(float x); -float noise1(vec2 x); -float noise1(vec3 x); -float noise1(vec4 x); - -vec2 noise2(float x); -vec2 noise2(vec2 x); -vec2 noise2(vec3 x); -vec2 noise2(vec4 x); - -vec3 noise3(float x); -vec3 noise3(vec2 x); -vec3 noise3(vec3 x); -vec3 noise3(vec4 x); - -vec4 noise4(float x); -vec4 noise4(vec2 x); -vec4 noise4(vec3 x); -vec4 noise4(vec4 x); diff --git a/dist/Mesa/src/glsl/builtins/profiles/300es.frag b/dist/Mesa/src/glsl/builtins/profiles/300es.frag deleted file mode 100644 index ef412d882..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/300es.frag +++ /dev/null @@ -1,85 +0,0 @@ -#version 300 es -precision highp float; - -/* texture - bias variants */ - vec4 texture( sampler2D sampler, vec2 P, float bias); -ivec4 texture(isampler2D sampler, vec2 P, float bias); -uvec4 texture(usampler2D sampler, vec2 P, float bias); - - vec4 texture( sampler3D sampler, vec3 P, float bias); -ivec4 texture(isampler3D sampler, vec3 P, float bias); -uvec4 texture(usampler3D sampler, vec3 P, float bias); - - vec4 texture( samplerCube sampler, vec3 P, float bias); -ivec4 texture(isamplerCube sampler, vec3 P, float bias); -uvec4 texture(usamplerCube sampler, vec3 P, float bias); - -float texture(sampler2DShadow sampler, vec3 P, float bias); -float texture(samplerCubeShadow sampler, vec4 P, float bias); - - vec4 texture( sampler2DArray sampler, vec3 P, float bias); -ivec4 texture(isampler2DArray sampler, vec3 P, float bias); -uvec4 texture(usampler2DArray sampler, vec3 P, float bias); - -float texture(sampler2DArrayShadow sampler, vec4 P, float bias); - -/* textureProj - bias variants */ - vec4 textureProj( sampler2D sampler, vec3 P, float bias); -ivec4 textureProj(isampler2D sampler, vec3 P, float bias); -uvec4 textureProj(usampler2D sampler, vec3 P, float bias); - vec4 textureProj( sampler2D sampler, vec4 P, float bias); -ivec4 textureProj(isampler2D sampler, vec4 P, float bias); -uvec4 textureProj(usampler2D sampler, vec4 P, float bias); - - vec4 textureProj( sampler3D sampler, vec4 P, float bias); -ivec4 textureProj(isampler3D sampler, vec4 P, float bias); -uvec4 textureProj(usampler3D sampler, vec4 P, float bias); - -float textureProj(sampler2DShadow sampler, vec4 P, float bias); - -/* textureOffset - bias variants */ - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset, float bias); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset, float bias); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset, float bias); - -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset, float bias); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset, float bias); - -/* textureProjOffsetOffset - bias variants */ - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset, float bias); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset, float bias); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset, float bias); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset, float bias); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset, float bias); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset, float bias); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset, float bias); - -float textureProjOffset(sampler2DShadow s, vec4 P, ivec2 offset, float bias); - -/* - * 8.9 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/300es.glsl b/dist/Mesa/src/glsl/builtins/profiles/300es.glsl deleted file mode 100644 index 4b7160dd2..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/300es.glsl +++ /dev/null @@ -1,749 +0,0 @@ -#version 300 es -/* - * 8.1 - Angle and Trigonometry Functions - */ -float radians(float degrees); -vec2 radians(vec2 degrees); -vec3 radians(vec3 degrees); -vec4 radians(vec4 degrees); - -float degrees(float radians); -vec2 degrees(vec2 radians); -vec3 degrees(vec3 radians); -vec4 degrees(vec4 radians); - -float sin(float angle); -vec2 sin(vec2 angle); -vec3 sin(vec3 angle); -vec4 sin(vec4 angle); - -float cos(float angle); -vec2 cos(vec2 angle); -vec3 cos(vec3 angle); -vec4 cos(vec4 angle); - -float tan(float angle); -vec2 tan(vec2 angle); -vec3 tan(vec3 angle); -vec4 tan(vec4 angle); - -float asin(float angle); -vec2 asin(vec2 angle); -vec3 asin(vec3 angle); -vec4 asin(vec4 angle); - -float acos(float angle); -vec2 acos(vec2 angle); -vec3 acos(vec3 angle); -vec4 acos(vec4 angle); - -float atan(float y, float x); -vec2 atan(vec2 y, vec2 x); -vec3 atan(vec3 y, vec3 x); -vec4 atan(vec4 y, vec4 x); - -float atan(float y_over_x); -vec2 atan(vec2 y_over_x); -vec3 atan(vec3 y_over_x); -vec4 atan(vec4 y_over_x); - -float sinh(float x); -vec2 sinh(vec2 x); -vec3 sinh(vec3 x); -vec4 sinh(vec4 x); - -float cosh(float x); -vec2 cosh(vec2 x); -vec3 cosh(vec3 x); -vec4 cosh(vec4 x); - -float tanh(float x); -vec2 tanh(vec2 x); -vec3 tanh(vec3 x); -vec4 tanh(vec4 x); - -float asinh(float x); -vec2 asinh(vec2 x); -vec3 asinh(vec3 x); -vec4 asinh(vec4 x); - -float acosh(float x); -vec2 acosh(vec2 x); -vec3 acosh(vec3 x); -vec4 acosh(vec4 x); - -float atanh(float x); -vec2 atanh(vec2 x); -vec3 atanh(vec3 x); -vec4 atanh(vec4 x); - -/* - * 8.2 - Exponential Functions - */ -float pow(float x, float y); -vec2 pow(vec2 x, vec2 y); -vec3 pow(vec3 x, vec3 y); -vec4 pow(vec4 x, vec4 y); - -float exp(float x); -vec2 exp(vec2 x); -vec3 exp(vec3 x); -vec4 exp(vec4 x); - -float log(float x); -vec2 log(vec2 x); -vec3 log(vec3 x); -vec4 log(vec4 x); - -float exp2(float x); -vec2 exp2(vec2 x); -vec3 exp2(vec3 x); -vec4 exp2(vec4 x); - -float log2(float x); -vec2 log2(vec2 x); -vec3 log2(vec3 x); -vec4 log2(vec4 x); - -float sqrt(float x); -vec2 sqrt(vec2 x); -vec3 sqrt(vec3 x); -vec4 sqrt(vec4 x); - -float inversesqrt(float x); -vec2 inversesqrt(vec2 x); -vec3 inversesqrt(vec3 x); -vec4 inversesqrt(vec4 x); - -/* - * 8.3 - Common Functions - */ -float abs(float x); -vec2 abs(vec2 x); -vec3 abs(vec3 x); -vec4 abs(vec4 x); -int abs(int x); -ivec2 abs(ivec2 x); -ivec3 abs(ivec3 x); -ivec4 abs(ivec4 x); - -float sign(float x); -vec2 sign(vec2 x); -vec3 sign(vec3 x); -vec4 sign(vec4 x); -int sign(int x); -ivec2 sign(ivec2 x); -ivec3 sign(ivec3 x); -ivec4 sign(ivec4 x); - -float floor(float x); -vec2 floor(vec2 x); -vec3 floor(vec3 x); -vec4 floor(vec4 x); - -float trunc(float x); -vec2 trunc(vec2 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); -vec4 roundEven(vec4 x); - -float ceil(float x); -vec2 ceil(vec2 x); -vec3 ceil(vec3 x); -vec4 ceil(vec4 x); - -float fract(float x); -vec2 fract(vec2 x); -vec3 fract(vec3 x); -vec4 fract(vec4 x); - -float mod(float x, float y); -vec2 mod(vec2 x, float y); -vec3 mod(vec3 x, float y); -vec4 mod(vec4 x, float y); - -vec2 mod(vec2 x, vec2 y); -vec3 mod(vec3 x, vec3 y); -vec4 mod(vec4 x, vec4 y); - -float modf(float x, out float i); -vec2 modf(vec2 x, out vec2 i); -vec3 modf(vec3 x, out vec3 i); -vec4 modf(vec4 x, out vec4 i); - -float min(float x, float y); -vec2 min(vec2 x, vec2 y); -vec3 min(vec3 x, vec3 y); -vec4 min(vec4 x, vec4 y); - -vec2 min(vec2 x, float y); -vec3 min(vec3 x, float y); -vec4 min(vec4 x, float y); - -int min(int x, int y); -ivec2 min(ivec2 x, ivec2 y); -ivec3 min(ivec3 x, ivec3 y); -ivec4 min(ivec4 x, ivec4 y); - -ivec2 min(ivec2 x, int y); -ivec3 min(ivec3 x, int y); -ivec4 min(ivec4 x, int y); - -uint min(uint x, uint y); -uvec2 min(uvec2 x, uvec2 y); -uvec3 min(uvec3 x, uvec3 y); -uvec4 min(uvec4 x, uvec4 y); - -uvec2 min(uvec2 x, uint y); -uvec3 min(uvec3 x, uint y); -uvec4 min(uvec4 x, uint y); - -float max(float x, float y); -vec2 max(vec2 x, vec2 y); -vec3 max(vec3 x, vec3 y); -vec4 max(vec4 x, vec4 y); - -vec2 max(vec2 x, float y); -vec3 max(vec3 x, float y); -vec4 max(vec4 x, float y); - -int max(int x, int y); -ivec2 max(ivec2 x, ivec2 y); -ivec3 max(ivec3 x, ivec3 y); -ivec4 max(ivec4 x, ivec4 y); - -ivec2 max(ivec2 x, int y); -ivec3 max(ivec3 x, int y); -ivec4 max(ivec4 x, int y); - -uint max(uint x, uint y); -uvec2 max(uvec2 x, uvec2 y); -uvec3 max(uvec3 x, uvec3 y); -uvec4 max(uvec4 x, uvec4 y); - -uvec2 max(uvec2 x, uint y); -uvec3 max(uvec3 x, uint y); -uvec4 max(uvec4 x, uint y); - -float clamp(float x, float minVal, float maxVal); -vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal); -vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal); -vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal); - -vec2 clamp(vec2 x, float minVal, float maxVal); -vec3 clamp(vec3 x, float minVal, float maxVal); -vec4 clamp(vec4 x, float minVal, float maxVal); - -int clamp(int x, int minVal, int maxVal); -ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal); -ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal); -ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal); - -ivec2 clamp(ivec2 x, int minVal, int maxVal); -ivec3 clamp(ivec3 x, int minVal, int maxVal); -ivec4 clamp(ivec4 x, int minVal, int maxVal); - -uint clamp(uint x, uint minVal, uint maxVal); -uvec2 clamp(uvec2 x, uvec2 minVal, uvec2 maxVal); -uvec3 clamp(uvec3 x, uvec3 minVal, uvec3 maxVal); -uvec4 clamp(uvec4 x, uvec4 minVal, uvec4 maxVal); - -uvec2 clamp(uvec2 x, uint minVal, uint maxVal); -uvec3 clamp(uvec3 x, uint minVal, uint maxVal); -uvec4 clamp(uvec4 x, uint minVal, uint maxVal); - -float mix(float x, float y, float a); -vec2 mix(vec2 x, vec2 y, vec2 a); -vec3 mix(vec3 x, vec3 y, vec3 a); -vec4 mix(vec4 x, vec4 y, vec4 a); - -vec2 mix(vec2 x, vec2 y, float a); -vec3 mix(vec3 x, vec3 y, float a); -vec4 mix(vec4 x, vec4 y, float a); - -float mix(float x, float y, bool a); -vec2 mix(vec2 x, vec2 y, bvec2 a); -vec3 mix(vec3 x, vec3 y, bvec3 a); -vec4 mix(vec4 x, vec4 y, bvec4 a); - -float step(float edge, float x); -vec2 step(vec2 edge, vec2 x); -vec3 step(vec3 edge, vec3 x); -vec4 step(vec4 edge, vec4 x); - -vec2 step(float edge, vec2 x); -vec3 step(float edge, vec3 x); -vec4 step(float edge, vec4 x); - -float smoothstep(float edge0, float edge1, float x); -vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x); -vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x); -vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x); - -vec2 smoothstep(float edge0, float edge1, vec2 x); -vec3 smoothstep(float edge0, float edge1, vec3 x); -vec4 smoothstep(float edge0, float edge1, vec4 x); - -bool isnan(float x); -bvec2 isnan(vec2 x); -bvec3 isnan(vec3 x); -bvec4 isnan(vec4 x); - -bool isinf(float x); -bvec2 isinf(vec2 x); -bvec3 isinf(vec3 x); -bvec4 isinf(vec4 x); - -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); - -/* - * 8.4 - Floating-Point Pack and Unpack Functions - */ -highp uint packSnorm2x16( vec2 v); -highp uint packUnorm2x16( vec2 v); -highp uint packHalf2x16 (mediump vec2 v); - -highp vec2 unpackSnorm2x16(highp uint p); -highp vec2 unpackUnorm2x16(highp uint p); -mediump vec2 unpackHalf2x16 (highp uint p); - -/* - * 8.5 - Geometric Functions - */ -float length(float x); -float length(vec2 x); -float length(vec3 x); -float length(vec4 x); - -float distance(float p0, float p1); -float distance(vec2 p0, vec2 p1); -float distance(vec3 p0, vec3 p1); -float distance(vec4 p0, vec4 p1); - -float dot(float x, float y); -float dot(vec2 x, vec2 y); -float dot(vec3 x, vec3 y); -float dot(vec4 x, vec4 y); - -vec3 cross(vec3 x, vec3 y); - -float normalize(float x); -vec2 normalize(vec2 x); -vec3 normalize(vec3 x); -vec4 normalize(vec4 x); - -float faceforward(float N, float I, float Nref); -vec2 faceforward(vec2 N, vec2 I, vec2 Nref); -vec3 faceforward(vec3 N, vec3 I, vec3 Nref); -vec4 faceforward(vec4 N, vec4 I, vec4 Nref); - -float reflect(float I, float N); -vec2 reflect(vec2 I, vec2 N); -vec3 reflect(vec3 I, vec3 N); -vec4 reflect(vec4 I, vec4 N); - -float refract(float I, float N, float eta); -vec2 refract(vec2 I, vec2 N, float eta); -vec3 refract(vec3 I, vec3 N, float eta); -vec4 refract(vec4 I, vec4 N, float eta); - -/* - * 8.6 - Matrix Functions - */ -mat2 matrixCompMult(mat2 x, mat2 y); -mat3 matrixCompMult(mat3 x, mat3 y); -mat4 matrixCompMult(mat4 x, mat4 y); -mat2x3 matrixCompMult(mat2x3 x, mat2x3 y); -mat2x4 matrixCompMult(mat2x4 x, mat2x4 y); -mat3x2 matrixCompMult(mat3x2 x, mat3x2 y); -mat3x4 matrixCompMult(mat3x4 x, mat3x4 y); -mat4x2 matrixCompMult(mat4x2 x, mat4x2 y); -mat4x3 matrixCompMult(mat4x3 x, mat4x3 y); - -mat2 outerProduct(vec2 c, vec2 r); -mat3 outerProduct(vec3 c, vec3 r); -mat4 outerProduct(vec4 c, vec4 r); - -mat2x3 outerProduct(vec3 c, vec2 r); -mat3x2 outerProduct(vec2 c, vec3 r); - -mat2x4 outerProduct(vec4 c, vec2 r); -mat4x2 outerProduct(vec2 c, vec4 r); - -mat3x4 outerProduct(vec4 c, vec3 r); -mat4x3 outerProduct(vec3 c, vec4 r); - -mat2 transpose(mat2 m); -mat3 transpose(mat3 m); -mat4 transpose(mat4 m); - -mat2x3 transpose(mat3x2 m); -mat3x2 transpose(mat2x3 m); - -mat2x4 transpose(mat4x2 m); -mat4x2 transpose(mat2x4 m); - -mat3x4 transpose(mat4x3 m); -mat4x3 transpose(mat3x4 m); - -float determinant(mat2 m); -float determinant(mat3 m); -float determinant(mat4 m); - -mat2 inverse(mat2 m); -mat3 inverse(mat3 m); -mat4 inverse(mat4 m); - -/* - * 8.7 - Vector Relational Functions - */ -bvec2 lessThan( vec2 x, vec2 y); -bvec3 lessThan( vec3 x, vec3 y); -bvec4 lessThan( vec4 x, vec4 y); -bvec2 lessThan(ivec2 x, ivec2 y); -bvec3 lessThan(ivec3 x, ivec3 y); -bvec4 lessThan(ivec4 x, ivec4 y); -bvec2 lessThan(uvec2 x, uvec2 y); -bvec3 lessThan(uvec3 x, uvec3 y); -bvec4 lessThan(uvec4 x, uvec4 y); - -bvec2 lessThanEqual( vec2 x, vec2 y); -bvec3 lessThanEqual( vec3 x, vec3 y); -bvec4 lessThanEqual( vec4 x, vec4 y); -bvec2 lessThanEqual(ivec2 x, ivec2 y); -bvec3 lessThanEqual(ivec3 x, ivec3 y); -bvec4 lessThanEqual(ivec4 x, ivec4 y); -bvec2 lessThanEqual(uvec2 x, uvec2 y); -bvec3 lessThanEqual(uvec3 x, uvec3 y); -bvec4 lessThanEqual(uvec4 x, uvec4 y); - -bvec2 greaterThan( vec2 x, vec2 y); -bvec3 greaterThan( vec3 x, vec3 y); -bvec4 greaterThan( vec4 x, vec4 y); -bvec2 greaterThan(ivec2 x, ivec2 y); -bvec3 greaterThan(ivec3 x, ivec3 y); -bvec4 greaterThan(ivec4 x, ivec4 y); -bvec2 greaterThan(uvec2 x, uvec2 y); -bvec3 greaterThan(uvec3 x, uvec3 y); -bvec4 greaterThan(uvec4 x, uvec4 y); - -bvec2 greaterThanEqual( vec2 x, vec2 y); -bvec3 greaterThanEqual( vec3 x, vec3 y); -bvec4 greaterThanEqual( vec4 x, vec4 y); -bvec2 greaterThanEqual(ivec2 x, ivec2 y); -bvec3 greaterThanEqual(ivec3 x, ivec3 y); -bvec4 greaterThanEqual(ivec4 x, ivec4 y); -bvec2 greaterThanEqual(uvec2 x, uvec2 y); -bvec3 greaterThanEqual(uvec3 x, uvec3 y); -bvec4 greaterThanEqual(uvec4 x, uvec4 y); - -bvec2 equal( vec2 x, vec2 y); -bvec3 equal( vec3 x, vec3 y); -bvec4 equal( vec4 x, vec4 y); -bvec2 equal(ivec2 x, ivec2 y); -bvec3 equal(ivec3 x, ivec3 y); -bvec4 equal(ivec4 x, ivec4 y); -bvec2 equal(uvec2 x, uvec2 y); -bvec3 equal(uvec3 x, uvec3 y); -bvec4 equal(uvec4 x, uvec4 y); -bvec2 equal(bvec2 x, bvec2 y); -bvec3 equal(bvec3 x, bvec3 y); -bvec4 equal(bvec4 x, bvec4 y); - -bvec2 notEqual( vec2 x, vec2 y); -bvec3 notEqual( vec3 x, vec3 y); -bvec4 notEqual( vec4 x, vec4 y); -bvec2 notEqual(ivec2 x, ivec2 y); -bvec3 notEqual(ivec3 x, ivec3 y); -bvec4 notEqual(ivec4 x, ivec4 y); -bvec2 notEqual(uvec2 x, uvec2 y); -bvec3 notEqual(uvec3 x, uvec3 y); -bvec4 notEqual(uvec4 x, uvec4 y); -bvec2 notEqual(bvec2 x, bvec2 y); -bvec3 notEqual(bvec3 x, bvec3 y); -bvec4 notEqual(bvec4 x, bvec4 y); - -bool any(bvec2 x); -bool any(bvec3 x); -bool any(bvec4 x); - -bool all(bvec2 x); -bool all(bvec3 x); -bool all(bvec4 x); - -bvec2 not(bvec2 x); -bvec3 not(bvec3 x); -bvec4 not(bvec4 x); - -/* - * 8.8 - Texture Lookup Functions - */ - -/* textureSize */ -ivec2 textureSize( sampler2D sampler, int lod); -ivec2 textureSize(isampler2D sampler, int lod); -ivec2 textureSize(usampler2D sampler, int lod); - -ivec3 textureSize( sampler3D sampler, int lod); -ivec3 textureSize(isampler3D sampler, int lod); -ivec3 textureSize(usampler3D sampler, int lod); - -ivec2 textureSize( samplerCube sampler, int lod); -ivec2 textureSize(isamplerCube sampler, int lod); -ivec2 textureSize(usamplerCube sampler, int lod); - -ivec2 textureSize(sampler2DShadow sampler, int lod); -ivec2 textureSize(samplerCubeShadow sampler, int lod); - -ivec3 textureSize( sampler2DArray sampler, int lod); -ivec3 textureSize(isampler2DArray sampler, int lod); -ivec3 textureSize(usampler2DArray sampler, int lod); - -ivec3 textureSize(sampler2DArrayShadow sampler, int lod); - -/* texture - no bias */ - vec4 texture( sampler2D sampler, vec2 P); -ivec4 texture(isampler2D sampler, vec2 P); -uvec4 texture(usampler2D sampler, vec2 P); - - vec4 texture( sampler3D sampler, vec3 P); -ivec4 texture(isampler3D sampler, vec3 P); -uvec4 texture(usampler3D sampler, vec3 P); - - vec4 texture( samplerCube sampler, vec3 P); -ivec4 texture(isamplerCube sampler, vec3 P); -uvec4 texture(usamplerCube sampler, vec3 P); - -float texture(sampler2DShadow sampler, vec3 P); -float texture(samplerCubeShadow sampler, vec4 P); - - vec4 texture( sampler2DArray sampler, vec3 P); -ivec4 texture(isampler2DArray sampler, vec3 P); -uvec4 texture(usampler2DArray sampler, vec3 P); - -float texture(sampler2DArrayShadow sampler, vec4 P); - -/* textureProj - no bias */ - vec4 textureProj( sampler2D sampler, vec3 P); -ivec4 textureProj(isampler2D sampler, vec3 P); -uvec4 textureProj(usampler2D sampler, vec3 P); - vec4 textureProj( sampler2D sampler, vec4 P); -ivec4 textureProj(isampler2D sampler, vec4 P); -uvec4 textureProj(usampler2D sampler, vec4 P); - - vec4 textureProj( sampler3D sampler, vec4 P); -ivec4 textureProj(isampler3D sampler, vec4 P); -uvec4 textureProj(usampler3D sampler, vec4 P); - -float textureProj(sampler2DShadow sampler, vec4 P); - -/* textureLod */ - vec4 textureLod( sampler2D sampler, vec2 P, float lod); -ivec4 textureLod(isampler2D sampler, vec2 P, float lod); -uvec4 textureLod(usampler2D sampler, vec2 P, float lod); - - vec4 textureLod( sampler3D sampler, vec3 P, float lod); -ivec4 textureLod(isampler3D sampler, vec3 P, float lod); -uvec4 textureLod(usampler3D sampler, vec3 P, float lod); - - vec4 textureLod( samplerCube sampler, vec3 P, float lod); -ivec4 textureLod(isamplerCube sampler, vec3 P, float lod); -uvec4 textureLod(usamplerCube sampler, vec3 P, float lod); - -float textureLod(sampler2DShadow sampler, vec3 P, float lod); - - vec4 textureLod( sampler2DArray sampler, vec3 P, float lod); -ivec4 textureLod(isampler2DArray sampler, vec3 P, float lod); -uvec4 textureLod(usampler2DArray sampler, vec3 P, float lod); - -/* textureOffset - no bias */ - vec4 textureOffset( sampler2D sampler, vec2 P, ivec2 offset); -ivec4 textureOffset(isampler2D sampler, vec2 P, ivec2 offset); -uvec4 textureOffset(usampler2D sampler, vec2 P, ivec2 offset); - - vec4 textureOffset( sampler3D sampler, vec3 P, ivec3 offset); -ivec4 textureOffset(isampler3D sampler, vec3 P, ivec3 offset); -uvec4 textureOffset(usampler3D sampler, vec3 P, ivec3 offset); - -float textureOffset(sampler2DShadow sampler, vec3 P, ivec2 offset); - - vec4 textureOffset( sampler2DArray sampler, vec3 P, ivec2 offset); -ivec4 textureOffset(isampler2DArray sampler, vec3 P, ivec2 offset); -uvec4 textureOffset(usampler2DArray sampler, vec3 P, ivec2 offset); - -/* texelFetch */ - vec4 texelFetch( sampler2D sampler, ivec2 P, int lod); -ivec4 texelFetch(isampler2D sampler, ivec2 P, int lod); -uvec4 texelFetch(usampler2D sampler, ivec2 P, int lod); - - vec4 texelFetch( sampler3D sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler3D sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler3D sampler, ivec3 P, int lod); - - vec4 texelFetch( sampler2DArray sampler, ivec3 P, int lod); -ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod); -uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod); - -/* texelFetchOffset */ - vec4 texelFetchOffset( sampler2D sampler, ivec2 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2D sampler, ivec2 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2D sampler, ivec2 P, int lod, ivec2 offset); - - vec4 texelFetchOffset( sampler3D sampler, ivec3 P, int lod, ivec3 offset); -ivec4 texelFetchOffset(isampler3D sampler, ivec3 P, int lod, ivec3 offset); -uvec4 texelFetchOffset(usampler3D sampler, ivec3 P, int lod, ivec3 offset); - - vec4 texelFetchOffset( sampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -ivec4 texelFetchOffset(isampler2DArray sampler, ivec3 P, int lod, ivec2 offset); -uvec4 texelFetchOffset(usampler2DArray sampler, ivec3 P, int lod, ivec2 offset); - -/* textureProjOffset - no bias */ - vec4 textureProjOffset( sampler2D sampler, vec3 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec3 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec3 P, ivec2 offset); - vec4 textureProjOffset( sampler2D sampler, vec4 P, ivec2 offset); -ivec4 textureProjOffset(isampler2D sampler, vec4 P, ivec2 offset); -uvec4 textureProjOffset(usampler2D sampler, vec4 P, ivec2 offset); - - vec4 textureProjOffset( sampler3D sampler, vec4 P, ivec3 offset); -ivec4 textureProjOffset(isampler3D sampler, vec4 P, ivec3 offset); -uvec4 textureProjOffset(usampler3D sampler, vec4 P, ivec3 offset); - -float textureProjOffset(sampler2DShadow sampler, vec4 P, ivec2 offset); - -/* textureLodOffset */ - vec4 textureLodOffset( sampler2D sampler, vec2 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2D sampler, vec2 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2D sampler, vec2 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler3D sampler, vec3 P, float lod, ivec3 offset); -ivec4 textureLodOffset(isampler3D sampler, vec3 P, float lod, ivec3 offset); -uvec4 textureLodOffset(usampler3D sampler, vec3 P, float lod, ivec3 offset); - -float textureLodOffset(sampler2DShadow samp, vec3 P, float lod, ivec2 offset); - - vec4 textureLodOffset( sampler2DArray samp, vec3 P, float lod, ivec2 offset); -ivec4 textureLodOffset(isampler2DArray samp, vec3 P, float lod, ivec2 offset); -uvec4 textureLodOffset(usampler2DArray samp, vec3 P, float lod, ivec2 offset); - -/* textureProjLod */ - vec4 textureProjLod( sampler2D sampler, vec3 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec3 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec3 P, float lod); - vec4 textureProjLod( sampler2D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler2D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler2D sampler, vec4 P, float lod); - - vec4 textureProjLod( sampler3D sampler, vec4 P, float lod); -ivec4 textureProjLod(isampler3D sampler, vec4 P, float lod); -uvec4 textureProjLod(usampler3D sampler, vec4 P, float lod); - -float textureProjLod(sampler2DShadow sampler, vec4 P, float lod); - -/* textureProjLodOffset */ - vec4 textureProjLodOffset( sampler2D sampler, vec3 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec3 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec3 P, float lod, ivec2 offset); - vec4 textureProjLodOffset( sampler2D sampler, vec4 P, float lod, ivec2 offset); -ivec4 textureProjLodOffset(isampler2D sampler, vec4 P, float lod, ivec2 offset); -uvec4 textureProjLodOffset(usampler2D sampler, vec4 P, float lod, ivec2 offset); - - vec4 textureProjLodOffset( sampler3D sampler, vec4 P, float lod, ivec3 offset); -ivec4 textureProjLodOffset(isampler3D sampler, vec4 P, float lod, ivec3 offset); -uvec4 textureProjLodOffset(usampler3D sampler, vec4 P, float lod, ivec3 offset); - -float textureProjLodOffset(sampler2DShadow s, vec4 P, float lod, ivec2 offset); - -/* textureGrad */ - vec4 textureGrad( sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy); - - vec4 textureGrad( sampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad(isamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad(usamplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy); - -float textureGrad(sampler2DShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy); -float textureGrad(samplerCubeShadow sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureGrad( sampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureGrad(isampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureGrad(usampler2DArray sampler, vec3 P, vec2 dPdx, vec2 dPdy); - -float textureGrad(sampler2DArrayShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureGradOffset */ - vec4 textureGradOffset( sampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -ivec4 textureGradOffset(isampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); -uvec4 textureGradOffset(usampler2D s, vec2 P, vec2 dx, vec2 dy, ivec2 offset); - - vec4 textureGradOffset( sampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -ivec4 textureGradOffset(isampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); -uvec4 textureGradOffset(usampler3D s, vec3 P, vec3 dx, vec3 dy, ivec3 offset); - -float textureGradOffset(sampler2DShadow s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureGradOffset( sampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureGradOffset(isampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureGradOffset(usampler2DArray s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - -float textureGradOffset(sampler2DArrayShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); - -/* textureProjGrad */ - vec4 textureProjGrad( sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy); - vec4 textureProjGrad( sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -ivec4 textureProjGrad(isampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); -uvec4 textureProjGrad(usampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy); - - vec4 textureProjGrad( sampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -ivec4 textureProjGrad(isampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); -uvec4 textureProjGrad(usampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy); - -float textureProjGrad(sampler2DShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy); - -/* textureProjGradOffset */ - vec4 textureProjGradOffset( sampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec3 P, vec2 dx, vec2 dy, ivec2 off); - vec4 textureProjGradOffset( sampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -ivec4 textureProjGradOffset(isampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); -uvec4 textureProjGradOffset(usampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 off); - - vec4 textureProjGradOffset( sampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -ivec4 textureProjGradOffset(isampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); -uvec4 textureProjGradOffset(usampler3D s, vec4 P, vec3 dx, vec3 dy, ivec3 off); - -float textureProjGradOffset(sampler2DShadow s, vec4 P, vec2 dx, vec2 dy, ivec2 o); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_gpu_shader5.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_gpu_shader5.glsl deleted file mode 100644 index 458300f9b..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_gpu_shader5.glsl +++ /dev/null @@ -1,56 +0,0 @@ -#version 150 -#extension GL_ARB_gpu_shader5 : enable - -int bitfieldExtract(int value, int offset, int bits); -ivec2 bitfieldExtract(ivec2 value, int offset, int bits); -ivec3 bitfieldExtract(ivec3 value, int offset, int bits); -ivec4 bitfieldExtract(ivec4 value, int offset, int bits); -uint bitfieldExtract(uint value, int offset, int bits); -uvec2 bitfieldExtract(uvec2 value, int offset, int bits); -uvec3 bitfieldExtract(uvec3 value, int offset, int bits); -uvec4 bitfieldExtract(uvec4 value, int offset, int bits); - -int bitfieldInsert(int base, int insert, int offset, int bits); -ivec2 bitfieldInsert(ivec2 base, ivec2 insert, int offset, int bits); -ivec3 bitfieldInsert(ivec3 base, ivec3 insert, int offset, int bits); -ivec4 bitfieldInsert(ivec4 base, ivec4 insert, int offset, int bits); -uint bitfieldInsert(uint base, uint insert, int offset, int bits); -uvec2 bitfieldInsert(uvec2 base, uvec2 insert, int offset, int bits); -uvec3 bitfieldInsert(uvec3 base, uvec3 insert, int offset, int bits); -uvec4 bitfieldInsert(uvec4 base, uvec4 insert, int offset, int bits); - -int bitfieldReverse(int value); -ivec2 bitfieldReverse(ivec2 value); -ivec3 bitfieldReverse(ivec3 value); -ivec4 bitfieldReverse(ivec4 value); -uint bitfieldReverse(uint value); -uvec2 bitfieldReverse(uvec2 value); -uvec3 bitfieldReverse(uvec3 value); -uvec4 bitfieldReverse(uvec4 value); - -int bitCount(int value); -ivec2 bitCount(ivec2 value); -ivec3 bitCount(ivec3 value); -ivec4 bitCount(ivec4 value); -int bitCount(uint value); -ivec2 bitCount(uvec2 value); -ivec3 bitCount(uvec3 value); -ivec4 bitCount(uvec4 value); - -int findLSB(int value); -ivec2 findLSB(ivec2 value); -ivec3 findLSB(ivec3 value); -ivec4 findLSB(ivec4 value); -int findLSB(uint value); -ivec2 findLSB(uvec2 value); -ivec3 findLSB(uvec3 value); -ivec4 findLSB(uvec4 value); - -int findMSB(int value); -ivec2 findMSB(ivec2 value); -ivec3 findMSB(ivec3 value); -ivec4 findMSB(ivec4 value); -int findMSB(uint value); -ivec2 findMSB(uvec2 value); -ivec3 findMSB(uvec3 value); -ivec4 findMSB(uvec4 value); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl deleted file mode 100644 index e03459401..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl +++ /dev/null @@ -1,22 +0,0 @@ -#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); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag b/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag deleted file mode 100644 index 26e84d0f5..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag +++ /dev/null @@ -1,17 +0,0 @@ -/* - * The existing isotropic vertex texture functions are added to the - * built-in functions for fragment shaders. - */ -vec4 texture1DLod (sampler1D sampler, float coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod); -vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod); -vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod); -vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod); -vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod); -vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod); -vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod); -vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod); -vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.glsl deleted file mode 100644 index edfed26fc..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_shader_texture_lod.glsl +++ /dev/null @@ -1,46 +0,0 @@ -/* New anisotropic texture functions, providing explicit derivatives: */ -vec4 texture1DGradARB (sampler1D sampler, - float P, float dPdx, float dPdy); -vec4 texture1DProjGradARB (sampler1D sampler, - vec2 P, float dPdx, float dPdy); -vec4 texture1DProjGradARB (sampler1D sampler, - vec4 P, float dPdx, float dPdy); - -vec4 texture2DGradARB (sampler2D sampler, - vec2 P, vec2 dPdx, vec2 dPdy); -vec4 texture2DProjGradARB (sampler2D sampler, - vec3 P, vec2 dPdx, vec2 dPdy); -vec4 texture2DProjGradARB (sampler2D sampler, - vec4 P, vec2 dPdx, vec2 dPdy); - -vec4 texture3DGradARB (sampler3D sampler, - vec3 P, vec3 dPdx, vec3 dPdy); -vec4 texture3DProjGradARB (sampler3D sampler, - vec4 P, vec3 dPdx, vec3 dPdy); - -vec4 textureCubeGradARB (samplerCube sampler, - vec3 P, vec3 dPdx, vec3 dPdy); - -vec4 shadow1DGradARB (sampler1DShadow sampler, - vec3 P, float dPdx, float dPdy); -vec4 shadow1DProjGradARB (sampler1DShadow sampler, - vec4 P, float dPdx, float dPdy); - -vec4 shadow2DGradARB (sampler2DShadow sampler, - vec3 P, vec2 dPdx, vec2 dPdy); -vec4 shadow2DProjGradARB (sampler2DShadow sampler, - vec4 P, vec2 dPdx, vec2 dPdy); - -#ifdef GL_ARB_texture_rectangle -vec4 texture2DRectGradARB (sampler2DRect sampler, - vec2 P, vec2 dPdx, vec2 dPdy); -vec4 texture2DRectProjGradARB(sampler2DRect sampler, - vec3 P, vec2 dPdx, vec2 dPdy); -vec4 texture2DRectProjGradARB(sampler2DRect sampler, - vec4 P, vec2 dPdx, vec2 dPdy); - -vec4 shadow2DRectGradARB (sampler2DRectShadow sampler, - vec3 P, vec2 dPdx, vec2 dPdy); -vec4 shadow2DRectProjGradARB (sampler2DRectShadow sampler, - vec4 P, vec2 dPdx, vec2 dPdy); -#endif diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_shading_language_packing.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_shading_language_packing.glsl deleted file mode 100644 index 210af5163..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_shading_language_packing.glsl +++ /dev/null @@ -1,14 +0,0 @@ -#version 130 -#extension GL_ARB_shading_language_packing : enable - -highp uint packSnorm2x16( vec2 v); -highp uint packUnorm2x16( vec2 v); -highp uint packSnorm4x8 ( vec4 v); -highp uint packUnorm4x8 ( vec4 v); -highp uint packHalf2x16 (mediump vec2 v); - -highp vec2 unpackSnorm2x16(highp uint p); -highp vec2 unpackUnorm2x16(highp uint p); -highp vec4 unpackSnorm4x8 (highp uint p); -highp vec4 unpackUnorm4x8 (highp uint p); -mediump vec2 unpackHalf2x16 (highp uint p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.frag b/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.frag deleted file mode 100644 index 0d9f4f66d..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.frag +++ /dev/null @@ -1,6 +0,0 @@ -#version 130 -#extension GL_ARB_texture_cube_map_array : enable - - vec4 texture( samplerCubeArray sampler, vec4 coord, float bias); -ivec4 texture(isamplerCubeArray sampler, vec4 coord, float bias); -uvec4 texture(usamplerCubeArray sampler, vec4 coord, float bias); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.glsl deleted file mode 100644 index 73659b3e8..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_cube_map_array.glsl +++ /dev/null @@ -1,20 +0,0 @@ -#version 130 -#extension GL_ARB_texture_cube_map_array : enable - -ivec3 textureSize(samplerCubeArray sampler, int lod); -ivec3 textureSize(isamplerCubeArray sampler, int lod); -ivec3 textureSize(usamplerCubeArray sampler, int lod); -ivec3 textureSize(samplerCubeArrayShadow sampler, int lod); - - vec4 texture( samplerCubeArray sampler, vec4 coord); -ivec4 texture(isamplerCubeArray sampler, vec4 coord); -uvec4 texture(usamplerCubeArray sampler, vec4 coord); -float texture( samplerCubeArrayShadow sampler, vec4 P, float compare); - - vec4 textureGrad( samplerCubeArray sampler, vec4 P, vec3 dPdx, vec3 dPdy); -ivec4 textureGrad( isamplerCubeArray sampler, vec4 P, vec3 dPdx, vec3 dPdy); -uvec4 textureGrad( usamplerCubeArray sampler, vec4 P, vec3 dPdx, vec3 dPdy); - - vec4 textureLod( samplerCubeArray sampler, vec4 P, float lod); -ivec4 textureLod( isamplerCubeArray sampler, vec4 P, float lod); -uvec4 textureLod( usamplerCubeArray sampler, vec4 P, float lod); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_multisample.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_multisample.glsl deleted file mode 100644 index 4fa67e95e..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_multisample.glsl +++ /dev/null @@ -1,18 +0,0 @@ -#version 130 -#extension GL_ARB_texture_multisample : enable - -ivec2 textureSize( sampler2DMS sampler); -ivec2 textureSize(isampler2DMS sampler); -ivec2 textureSize(usampler2DMS sampler); - -ivec3 textureSize( sampler2DMSArray sampler); -ivec3 textureSize(isampler2DMSArray sampler); -ivec3 textureSize(usampler2DMSArray sampler); - - vec4 texelFetch( sampler2DMS sampler, ivec2 P, int sample); -ivec4 texelFetch(isampler2DMS sampler, ivec2 P, int sample); -uvec4 texelFetch(usampler2DMS sampler, ivec2 P, int sample); - - vec4 texelFetch( sampler2DMSArray sampler, ivec3 P, int sample); -ivec4 texelFetch(isampler2DMSArray sampler, ivec3 P, int sample); -uvec4 texelFetch(usampler2DMSArray sampler, ivec3 P, int sample); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_query_lod.frag b/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_query_lod.frag deleted file mode 100644 index 5d7612704..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_query_lod.frag +++ /dev/null @@ -1,38 +0,0 @@ -#version 130 -#extension GL_ARB_texture_query_lod : enable -#extension GL_ARB_texture_cube_map_array : enable - -vec2 textureQueryLOD( sampler1D sampler, float coord); -vec2 textureQueryLOD(isampler1D sampler, float coord); -vec2 textureQueryLOD(usampler1D sampler, float coord); - -vec2 textureQueryLOD( sampler2D sampler, vec2 coord); -vec2 textureQueryLOD(isampler2D sampler, vec2 coord); -vec2 textureQueryLOD(usampler2D sampler, vec2 coord); - -vec2 textureQueryLOD( sampler3D sampler, vec3 coord); -vec2 textureQueryLOD(isampler3D sampler, vec3 coord); -vec2 textureQueryLOD(usampler3D sampler, vec3 coord); - -vec2 textureQueryLOD( samplerCube sampler, vec3 coord); -vec2 textureQueryLOD(isamplerCube sampler, vec3 coord); -vec2 textureQueryLOD(usamplerCube sampler, vec3 coord); - -vec2 textureQueryLOD( sampler1DArray sampler, float coord); -vec2 textureQueryLOD(isampler1DArray sampler, float coord); -vec2 textureQueryLOD(usampler1DArray sampler, float coord); - -vec2 textureQueryLOD( sampler2DArray sampler, vec2 coord); -vec2 textureQueryLOD(isampler2DArray sampler, vec2 coord); -vec2 textureQueryLOD(usampler2DArray sampler, vec2 coord); - -vec2 textureQueryLOD( samplerCubeArray sampler, vec3 coord); -vec2 textureQueryLOD(isamplerCubeArray sampler, vec3 coord); -vec2 textureQueryLOD(usamplerCubeArray sampler, vec3 coord); - -vec2 textureQueryLOD(sampler1DShadow sampler, float coord); -vec2 textureQueryLOD(sampler2DShadow sampler, vec2 coord); -vec2 textureQueryLOD(samplerCubeShadow sampler, vec3 coord); -vec2 textureQueryLOD(sampler1DArrayShadow sampler, float coord); -vec2 textureQueryLOD(sampler2DArrayShadow sampler, vec2 coord); -vec2 textureQueryLOD(samplerCubeArrayShadow sampler, vec3 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_rectangle.glsl b/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_rectangle.glsl deleted file mode 100644 index 8938aa3e9..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/ARB_texture_rectangle.glsl +++ /dev/null @@ -1,7 +0,0 @@ -#extension GL_ARB_texture_rectangle : enable -vec4 texture2DRect(sampler2DRect sampler, vec2 coord); -vec4 texture2DRectProj(sampler2DRect sampler, vec3 coord); -vec4 texture2DRectProj(sampler2DRect sampler, vec4 coord); - -vec4 shadow2DRect(sampler2DRectShadow sampler, vec3 coord); -vec4 shadow2DRectProj(sampler2DRectShadow sampler, vec4 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.frag b/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.frag deleted file mode 100644 index d0ce981dd..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.frag +++ /dev/null @@ -1,11 +0,0 @@ -#extension GL_EXT_texture_array : enable -vec4 texture1DArray(sampler1DArray sampler, vec2 coord); -vec4 texture1DArray(sampler1DArray sampler, vec2 coord, float bias); - -vec4 texture2DArray(sampler2DArray sampler, vec3 coord); -vec4 texture2DArray(sampler2DArray sampler, vec3 coord, float bias); - -vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord); -vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord, float bias); - -vec4 shadow2DArray(sampler2DArrayShadow sampler, vec4 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.vert b/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.vert deleted file mode 100644 index 6b1b7f2f1..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/EXT_texture_array.vert +++ /dev/null @@ -1,11 +0,0 @@ -#extension GL_EXT_texture_array : enable -vec4 texture1DArray(sampler1DArray sampler, vec2 coord); -vec4 texture1DArrayLod(sampler1DArray sampler, vec2 coord, float lod); - -vec4 texture2DArray(sampler2DArray sampler, vec3 coord); -vec4 texture2DArrayLod(sampler2DArray sampler, vec3 coord, float lod); - -vec4 shadow1DArray(sampler1DArrayShadow sampler, vec3 coord); -vec4 shadow1DArrayLod(sampler1DArrayShadow sampler, vec3 coord, float lod); - -vec4 shadow2DArray(sampler2DArrayShadow sampler, vec4 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/OES_EGL_image_external.glsl b/dist/Mesa/src/glsl/builtins/profiles/OES_EGL_image_external.glsl deleted file mode 100644 index 90300ec5f..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/OES_EGL_image_external.glsl +++ /dev/null @@ -1,7 +0,0 @@ -#version 100 -#extension GL_OES_EGL_image_external : enable -precision highp float; - -vec4 texture2D(samplerExternalOES sampler, vec2 coord); -vec4 texture2DProj(samplerExternalOES sampler, vec3 coord); -vec4 texture2DProj(samplerExternalOES sampler, vec4 coord); diff --git a/dist/Mesa/src/glsl/builtins/profiles/OES_standard_derivatives.frag b/dist/Mesa/src/glsl/builtins/profiles/OES_standard_derivatives.frag deleted file mode 100644 index 44991efd2..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/OES_standard_derivatives.frag +++ /dev/null @@ -1,21 +0,0 @@ -#version 100 -#extension GL_OES_standard_derivatives : enable -precision highp float; - -/* - * 8.8 - Fragment Processing Functions - */ -float dFdx(float p); -vec2 dFdx(vec2 p); -vec3 dFdx(vec3 p); -vec4 dFdx(vec4 p); - -float dFdy(float p); -vec2 dFdy(vec2 p); -vec3 dFdy(vec3 p); -vec4 dFdy(vec4 p); - -float fwidth(float p); -vec2 fwidth(vec2 p); -vec3 fwidth(vec3 p); -vec4 fwidth(vec4 p); diff --git a/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.frag b/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.frag deleted file mode 100644 index c2c3339b9..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.frag +++ /dev/null @@ -1,8 +0,0 @@ -#version 100 -#extension GL_OES_texture_3D : enable -precision highp float; - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3D (sampler3D sampler, vec3 coord, float bias); -vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias); diff --git a/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.vert b/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.vert deleted file mode 100644 index 81d12f51e..000000000 --- a/dist/Mesa/src/glsl/builtins/profiles/OES_texture_3D.vert +++ /dev/null @@ -1,7 +0,0 @@ -#version 100 -#extension GL_OES_texture_3D : enable - -vec4 texture3D (sampler3D sampler, vec3 coord); -vec4 texture3DProj (sampler3D sampler, vec4 coord); -vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod); -vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod); diff --git a/dist/Mesa/src/glsl/builtins/tools/generate_builtins.py b/dist/Mesa/src/glsl/builtins/tools/generate_builtins.py deleted file mode 100644 index 85bd5dddc..000000000 --- a/dist/Mesa/src/glsl/builtins/tools/generate_builtins.py +++ /dev/null @@ -1,304 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -from __future__ import with_statement - -import re -import sys -from glob import glob -from os import path -from subprocess import Popen, PIPE -from sys import argv - -# Local module: generator for texture lookup builtins -from texture_builtins import generate_texture_functions - -builtins_dir = path.join(path.dirname(path.abspath(__file__)), "..") - -# Get the path to the standalone GLSL compiler -if len(argv) != 2: - print "Usage:", argv[0], "<path to compiler>" - sys.exit(1) - -compiler = argv[1] - -# Read the files in builtins/ir/*...add them to the supplied dictionary. -def read_ir_files(fs): - for filename in glob(path.join(path.join(builtins_dir, 'ir'), '*.ir')): - function_name = path.basename(filename).split('.')[0] - with open(filename) as f: - fs[function_name] = f.read() - -def read_glsl_files(fs): - for filename in glob(path.join(path.join(builtins_dir, 'glsl'), '*.glsl')): - function_name = path.basename(filename).split('.')[0] - (output, returncode) = run_compiler([filename]) - if (returncode): - sys.stderr.write("Failed to compile builtin: " + filename + "\n") - sys.stderr.write("Result:\n") - sys.stderr.write(output) - else: - fs[function_name] = output; - -# Return a dictionary containing all builtin definitions (even generated) -def get_builtin_definitions(): - fs = {} - generate_texture_functions(fs) - read_ir_files(fs) - read_glsl_files(fs) - return fs - -def stringify(s): - # Work around MSVC's 65535 byte limit by outputting an array of characters - # rather than actual string literals. - if len(s) >= 65535: - #t = "/* Warning: length " + repr(len(s)) + " too large */\n" - t = "" - for c in re.sub('\s\s+', ' ', s): - if c == '\n': - t += '\n' - else: - t += "'" + c + "'," - return '{' + t[:-1] + '}' - - t = s.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n"\n "') - return ' "' + t + '"\n' - -def write_function_definitions(): - fs = get_builtin_definitions() - for k, v in sorted(fs.iteritems()): - print 'static const char builtin_' + k + '[] =' - print stringify(v), ';' - -def run_compiler(args): - command = [compiler, '--dump-hir'] + args - p = Popen(command, 1, stdout=PIPE, shell=False) - output = p.communicate()[0] - - if (p.returncode): - sys.stderr.write("Failed to compile builtins with command:\n") - for arg in command: - sys.stderr.write(arg + " ") - sys.stderr.write("\n") - sys.stderr.write("Result:\n") - sys.stderr.write(output) - - # Clean up output a bit by killing whitespace before a closing paren. - kill_paren_whitespace = re.compile(r'[ \n]*\)', re.MULTILINE) - output = kill_paren_whitespace.sub(')', output) - - # Also toss any duplicate newlines - output = output.replace('\n\n', '\n') - - # Kill any global variable declarations. We don't want them. - kill_globals = re.compile(r'^\(declare.*\n', re.MULTILINE) - output = kill_globals.sub('', output) - - return (output, p.returncode) - -def write_profile(filename, profile): - (proto_ir, returncode) = run_compiler([filename]) - - if returncode != 0: - print '#error builtins profile', profile, 'failed to compile' - return - - print 'static const char prototypes_for_' + profile + '[] =' - print stringify(proto_ir), ';' - - # Print a table of all the functions (not signatures) referenced. - # This is done so we can avoid bothering with a hash table in the C++ code. - - function_names = set() - for func in re.finditer(r'\(function (.+)\n', proto_ir): - function_names.add(func.group(1)) - - print 'static const char *functions_for_' + profile + ' [] = {' - for func in sorted(function_names): - print ' builtin_' + func + ',' - print '};' - -def write_profiles(): - profiles = get_profile_list() - for (filename, profile) in profiles: - write_profile(filename, profile) - -def get_profile_list(): - profile_files = [] - for extension in ['glsl', 'frag', 'vert']: - path_glob = path.join( - path.join(builtins_dir, 'profiles'), '*.' + extension) - profile_files.extend(glob(path_glob)) - profiles = [] - for pfile in sorted(profile_files): - profiles.append((pfile, path.basename(pfile).replace('.', '_'))) - return profiles - -if __name__ == "__main__": - print """/* DO NOT MODIFY - automatically generated by generate_builtins.py */ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include <stdio.h> -#include "main/core.h" /* for struct gl_shader */ -#include "glsl_parser_extras.h" -#include "ir_reader.h" -#include "program.h" -#include "ast.h" - -extern "C" struct gl_shader * -_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); - -gl_shader * -read_builtins(GLenum target, const char *protos, const char **functions, unsigned count) -{ - struct gl_context fakeCtx; - fakeCtx.API = API_OPENGL_COMPAT; - fakeCtx.Const.GLSLVersion = 150; - fakeCtx.Extensions.ARB_ES2_compatibility = true; - fakeCtx.Extensions.ARB_ES3_compatibility = true; - fakeCtx.Const.ForceGLSLExtensionsWarn = false; - gl_shader *sh = _mesa_new_shader(NULL, 0, target); - struct _mesa_glsl_parse_state *st = - new(sh) _mesa_glsl_parse_state(&fakeCtx, target, sh); - - st->language_version = 150; - st->symbols->separate_function_namespace = false; - st->ARB_texture_rectangle_enable = true; - st->EXT_texture_array_enable = true; - st->OES_EGL_image_external_enable = true; - st->ARB_shader_bit_encoding_enable = true; - st->ARB_texture_cube_map_array_enable = true; - st->ARB_shading_language_packing_enable = true; - st->ARB_texture_multisample_enable = true; - st->ARB_texture_query_lod_enable = true; - st->ARB_gpu_shader5_enable = true; - _mesa_glsl_initialize_types(st); - - sh->ir = new(sh) exec_list; - sh->symbols = st->symbols; - - /* Read the IR containing the prototypes */ - _mesa_glsl_read_ir(st, sh->ir, protos, true); - - /* Read ALL the function bodies, telling the IR reader not to scan for - * prototypes (we've already created them). The IR reader will skip any - * signature that does not already exist as a prototype. - */ - for (unsigned i = 0; i < count; i++) { - _mesa_glsl_read_ir(st, sh->ir, functions[i], false); - - if (st->error) { - printf("error reading builtin: %.35s ...\\n", functions[i]); - printf("Info log:\\n%s\\n", st->info_log); - ralloc_free(sh); - return NULL; - } - } - - reparent_ir(sh->ir, sh); - delete st; - - return sh; -} -""" - - write_function_definitions() - write_profiles() - - profiles = get_profile_list() - - print 'static gl_shader *builtin_profiles[%d];' % len(profiles) - - print """ -static void *builtin_mem_ctx = NULL; - -void -_mesa_glsl_release_functions(void) -{ - ralloc_free(builtin_mem_ctx); - builtin_mem_ctx = NULL; - memset(builtin_profiles, 0, sizeof(builtin_profiles)); -} - -static void -_mesa_read_profile(struct _mesa_glsl_parse_state *state, - int profile_index, - const char *prototypes, - const char **functions, - int count) -{ - gl_shader *sh = builtin_profiles[profile_index]; - - if (sh == NULL) { - sh = read_builtins(GL_VERTEX_SHADER, prototypes, functions, count); - ralloc_steal(builtin_mem_ctx, sh); - builtin_profiles[profile_index] = sh; - } - - state->builtins_to_link[state->num_builtins_to_link] = sh; - state->num_builtins_to_link++; -} - -void -_mesa_glsl_initialize_functions(struct _mesa_glsl_parse_state *state) -{ - /* If we've already initialized the built-ins, bail early. */ - if (state->num_builtins_to_link > 0) - return; - - if (builtin_mem_ctx == NULL) { - builtin_mem_ctx = ralloc_context(NULL); // "GLSL built-in functions" - memset(&builtin_profiles, 0, sizeof(builtin_profiles)); - } -""" - - i = 0 - for (filename, profile) in profiles: - if profile.endswith('_vert'): - check = 'state->target == vertex_shader && ' - elif profile.endswith('_frag'): - check = 'state->target == fragment_shader && ' - else: - check = '' - - version = re.sub(r'_(glsl|vert|frag)$', '', profile) - if version[0].isdigit(): - is_es = version.endswith('es') - if is_es: - version = version[:-2] - check += 'state->language_version == ' + version - check += ' && {0}state->es_shader'.format('' if is_es else '!') - else: # an extension name - check += 'state->' + version + '_enable' - - print ' if (' + check + ') {' - print ' _mesa_read_profile(state, %d,' % i - print ' prototypes_for_' + profile + ',' - print ' functions_for_' + profile + ',' - print ' Elements(functions_for_' + profile + '));' - print ' }' - print - i = i + 1 - print '}' - diff --git a/dist/Mesa/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py b/dist/Mesa/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py deleted file mode 100644 index 391ad110d..000000000 --- a/dist/Mesa/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python - -def gen_matrix(x, y = 0): - if y == 0: - y = x - type = "mat" + str(x) - if x != y: - type = type + "x" + str(y) - print type + " matrixCompMult(" + type + " x, " + type + " y)\n{" - print " " + type + " z;" - - for i in range(x): - print " z[" + str(i) + "] = x[" + str(i) + "] * y[" + str(i) + "];" - print " return z;\n}" - -print "#version 120" -# 1.10 -gen_matrix(2) -gen_matrix(3) -gen_matrix(4) - -# 1.20 -gen_matrix(2,3) # mat2x3 means 2 columns, 3 rows -gen_matrix(3,2) -gen_matrix(2,4) -gen_matrix(4,2) -gen_matrix(3,4) -gen_matrix(4,3) diff --git a/dist/Mesa/src/glsl/builtins/tools/generate_outerProductGLSL.py b/dist/Mesa/src/glsl/builtins/tools/generate_outerProductGLSL.py deleted file mode 100644 index c561cc3ba..000000000 --- a/dist/Mesa/src/glsl/builtins/tools/generate_outerProductGLSL.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python - -def gen(x, y): - type = "mat" + str(x) - if x != y: - type = type + "x" + str(y) - print type + " outerProduct(vec" + str(y) + " u, vec" + str(x) + " v)\n{" - print " " + type + " m;" - - for i in range(x): - print " m[" + str(i) + "] = u * v[" + str(i) + "];" - print " return m;\n}" - -print "#version 120" -gen(2,2) -gen(2,3) # mat2x3 means 2 columns, 3 rows -gen(2,4) -gen(3,2) -gen(3,3) -gen(3,4) -gen(4,2) -gen(4,3) -gen(4,4) diff --git a/dist/Mesa/src/glsl/builtins/tools/generate_transposeGLSL.py b/dist/Mesa/src/glsl/builtins/tools/generate_transposeGLSL.py deleted file mode 100644 index 8f669ce98..000000000 --- a/dist/Mesa/src/glsl/builtins/tools/generate_transposeGLSL.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python - -def gen(x, y): - origtype = "mat" + str(x) - trantype = "mat" + str(y) - if x != y: - origtype = origtype + "x" + str(y) - trantype = trantype + "x" + str(x) - print trantype + " transpose(" + origtype + " m)\n{" - print " " + trantype + " t;" - - # The obvious implementation of transpose - for i in range(x): - for j in range(y): - print " t[" + str(j) + "][" + str(i) + "] =", - print "m[" + str(i) + "][" + str(j) + "];" - print " return t;\n}" - -print "#version 120" -gen(2,2) -gen(2,3) # mat2x3 means 2 columns, 3 rows -gen(2,4) -gen(3,2) -gen(3,3) -gen(3,4) -gen(4,2) -gen(4,3) -gen(4,4) diff --git a/dist/Mesa/src/glsl/builtins/tools/texture_builtins.py b/dist/Mesa/src/glsl/builtins/tools/texture_builtins.py deleted file mode 100644 index 6ef20d556..000000000 --- a/dist/Mesa/src/glsl/builtins/tools/texture_builtins.py +++ /dev/null @@ -1,664 +0,0 @@ -#!/usr/bin/python - -import sys -import StringIO - -# Bitfield constants for the 'variant' argument to generate_sigs -Proj = 1 -Offset = 2 -Single = 4 - -def vec_type(g, size): - if size == 1: - if g == "i": - return "int" - elif g == "u": - return "uint" - return "float" - return g + "vec" + str(size) - -# Get the sampler dimension - i.e. sampler3D gives 3 -def get_sampler_dim(sampler_type): - if sampler_type[0].isdigit(): - sampler_dim = int(sampler_type[0]) - elif sampler_type.startswith("Cube"): - sampler_dim = 3 - elif sampler_type == "ExternalOES": - sampler_dim = 2 - elif sampler_type == "Buffer": - sampler_dim = 1 - else: - assert False ("coord_dim: invalid sampler_type: " + sampler_type) - return sampler_dim - -# Get the coordinate dimension for a given sampler type. -# Array samplers also get +1 here since the layer is really an extra coordinate -def get_coord_dim(sampler_type, tex_inst): - coord_dim = get_sampler_dim(sampler_type) - if sampler_type.find("Array") != -1 and tex_inst != "lod": - coord_dim += 1 - return coord_dim - -# Get the number of extra vector components (i.e. shadow comparitor) -def get_extra_dim(sampler_type, use_proj, unused_fields, tex_inst): - extra_dim = unused_fields - if sampler_type == "CubeArrayShadow": - return 0 - if sampler_type.find("Shadow") != -1 and tex_inst != "lod": - extra_dim += 1 - if use_proj: - extra_dim += 1 - return extra_dim - -def get_txs_dim(sampler_type, tex_inst): - if sampler_type.startswith("CubeArray"): - return 3 - if sampler_type.startswith("Cube"): - return 2 - return get_coord_dim(sampler_type, tex_inst) - -def has_lod(sampler_type): - if 'Buffer' in sampler_type: return False - if 'Rect' in sampler_type: return False - if 'MS' in sampler_type: return False - return True - -def generate_sigs(g, tex_inst, sampler_type, variant = 0, unused_fields = 0): - coord_dim = get_coord_dim(sampler_type, tex_inst) - extra_dim = get_extra_dim(sampler_type, variant & Proj, unused_fields, tex_inst) - sampler_dim = get_sampler_dim(sampler_type) - - if variant & Single: - return_type = "float" - elif tex_inst == "txs": - return_type = vec_type("i", get_txs_dim(sampler_type, tex_inst)) - elif tex_inst == "lod": - return_type = "vec2" - else: - return_type = g + "vec4" - - # Print parameters - print " (signature", return_type - print " (parameters" - print " (declare (in) " + g + "sampler" + sampler_type + " sampler)", - if tex_inst != "txs": - print "\n (declare (in) " + vec_type("i" if tex_inst in ['txf','txf_ms'] else "", coord_dim + extra_dim) + " P)", - if tex_inst == "txl": - print "\n (declare (in) float lod)", - elif tex_inst in ['txf', 'txs'] and has_lod(sampler_type): - print "\n (declare (in) int lod)", - elif tex_inst == "txf_ms": - print "\n (declare (in) int sample)", - elif tex_inst == "txd": - grad_type = vec_type("", sampler_dim) - print "\n (declare (in) " + grad_type + " dPdx)", - print "\n (declare (in) " + grad_type + " dPdy)", - if sampler_type == "CubeArrayShadow" and tex_inst == "tex": - print "\n (declare (in) float compare)", - - if variant & Offset: - print "\n (declare (const_in) " + vec_type("i", sampler_dim) + " offset)", - if tex_inst == "txb": - print "\n (declare (in) float bias)", - - print ")\n ((return (" + tex_inst, return_type, "(var_ref sampler)", - - if tex_inst != "txs": - # Coordinate - if extra_dim > 0: - print "(swiz " + "xyzw"[:coord_dim] + " (var_ref P))", - else: - print "(var_ref P)", - - if tex_inst not in ['txf_ms', 'txs', 'lod']: - # Coordinate offset - if variant & Offset: - print "(var_ref offset)", - else: - print "0", - - if tex_inst not in ['txf', 'txf_ms', 'txs', 'lod']: - # Projective divisor - if variant & Proj: - print "(swiz " + "xyzw"[coord_dim + extra_dim-1] + " (var_ref P))", - else: - print "1", - - # Shadow comparitor - if sampler_type == "CubeArrayShadow": # a special case - print "(var_ref compare)", - elif sampler_type == "2DArrayShadow" or sampler_type == "CubeShadow": # a special case: - print "(swiz w (var_ref P))", # ...array layer is z; shadow is w - elif sampler_type.endswith("Shadow"): - print "(swiz z (var_ref P))", - else: - print "()", - - # Bias/explicit LOD/gradient: - if tex_inst == "txb": - print "(var_ref bias)", - elif tex_inst in ['txs', 'txf', 'txf_ms']: - if has_lod(sampler_type): - print "(var_ref lod)", - elif tex_inst == 'txf_ms': - print "(var_ref sample)", - else: - print "(constant int (0))", - elif tex_inst == "txl": - print "(var_ref lod)", - elif tex_inst == "txd": - print "((var_ref dPdx) (var_ref dPdy))", - print "))))\n" - -def generate_fiu_sigs(tex_inst, sampler_type, variant = 0, unused_fields = 0): - generate_sigs("", tex_inst, sampler_type, variant, unused_fields) - generate_sigs("i", tex_inst, sampler_type, variant, unused_fields) - generate_sigs("u", tex_inst, sampler_type, variant, unused_fields) - -def start_function(name): - sys.stdout = StringIO.StringIO() - print "((function " + name - -def end_function(fs, name): - print "))" - fs[name] = sys.stdout.getvalue(); - sys.stdout.close() - -# Generate all the functions and store them in the supplied dictionary. -# This is better than writing them to actual files since they should never be -# edited; it'd also be easy to confuse them with the many hand-generated files. -# -# Takes a dictionary as an argument. -def generate_texture_functions(fs): - start_function("textureSize") - generate_fiu_sigs("txs", "1D") - generate_fiu_sigs("txs", "2D") - generate_fiu_sigs("txs", "3D") - generate_fiu_sigs("txs", "Cube") - generate_fiu_sigs("txs", "1DArray") - generate_fiu_sigs("txs", "2DArray") - generate_sigs("", "txs", "1DShadow") - generate_sigs("", "txs", "2DShadow") - generate_sigs("", "txs", "CubeShadow") - generate_sigs("", "txs", "1DArrayShadow") - generate_sigs("", "txs", "2DArrayShadow") - generate_fiu_sigs("txs", "2DRect") - generate_sigs("", "txs", "2DRectShadow") - generate_fiu_sigs("txs", "Buffer") - generate_fiu_sigs("txs", "CubeArray") - generate_sigs("", "txs", "CubeArrayShadow") - generate_fiu_sigs("txs", "2DMS") - generate_fiu_sigs("txs", "2DMSArray") - end_function(fs, "textureSize") - - start_function("texture") - generate_fiu_sigs("tex", "1D") - generate_fiu_sigs("tex", "2D") - generate_fiu_sigs("tex", "3D") - generate_fiu_sigs("tex", "Cube") - generate_fiu_sigs("tex", "1DArray") - generate_fiu_sigs("tex", "2DArray") - generate_sigs("", "tex", "1DShadow", Single, 1); - generate_sigs("", "tex", "2DShadow", Single); - generate_sigs("", "tex", "CubeShadow", Single); - generate_sigs("", "tex", "1DArrayShadow", Single); - generate_sigs("", "tex", "2DArrayShadow", Single); - generate_fiu_sigs("tex", "2DRect") - generate_sigs("", "tex", "2DRectShadow", Single); - # ARB_texture_cube_map_array extension - generate_fiu_sigs("tex", "CubeArray") - generate_sigs("", "tex", "CubeArrayShadow", Single); - - generate_fiu_sigs("txb", "1D") - generate_fiu_sigs("txb", "2D") - generate_fiu_sigs("txb", "3D") - generate_fiu_sigs("txb", "Cube") - generate_fiu_sigs("txb", "1DArray") - generate_fiu_sigs("txb", "2DArray") - generate_fiu_sigs("txb", "CubeArray") - generate_sigs("", "txb", "1DShadow", Single, 1); - generate_sigs("", "txb", "2DShadow", Single); - generate_sigs("", "txb", "CubeShadow", Single); - generate_sigs("", "txb", "1DArrayShadow", Single); - generate_sigs("", "txb", "2DArrayShadow", Single); - end_function(fs, "texture") - - start_function("textureProj") - generate_fiu_sigs("tex", "1D", Proj) - generate_fiu_sigs("tex", "1D", Proj, 2) - generate_fiu_sigs("tex", "2D", Proj) - generate_fiu_sigs("tex", "2D", Proj, 1) - generate_fiu_sigs("tex", "3D", Proj) - generate_sigs("", "tex", "1DShadow", Proj | Single, 1); - generate_sigs("", "tex", "2DShadow", Proj | Single); - generate_fiu_sigs("tex", "2DRect", Proj) - generate_fiu_sigs("tex", "2DRect", Proj, 1) - generate_sigs("", "tex", "2DRectShadow", Proj | Single); - - generate_fiu_sigs("txb", "1D", Proj) - generate_fiu_sigs("txb", "1D", Proj, 2) - generate_fiu_sigs("txb", "2D", Proj) - generate_fiu_sigs("txb", "2D", Proj, 1) - generate_fiu_sigs("txb", "3D", Proj) - generate_sigs("", "txb", "1DShadow", Proj | Single, 1); - generate_sigs("", "txb", "2DShadow", Proj | Single); - end_function(fs, "textureProj") - - start_function("textureLod") - generate_fiu_sigs("txl", "1D") - generate_fiu_sigs("txl", "2D") - generate_fiu_sigs("txl", "3D") - generate_fiu_sigs("txl", "Cube") - generate_fiu_sigs("txl", "1DArray") - generate_fiu_sigs("txl", "2DArray") - generate_sigs("", "txl", "1DShadow", Single, 1); - generate_sigs("", "txl", "2DShadow", Single); - generate_sigs("", "txl", "1DArrayShadow", Single); - # ARB_texture_cube_map_array extension - generate_fiu_sigs("txl", "CubeArray") - end_function(fs, "textureLod") - - start_function("textureLodOffset") - generate_fiu_sigs("txl", "1D", Offset) - generate_fiu_sigs("txl", "2D", Offset) - generate_fiu_sigs("txl", "3D", Offset) - generate_fiu_sigs("txl", "1DArray", Offset) - generate_fiu_sigs("txl", "2DArray", Offset) - generate_sigs("", "txl", "1DShadow", Offset | Single, 1); - generate_sigs("", "txl", "2DShadow", Offset | Single); - generate_sigs("", "txl", "1DArrayShadow", Offset | Single); - end_function(fs, "textureLodOffset") - - start_function("textureOffset") - generate_fiu_sigs("tex", "1D", Offset) - generate_fiu_sigs("tex", "2D", Offset) - generate_fiu_sigs("tex", "3D", Offset) - generate_fiu_sigs("tex", "2DRect", Offset) - generate_sigs("", "tex", "2DRectShadow", Offset | Single); - generate_fiu_sigs("tex", "1DArray", Offset) - generate_fiu_sigs("tex", "2DArray", Offset) - generate_sigs("", "tex", "1DShadow", Offset | Single, 1); - generate_sigs("", "tex", "2DShadow", Offset | Single); - generate_sigs("", "tex", "1DArrayShadow", Offset | Single); - - generate_fiu_sigs("txb", "1D", Offset) - generate_fiu_sigs("txb", "2D", Offset) - generate_fiu_sigs("txb", "3D", Offset) - generate_fiu_sigs("txb", "1DArray", Offset) - generate_fiu_sigs("txb", "2DArray", Offset) - generate_sigs("", "txb", "1DShadow", Offset | Single, 1); - generate_sigs("", "txb", "2DShadow", Offset | Single); - generate_sigs("", "txb", "1DArrayShadow", Offset | Single); - end_function(fs, "textureOffset") - - start_function("texelFetch") - generate_fiu_sigs("txf", "1D") - generate_fiu_sigs("txf", "2D") - generate_fiu_sigs("txf", "3D") - generate_fiu_sigs("txf", "2DRect") - generate_fiu_sigs("txf", "1DArray") - generate_fiu_sigs("txf", "2DArray") - generate_fiu_sigs("txf", "Buffer") - generate_fiu_sigs("txf_ms", "2DMS") - generate_fiu_sigs("txf_ms", "2DMSArray") - end_function(fs, "texelFetch") - - start_function("texelFetchOffset") - generate_fiu_sigs("txf", "1D", Offset) - generate_fiu_sigs("txf", "2D", Offset) - generate_fiu_sigs("txf", "3D", Offset) - generate_fiu_sigs("txf", "2DRect", Offset) - generate_fiu_sigs("txf", "1DArray", Offset) - generate_fiu_sigs("txf", "2DArray", Offset) - end_function(fs, "texelFetchOffset") - - start_function("textureProjOffset") - generate_fiu_sigs("tex", "1D", Proj | Offset) - generate_fiu_sigs("tex", "1D", Proj | Offset, 2) - generate_fiu_sigs("tex", "2D", Proj | Offset) - generate_fiu_sigs("tex", "2D", Proj | Offset, 1) - generate_fiu_sigs("tex", "3D", Proj | Offset) - generate_fiu_sigs("tex", "2DRect", Proj | Offset) - generate_fiu_sigs("tex", "2DRect", Proj | Offset, 1) - generate_sigs("", "tex", "2DRectShadow", Proj | Offset | Single); - generate_sigs("", "tex", "1DShadow", Proj | Offset | Single, 1); - generate_sigs("", "tex", "2DShadow", Proj | Offset | Single); - - generate_fiu_sigs("txb", "1D", Proj | Offset) - generate_fiu_sigs("txb", "1D", Proj | Offset, 2) - generate_fiu_sigs("txb", "2D", Proj | Offset) - generate_fiu_sigs("txb", "2D", Proj | Offset, 1) - generate_fiu_sigs("txb", "3D", Proj | Offset) - generate_sigs("", "txb", "1DShadow", Proj | Offset | Single, 1); - generate_sigs("", "txb", "2DShadow", Proj | Offset | Single); - end_function(fs, "textureProjOffset") - - start_function("textureProjLod") - generate_fiu_sigs("txl", "1D", Proj) - generate_fiu_sigs("txl", "1D", Proj, 2) - generate_fiu_sigs("txl", "2D", Proj) - generate_fiu_sigs("txl", "2D", Proj, 1) - generate_fiu_sigs("txl", "3D", Proj) - generate_sigs("", "txl", "1DShadow", Proj | Single, 1); - generate_sigs("", "txl", "2DShadow", Proj | Single); - end_function(fs, "textureProjLod") - - start_function("textureProjLodOffset") - generate_fiu_sigs("txl", "1D", Proj | Offset) - generate_fiu_sigs("txl", "1D", Proj | Offset, 2) - generate_fiu_sigs("txl", "2D", Proj | Offset) - generate_fiu_sigs("txl", "2D", Proj | Offset, 1) - generate_fiu_sigs("txl", "3D", Proj | Offset) - generate_sigs("", "txl", "1DShadow", Proj | Offset | Single, 1); - generate_sigs("", "txl", "2DShadow", Proj | Offset | Single); - end_function(fs, "textureProjLodOffset") - - start_function("textureGrad") - generate_fiu_sigs("txd", "1D") - generate_fiu_sigs("txd", "2D") - generate_fiu_sigs("txd", "3D") - generate_fiu_sigs("txd", "Cube") - generate_fiu_sigs("txd", "1DArray") - generate_fiu_sigs("txd", "2DArray") - generate_fiu_sigs("txd", "2DRect") - generate_sigs("", "txd", "2DRectShadow", Single); - generate_sigs("", "txd", "1DShadow", Single, 1); - generate_sigs("", "txd", "2DShadow", Single); - generate_sigs("", "txd", "CubeShadow", Single); - generate_sigs("", "txd", "1DArrayShadow", Single); - generate_sigs("", "txd", "2DArrayShadow", Single); - # ARB_texture_cube_map_array extension - generate_fiu_sigs("txd", "CubeArray") - end_function(fs, "textureGrad") - - start_function("textureGradOffset") - generate_fiu_sigs("txd", "1D", Offset) - generate_fiu_sigs("txd", "2D", Offset) - generate_fiu_sigs("txd", "3D", Offset) - generate_fiu_sigs("txd", "2DRect", Offset) - generate_sigs("", "txd", "2DRectShadow", Offset | Single); - generate_fiu_sigs("txd", "1DArray", Offset) - generate_fiu_sigs("txd", "2DArray", Offset) - generate_sigs("", "txd", "1DShadow", Offset | Single, 1); - generate_sigs("", "txd", "2DShadow", Offset | Single); - generate_sigs("", "txd", "1DArrayShadow", Offset | Single); - generate_sigs("", "txd", "2DArrayShadow", Offset | Single); - end_function(fs, "textureGradOffset") - - start_function("textureProjGrad") - generate_fiu_sigs("txd", "1D", Proj) - generate_fiu_sigs("txd", "1D", Proj, 2) - generate_fiu_sigs("txd", "2D", Proj) - generate_fiu_sigs("txd", "2D", Proj, 1) - generate_fiu_sigs("txd", "3D", Proj) - generate_fiu_sigs("txd", "2DRect", Proj) - generate_fiu_sigs("txd", "2DRect", Proj, 1) - generate_sigs("", "txd", "2DRectShadow", Proj | Single); - generate_sigs("", "txd", "1DShadow", Proj | Single, 1); - generate_sigs("", "txd", "2DShadow", Proj | Single); - end_function(fs, "textureProjGrad") - - start_function("textureProjGradOffset") - generate_fiu_sigs("txd", "1D", Proj | Offset) - generate_fiu_sigs("txd", "1D", Proj | Offset, 2) - generate_fiu_sigs("txd", "2D", Proj | Offset) - generate_fiu_sigs("txd", "2D", Proj | Offset, 1) - generate_fiu_sigs("txd", "3D", Proj | Offset) - generate_fiu_sigs("txd", "2DRect", Proj | Offset) - generate_fiu_sigs("txd", "2DRect", Proj | Offset, 1) - generate_sigs("", "txd", "2DRectShadow", Proj | Offset | Single); - generate_sigs("", "txd", "1DShadow", Proj | Offset | Single, 1); - generate_sigs("", "txd", "2DShadow", Proj | Offset | Single); - end_function(fs, "textureProjGradOffset") - - - # ARB_texture_rectangle extension - start_function("texture2DRect") - generate_sigs("", "tex", "2DRect") - end_function(fs, "texture2DRect") - - start_function("texture2DRectProj") - generate_sigs("", "tex", "2DRect", Proj) - generate_sigs("", "tex", "2DRect", Proj, 1) - end_function(fs, "texture2DRectProj") - - start_function("shadow2DRect") - generate_sigs("", "tex", "2DRectShadow") - end_function(fs, "shadow2DRect") - - start_function("shadow2DRectProj") - generate_sigs("", "tex", "2DRectShadow", Proj) - end_function(fs, "shadow2DRectProj") - - # EXT_texture_array extension - start_function("texture1DArray") - generate_sigs("", "tex", "1DArray") - generate_sigs("", "txb", "1DArray") - end_function(fs, "texture1DArray") - - start_function("texture1DArrayLod") - generate_sigs("", "txl", "1DArray") - end_function(fs, "texture1DArrayLod") - - start_function("texture2DArray") - generate_sigs("", "tex", "2DArray") - generate_sigs("", "txb", "2DArray") - end_function(fs, "texture2DArray") - - start_function("texture2DArrayLod") - generate_sigs("", "txl", "2DArray") - end_function(fs, "texture2DArrayLod") - - start_function("shadow1DArray") - generate_sigs("", "tex", "1DArrayShadow") - generate_sigs("", "txb", "1DArrayShadow") - end_function(fs, "shadow1DArray") - - start_function("shadow1DArrayLod") - generate_sigs("", "txl", "1DArrayShadow") - end_function(fs, "shadow1DArrayLod") - - start_function("shadow2DArray") - generate_sigs("", "tex", "2DArrayShadow") - end_function(fs, "shadow2DArray") - - # ARB_shader_texture_lod extension - start_function("texture1DGradARB") - generate_fiu_sigs("txd", "1D") - end_function(fs, "texture1DGradARB") - - start_function("texture2DGradARB") - generate_fiu_sigs("txd", "2D") - end_function(fs, "texture2DGradARB") - - start_function("texture3DGradARB") - generate_fiu_sigs("txd", "3D") - end_function(fs, "texture3DGradARB") - - start_function("textureCubeGradARB") - generate_fiu_sigs("txd", "Cube") - end_function(fs, "textureCubeGradARB") - - start_function("texture1DProjGradARB") - generate_fiu_sigs("txd", "1D", True) - generate_fiu_sigs("txd", "1D", True, 2) - end_function(fs, "texture1DProjGradARB") - - start_function("texture2DProjGradARB") - generate_fiu_sigs("txd", "2D", True) - generate_fiu_sigs("txd", "2D", True, 1) - end_function(fs, "texture2DProjGradARB") - - start_function("texture3DProjGradARB") - generate_fiu_sigs("txd", "3D", True) - end_function(fs, "texture3DProjGradARB") - - start_function("shadow1DGradARB") - generate_sigs("", "txd", "1DShadow", False, 1) - end_function(fs, "shadow1DGradARB") - - start_function("shadow1DProjGradARB") - generate_sigs("", "txd", "1DShadow", True, 1) - end_function(fs, "shadow1DProjGradARB") - - start_function("shadow2DGradARB") - generate_sigs("", "txd", "2DShadow", False) - end_function(fs, "shadow2DGradARB") - - start_function("shadow2DProjGradARB") - generate_sigs("", "txd", "2DShadow", True) - end_function(fs, "shadow2DProjGradARB") - - start_function("texture2DRectGradARB") - generate_sigs("", "txd", "2DRect") - end_function(fs, "texture2DRectGradARB") - - start_function("texture2DRectProjGradARB") - generate_sigs("", "txd", "2DRect", True) - generate_sigs("", "txd", "2DRect", True, 1) - end_function(fs, "texture2DRectProjGradARB") - - start_function("shadow2DRectGradARB") - generate_sigs("", "txd", "2DRectShadow", False) - end_function(fs, "shadow2DRectGradARB") - - start_function("shadow2DRectProjGradARB") - generate_sigs("", "txd", "2DRectShadow", True) - end_function(fs, "shadow2DRectProjGradARB") - - # Deprecated (110/120 style) functions with silly names: - start_function("texture1D") - generate_sigs("", "tex", "1D") - generate_sigs("", "txb", "1D") - end_function(fs, "texture1D") - - start_function("texture1DLod") - generate_sigs("", "txl", "1D") - end_function(fs, "texture1DLod") - - start_function("texture1DProj") - generate_sigs("", "tex", "1D", Proj) - generate_sigs("", "tex", "1D", Proj, 2) - generate_sigs("", "txb", "1D", Proj) - generate_sigs("", "txb", "1D", Proj, 2) - end_function(fs, "texture1DProj") - - start_function("texture1DProjLod") - generate_sigs("", "txl", "1D", Proj) - generate_sigs("", "txl", "1D", Proj, 2) - end_function(fs, "texture1DProjLod") - - start_function("texture2D") - generate_sigs("", "tex", "2D") - generate_sigs("", "txb", "2D") - # OES_EGL_image_external - generate_sigs("", "tex", "ExternalOES") - end_function(fs, "texture2D") - - start_function("texture2DLod") - generate_sigs("", "txl", "2D") - end_function(fs, "texture2DLod") - - start_function("texture2DProj") - generate_sigs("", "tex", "2D", Proj) - generate_sigs("", "tex", "2D", Proj, 1) - generate_sigs("", "txb", "2D", Proj) - generate_sigs("", "txb", "2D", Proj, 1) - # OES_EGL_image_external - generate_sigs("", "tex", "ExternalOES", Proj) - generate_sigs("", "tex", "ExternalOES", Proj, 1) - end_function(fs, "texture2DProj") - - start_function("texture2DProjLod") - generate_sigs("", "txl", "2D", Proj) - generate_sigs("", "txl", "2D", Proj, 1) - end_function(fs, "texture2DProjLod") - - start_function("texture3D") - generate_sigs("", "tex", "3D") - generate_sigs("", "txb", "3D") - end_function(fs, "texture3D") - - start_function("texture3DLod") - generate_sigs("", "txl", "3D") - end_function(fs, "texture3DLod") - - start_function("texture3DProj") - generate_sigs("", "tex", "3D", Proj) - generate_sigs("", "txb", "3D", Proj) - end_function(fs, "texture3DProj") - - start_function("texture3DProjLod") - generate_sigs("", "txl", "3D", Proj) - end_function(fs, "texture3DProjLod") - - start_function("textureCube") - generate_sigs("", "tex", "Cube") - generate_sigs("", "txb", "Cube") - end_function(fs, "textureCube") - - start_function("textureCubeLod") - generate_sigs("", "txl", "Cube") - end_function(fs, "textureCubeLod") - - start_function("shadow1D") - generate_sigs("", "tex", "1DShadow", False, 1) - generate_sigs("", "txb", "1DShadow", False, 1) - end_function(fs, "shadow1D") - - start_function("shadow1DLod") - generate_sigs("", "txl", "1DShadow", False, 1) - end_function(fs, "shadow1DLod") - - start_function("shadow1DProj") - generate_sigs("", "tex", "1DShadow", Proj, 1) - generate_sigs("", "txb", "1DShadow", Proj, 1) - end_function(fs, "shadow1DProj") - - start_function("shadow1DProjLod") - generate_sigs("", "txl", "1DShadow", Proj, 1) - end_function(fs, "shadow1DProjLod") - - start_function("shadow2D") - generate_sigs("", "tex", "2DShadow") - generate_sigs("", "txb", "2DShadow") - end_function(fs, "shadow2D") - - start_function("shadow2DLod") - generate_sigs("", "txl", "2DShadow") - end_function(fs, "shadow2DLod") - - start_function("shadow2DProj") - generate_sigs("", "tex", "2DShadow", Proj) - generate_sigs("", "txb", "2DShadow", Proj) - end_function(fs, "shadow2DProj") - - start_function("shadow2DProjLod") - generate_sigs("", "txl", "2DShadow", Proj) - end_function(fs, "shadow2DProjLod") - - start_function("textureQueryLOD") - generate_fiu_sigs("lod", "1D") - generate_fiu_sigs("lod", "2D") - generate_fiu_sigs("lod", "3D") - generate_fiu_sigs("lod", "Cube") - generate_fiu_sigs("lod", "1DArray") - generate_fiu_sigs("lod", "2DArray") - generate_fiu_sigs("lod", "CubeArray") - generate_sigs("", "lod", "1DShadow") - generate_sigs("", "lod", "2DShadow") - generate_sigs("", "lod", "CubeShadow") - generate_sigs("", "lod", "1DArrayShadow") - generate_sigs("", "lod", "2DArrayShadow") - generate_sigs("", "lod", "CubeArrayShadow") - end_function(fs, "textureQueryLOD") - - sys.stdout = sys.__stdout__ - return fs - -# If you actually run this script, it'll print out all the functions. -if __name__ == "__main__": - fs = {} - generate_texture_functions(fs); - for k, v in fs.iteritems(): - print v diff --git a/dist/Mesa/src/glsl/glcpp/glcpp-lex.c b/dist/Mesa/src/glsl/glcpp/glcpp-lex.c index d672e69f2..1fd2d4da0 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp-lex.c +++ b/dist/Mesa/src/glsl/glcpp/glcpp-lex.c @@ -9,7 +9,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -179,11 +179,17 @@ typedef void* yyscan_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -201,11 +207,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -223,7 +224,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -302,7 +303,7 @@ static void glcpp__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner YY_BUFFER_STATE glcpp__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE glcpp__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE glcpp__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE glcpp__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *glcpp_alloc (yy_size_t ,yyscan_t yyscanner ); void *glcpp_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -334,7 +335,7 @@ void glcpp_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define glcpp_wrap(n) 1 +#define glcpp_wrap(yyscanner) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -367,24 +368,24 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[150] = +static yyconst flex_int16_t yy_accept[151] = { 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 44, 39, 40, 41, 43, 38, 43, 38, - 38, 38, 25, 24, 38, 38, 38, 37, 37, 38, - 40, 23, 3, 4, 5, 42, 17, 17, 17, 21, - 39, 40, 32, 35, 33, 2, 1, 25, 25, 0, - 24, 24, 27, 29, 31, 30, 28, 37, 37, 34, - 40, 23, 23, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 5, 6, 5, 7, 0, 0, 0, 0, - 20, 21, 1, 26, 37, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 37, 0, 0, 0, - - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 14, 16, 18, 0, 11, - 0, 10, 0, 22, 0, 36, 0, 18, 0, 12, - 0, 0, 19, 0, 9, 0, 0, 8, 0 + 0, 0, 0, 0, 44, 39, 40, 41, 43, 38, + 43, 38, 38, 38, 25, 24, 38, 38, 38, 37, + 37, 38, 40, 23, 3, 4, 5, 42, 17, 17, + 17, 21, 39, 32, 35, 33, 2, 1, 25, 25, + 0, 24, 24, 27, 29, 31, 30, 28, 37, 37, + 34, 0, 23, 23, 0, 0, 0, 0, 0, 0, + 0, 3, 4, 5, 6, 5, 7, 0, 0, 0, + 0, 20, 21, 1, 26, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 37, 0, 0, + + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 0, 14, 16, 18, 0, + 11, 0, 10, 0, 22, 0, 36, 0, 18, 0, + 12, 0, 0, 19, 0, 9, 0, 0, 8, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -427,136 +428,136 @@ static yyconst flex_int32_t yy_meta[40] = 6, 6, 6, 6, 6, 6, 6, 6, 1 } ; -static yyconst flex_int16_t yy_base[164] = +static yyconst flex_int16_t yy_base[165] = { 0, - 0, 38, 0, 0, 38, 39, 321, 320, 319, 44, - 50, 0, 321, 319, 317, 325, 325, 302, 311, 325, - 308, 80, 80, 83, 83, 299, 88, 0, 290, 274, - 100, 118, 309, 325, 104, 325, 325, 106, 107, 302, - 309, 307, 325, 325, 325, 325, 0, 113, 325, 0, - 115, 325, 325, 325, 325, 325, 325, 0, 283, 325, - 111, 301, 300, 281, 110, 279, 276, 269, 271, 276, - 296, 325, 149, 325, 153, 325, 130, 120, 151, 15, - 325, 289, 0, 74, 270, 271, 96, 272, 261, 258, - 135, 262, 269, 267, 256, 325, 258, 260, 261, 261, - - 257, 252, 258, 325, 257, 257, 255, 252, 253, 242, - 245, 231, 0, 325, 228, 219, 216, 213, 208, 216, - 148, 151, 147, 150, 148, 325, 325, 0, 137, 325, - 145, 167, 146, 325, 136, 0, 164, 0, 135, 325, - 0, 131, 155, 108, 0, 135, 91, 109, 325, 178, - 186, 194, 202, 206, 214, 222, 228, 236, 240, 247, - 255, 259, 267 + 0, 38, 0, 0, 38, 39, 319, 318, 317, 44, + 50, 0, 0, 0, 319, 317, 323, 323, 323, 301, + 310, 323, 307, 80, 80, 83, 83, 298, 88, 0, + 289, 273, 100, 118, 308, 323, 104, 323, 323, 106, + 107, 301, 308, 323, 323, 323, 323, 0, 113, 323, + 0, 115, 323, 323, 323, 323, 323, 323, 0, 283, + 323, 111, 301, 300, 281, 110, 279, 276, 269, 271, + 276, 296, 323, 149, 323, 153, 323, 130, 120, 151, + 15, 323, 289, 0, 74, 270, 271, 96, 272, 261, + 258, 135, 262, 269, 267, 256, 323, 258, 260, 261, + + 261, 257, 252, 258, 323, 257, 257, 255, 252, 253, + 242, 245, 231, 0, 323, 228, 219, 216, 213, 208, + 216, 148, 151, 147, 150, 148, 323, 323, 0, 137, + 323, 145, 167, 146, 323, 136, 0, 164, 0, 135, + 323, 0, 131, 155, 108, 0, 135, 91, 109, 323, + 178, 186, 194, 202, 206, 214, 222, 228, 236, 240, + 247, 255, 259, 267 } ; -static yyconst flex_int16_t yy_def[164] = +static yyconst flex_int16_t yy_def[165] = { 0, - 149, 1, 150, 150, 151, 151, 152, 152, 153, 153, - 149, 11, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 154, 154, 149, - 149, 149, 155, 149, 156, 149, 149, 149, 149, 157, - 149, 149, 149, 149, 149, 149, 158, 149, 149, 159, - 149, 149, 149, 149, 149, 149, 149, 154, 154, 149, - 149, 32, 32, 149, 149, 149, 149, 149, 149, 149, - 155, 149, 156, 149, 156, 149, 149, 149, 149, 149, - 149, 157, 158, 159, 154, 149, 149, 149, 149, 149, - 160, 149, 149, 149, 149, 149, 154, 149, 149, 149, - - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 154, 149, 161, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 154, 149, 149, 149, 162, 149, 149, - 149, 149, 149, 149, 149, 154, 149, 162, 149, 149, - 163, 149, 149, 149, 163, 149, 149, 149, 0, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149 + 150, 1, 151, 151, 152, 152, 153, 153, 154, 154, + 150, 11, 151, 151, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 155, + 155, 150, 150, 150, 156, 150, 157, 150, 150, 150, + 150, 158, 150, 150, 150, 150, 150, 159, 150, 150, + 160, 150, 150, 150, 150, 150, 150, 150, 155, 155, + 150, 150, 34, 34, 150, 150, 150, 150, 150, 150, + 150, 156, 150, 157, 150, 157, 150, 150, 150, 150, + 150, 150, 158, 159, 160, 155, 150, 150, 150, 150, + 150, 161, 150, 150, 150, 150, 150, 155, 150, 150, + + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 155, 150, 162, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 155, 150, 150, 150, 163, 150, + 150, 150, 150, 150, 150, 150, 155, 150, 163, 150, + 150, 164, 150, 150, 150, 164, 150, 150, 150, 0, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150 } ; -static yyconst flex_int16_t yy_nxt[365] = +static yyconst flex_int16_t yy_nxt[363] = { 0, - 14, 15, 16, 17, 18, 19, 20, 21, 20, 20, - 22, 23, 24, 24, 25, 26, 27, 28, 28, 28, - 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 30, 31, - 34, 34, 87, 32, 88, 38, 16, 35, 35, 39, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 17, 46, - 47, 48, 48, 96, 51, 51, 51, 53, 54, 49, - - 50, 61, 52, 56, 57, 62, 74, 77, 79, 96, - 148, 78, 61, 75, 76, 49, 62, 50, 52, 63, - 141, 79, 99, 44, 48, 48, 51, 51, 51, 100, - 80, 77, 49, 66, 52, 78, 148, 87, 147, 88, - 64, 65, 89, 80, 66, 67, 66, 90, 49, 68, - 52, 74, 79, 69, 70, 74, 143, 105, 149, 149, - 146, 144, 75, 76, 106, 143, 142, 141, 132, 140, - 139, 137, 136, 135, 80, 134, 133, 66, 17, 17, - 17, 17, 17, 17, 17, 17, 33, 33, 33, 33, - 33, 33, 33, 33, 36, 36, 36, 36, 36, 36, - - 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, - 58, 58, 58, 58, 71, 71, 71, 132, 71, 71, - 71, 71, 73, 73, 73, 73, 73, 73, 73, 73, - 82, 131, 82, 82, 82, 82, 83, 130, 83, 83, - 83, 83, 83, 83, 84, 129, 84, 104, 104, 104, - 104, 128, 127, 104, 104, 126, 126, 126, 126, 138, - 125, 138, 138, 138, 138, 138, 138, 145, 124, 145, - 145, 145, 145, 145, 145, 123, 122, 121, 120, 119, - 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, - 108, 107, 103, 102, 101, 98, 97, 81, 72, 95, - - 94, 93, 92, 91, 86, 149, 149, 85, 42, 41, - 81, 72, 60, 59, 55, 45, 44, 43, 42, 41, - 149, 16, 17, 17, 13, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149 + 16, 17, 18, 19, 20, 21, 22, 23, 22, 22, + 24, 25, 26, 26, 27, 28, 29, 30, 30, 30, + 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 32, 33, + 36, 36, 88, 34, 89, 40, 18, 37, 37, 41, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 19, 47, + 48, 49, 49, 97, 52, 52, 52, 54, 55, 50, + + 51, 62, 53, 57, 58, 63, 75, 78, 80, 97, + 149, 79, 62, 76, 77, 50, 63, 51, 53, 64, + 142, 80, 100, 45, 49, 49, 52, 52, 52, 101, + 81, 78, 50, 67, 53, 79, 149, 88, 148, 89, + 65, 66, 90, 81, 67, 68, 67, 91, 50, 69, + 53, 75, 80, 70, 71, 75, 144, 106, 150, 150, + 147, 145, 76, 77, 107, 144, 143, 142, 133, 141, + 140, 138, 137, 136, 81, 135, 134, 67, 19, 19, + 19, 19, 19, 19, 19, 19, 35, 35, 35, 35, + 35, 35, 35, 35, 38, 38, 38, 38, 38, 38, + + 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 59, 59, 59, 59, 72, 72, 72, 133, 72, 72, + 72, 72, 74, 74, 74, 74, 74, 74, 74, 74, + 83, 132, 83, 83, 83, 83, 84, 131, 84, 84, + 84, 84, 84, 84, 85, 130, 85, 105, 105, 105, + 105, 129, 128, 105, 105, 127, 127, 127, 127, 139, + 126, 139, 139, 139, 139, 139, 139, 146, 125, 146, + 146, 146, 146, 146, 146, 124, 123, 122, 121, 120, + 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, + 109, 108, 104, 103, 102, 99, 98, 82, 73, 96, + + 95, 94, 93, 92, 87, 150, 150, 86, 43, 82, + 73, 61, 60, 56, 46, 45, 44, 43, 150, 18, + 19, 19, 15, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150 } ; -static yyconst flex_int16_t yy_chk[365] = +static yyconst flex_int16_t yy_chk[363] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 5, 6, 80, 2, 80, 10, 10, 5, 6, 10, + 5, 6, 81, 2, 81, 10, 10, 5, 6, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 22, - 22, 23, 23, 84, 24, 24, 24, 25, 25, 23, - - 23, 31, 24, 27, 27, 31, 35, 38, 39, 84, - 148, 38, 61, 35, 35, 23, 61, 23, 24, 32, - 147, 78, 87, 32, 48, 48, 51, 51, 51, 87, - 39, 77, 48, 39, 51, 77, 146, 65, 144, 65, - 32, 32, 65, 78, 32, 32, 78, 65, 48, 32, - 51, 73, 79, 32, 32, 75, 143, 91, 73, 73, - 142, 139, 75, 75, 91, 137, 135, 133, 132, 131, - 129, 125, 124, 123, 79, 122, 121, 79, 150, 150, - 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, - 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, - - 152, 152, 153, 153, 153, 153, 153, 153, 153, 153, - 154, 154, 154, 154, 155, 155, 155, 120, 155, 155, - 155, 155, 156, 156, 156, 156, 156, 156, 156, 156, - 157, 119, 157, 157, 157, 157, 158, 118, 158, 158, - 158, 158, 158, 158, 159, 117, 159, 160, 160, 160, - 160, 116, 115, 160, 160, 161, 161, 161, 161, 162, - 112, 162, 162, 162, 162, 162, 162, 163, 111, 163, - 163, 163, 163, 163, 163, 110, 109, 108, 107, 106, - 105, 103, 102, 101, 100, 99, 98, 97, 95, 94, - 93, 92, 90, 89, 88, 86, 85, 82, 71, 70, - - 69, 68, 67, 66, 64, 63, 62, 59, 42, 41, - 40, 33, 30, 29, 26, 21, 19, 18, 15, 14, - 13, 9, 8, 7, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149 + 11, 11, 11, 11, 11, 11, 11, 11, 11, 24, + 24, 25, 25, 85, 26, 26, 26, 27, 27, 25, + + 25, 33, 26, 29, 29, 33, 37, 40, 41, 85, + 149, 40, 62, 37, 37, 25, 62, 25, 26, 34, + 148, 79, 88, 34, 49, 49, 52, 52, 52, 88, + 41, 78, 49, 41, 52, 78, 147, 66, 145, 66, + 34, 34, 66, 79, 34, 34, 79, 66, 49, 34, + 52, 74, 80, 34, 34, 76, 144, 92, 74, 74, + 143, 140, 76, 76, 92, 138, 136, 134, 133, 132, + 130, 126, 125, 124, 80, 123, 122, 80, 151, 151, + 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, + 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, + + 153, 153, 154, 154, 154, 154, 154, 154, 154, 154, + 155, 155, 155, 155, 156, 156, 156, 121, 156, 156, + 156, 156, 157, 157, 157, 157, 157, 157, 157, 157, + 158, 120, 158, 158, 158, 158, 159, 119, 159, 159, + 159, 159, 159, 159, 160, 118, 160, 161, 161, 161, + 161, 117, 116, 161, 161, 162, 162, 162, 162, 163, + 113, 163, 163, 163, 163, 163, 163, 164, 112, 164, + 164, 164, 164, 164, 164, 111, 110, 109, 108, 107, + 106, 104, 103, 102, 101, 100, 99, 98, 96, 95, + 94, 93, 91, 90, 89, 87, 86, 83, 72, 71, + + 70, 69, 68, 67, 65, 64, 63, 60, 43, 42, + 35, 32, 31, 28, 23, 21, 20, 16, 15, 9, + 8, 7, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150 } ; /* The intent behind this definition is that it'll catch @@ -616,8 +617,9 @@ void glcpp_set_column (int column_no , yyscan_t yyscanner); if (parser->has_new_source_number) \ yylloc->source = parser->new_source_number; \ yylloc->first_column = yycolumn + 1; \ - yylloc->first_line = yylineno; \ + yylloc->first_line = yylloc->last_line = yylineno; \ yycolumn += yyleng; \ + yylloc->last_column = yycolumn + 1; \ parser->has_new_line_number = 0; \ parser->has_new_source_number = 0; \ } while(0); @@ -635,7 +637,7 @@ match longer strings take priority over those matching shorter strings, we have to be careful to avoid OTHER matching and hiding something that CPP does care about. So we simply exclude all characters that appear in any other expressions. */ -#line 639 "glcpp/glcpp-lex.c" +#line 641 "glcpp/glcpp-lex.c" #define INITIAL 0 #define DONE 1 @@ -643,6 +645,7 @@ characters that appear in any other expressions. */ #define UNREACHABLE 3 #define SKIP 4 #define DEFINE 5 +#define NEWLINE_CATCHUP 6 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -667,8 +670,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - int yy_n_chars; - int yyleng_r; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -725,7 +728,7 @@ FILE *glcpp_get_out (yyscan_t yyscanner ); void glcpp_set_out (FILE * out_str ,yyscan_t yyscanner ); -int glcpp_get_leng (yyscan_t yyscanner ); +yy_size_t glcpp_get_leng (yyscan_t yyscanner ); char *glcpp_get_text (yyscan_t yyscanner ); @@ -897,23 +900,6 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 94 "glcpp/glcpp-lex.l" - - /* Implicitly switch between SKIP and INITIAL (non-skipping); - * don't switch if some other state was explicitly set. - */ - glcpp_parser_t *parser = yyextra; - if (YY_START == 0 || YY_START == SKIP) { - if (parser->lexing_if || parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) { - BEGIN 0; - } else { - BEGIN SKIP; - } - } - - /* Single-line comments */ -#line 916 "glcpp/glcpp-lex.c" - yylval = yylval_param; yylloc = yylloc_param; @@ -944,6 +930,73 @@ YY_DECL glcpp__load_buffer_state(yyscanner ); } + { +#line 95 "glcpp/glcpp-lex.l" + + + glcpp_parser_t *parser = yyextra; + + /* When we lex a multi-line comment, we replace it (as + * specified) with a single space. But if the comment spanned + * multiple lines, then subsequent parsing stages will not + * count correct line numbers. To avoid this problem we keep + * track of all newlines that were commented out by a + * multi-line comment, and we emit a NEWLINE token for each at + * the next legal opportunity, (which is when the lexer would + * be emitting a NEWLINE token anyway). + */ + if (YY_START == NEWLINE_CATCHUP) { + if (parser->commented_newlines) + parser->commented_newlines--; + if (parser->commented_newlines == 0) + BEGIN INITIAL; + return NEWLINE; + } + + /* The handling of the SKIP vs INITIAL start states requires + * some special handling. Typically, a lexer would change + * start states with statements like "BEGIN SKIP" within the + * lexer rules. We can't get away with that here, since we + * need the parser to actually evaluate expressions for + * directives like "#if". + * + * So, here, in code that will be executed on every call to + * the lexer,and before any rules, we examine the skip_stack + * as set by the parser to know whether to change from INITIAL + * to SKIP or from SKIP back to INITIAL. + * + * Three cases cause us to switch out of the SKIP state and + * back to the INITIAL state: + * + * 1. The top of the skip_stack is of type SKIP_NO_SKIP + * This means we're still evaluating some #if + * hierarchy, but we're on a branch of it where + * content should not be skipped (such as "#if 1" or + * "#else" or so). + * + * 2. The skip_stack is NULL meaning that we've reached + * the last #endif. + * + * 3. The lexing_if bit is set. This indicates that we + * are lexing the expression following an "#if" of + * "#elif". Even inside an "#if 0" we need to lex this + * expression so the parser can correctly update the + * skip_stack state. + */ + if (YY_START == INITIAL || YY_START == SKIP) { + if (parser->lexing_if || + parser->skip_stack == NULL || + parser->skip_stack->type == SKIP_NO_SKIP) + { + BEGIN INITIAL; + } else { + BEGIN SKIP; + } + } + + /* Single-line comments */ +#line 999 "glcpp/glcpp-lex.c" + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; @@ -961,7 +1014,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -970,13 +1023,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 150 ) + if ( yy_current_state >= 151 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 149 ); + while ( yy_current_state != 150 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -998,41 +1051,41 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 108 "glcpp/glcpp-lex.l" +#line 158 "glcpp/glcpp-lex.l" { } YY_BREAK /* Multi-line comments */ case 2: YY_RULE_SETUP -#line 112 "glcpp/glcpp-lex.l" +#line 162 "glcpp/glcpp-lex.l" { yy_push_state(COMMENT, yyscanner); } YY_BREAK case 3: YY_RULE_SETUP -#line 113 "glcpp/glcpp-lex.l" +#line 163 "glcpp/glcpp-lex.l" YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 114 "glcpp/glcpp-lex.l" -{ yylineno++; yycolumn = 0; return NEWLINE; } +#line 164 "glcpp/glcpp-lex.l" +{ yylineno++; yycolumn = 0; parser->commented_newlines++; } YY_BREAK case 5: YY_RULE_SETUP -#line 115 "glcpp/glcpp-lex.l" +#line 165 "glcpp/glcpp-lex.l" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 116 "glcpp/glcpp-lex.l" -{ yylineno++; yycolumn = 0; return NEWLINE; } +#line 166 "glcpp/glcpp-lex.l" +{ yylineno++; yycolumn = 0; parser->commented_newlines++; } YY_BREAK case 7: YY_RULE_SETUP -#line 117 "glcpp/glcpp-lex.l" +#line 167 "glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); if (yyextra->space_tokens) @@ -1041,7 +1094,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 123 "glcpp/glcpp-lex.l" +#line 173 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); yyextra->space_tokens = 0; @@ -1052,8 +1105,10 @@ YY_RULE_SETUP * Simply pass them through to the main compiler's lexer/parser. */ case 9: YY_RULE_SETUP -#line 131 "glcpp/glcpp-lex.l" +#line 181 "glcpp/glcpp-lex.l" { + if (parser->commented_newlines) + BEGIN NEWLINE_CATCHUP; yylval->str = ralloc_strdup (yyextra, yytext); yylineno++; yycolumn = 0; @@ -1062,7 +1117,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 138 "glcpp/glcpp-lex.l" +#line 190 "glcpp/glcpp-lex.l" { return HASH_LINE; } @@ -1070,7 +1125,7 @@ YY_RULE_SETUP case 11: YY_RULE_SETUP -#line 143 "glcpp/glcpp-lex.l" +#line 195 "glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1079,7 +1134,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 149 "glcpp/glcpp-lex.l" +#line 201 "glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1089,10 +1144,11 @@ YY_RULE_SETUP case 13: /* rule 13 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 155 "glcpp/glcpp-lex.l" +#line 207 "glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1102,10 +1158,11 @@ YY_RULE_SETUP case 14: /* rule 14 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 161 "glcpp/glcpp-lex.l" +#line 213 "glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1114,7 +1171,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 167 "glcpp/glcpp-lex.l" +#line 219 "glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_ELSE; @@ -1122,7 +1179,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 172 "glcpp/glcpp-lex.l" +#line 224 "glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_ENDIF; @@ -1131,12 +1188,15 @@ YY_RULE_SETUP case 17: YY_RULE_SETUP -#line 178 "glcpp/glcpp-lex.l" -; +#line 230 "glcpp/glcpp-lex.l" +{ + if (parser->commented_newlines) + BEGIN NEWLINE_CATCHUP; +} YY_BREAK case 18: YY_RULE_SETUP -#line 180 "glcpp/glcpp-lex.l" +#line 235 "glcpp/glcpp-lex.l" { char *p; for (p = yytext; !isalpha(p[0]); p++); /* skip " # " */ @@ -1146,7 +1206,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 187 "glcpp/glcpp-lex.l" +#line 242 "glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; yy_push_state(DEFINE, yyscanner); @@ -1158,7 +1218,7 @@ case 20: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 193 "glcpp/glcpp-lex.l" +#line 248 "glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); yylval->str = ralloc_strdup (yyextra, yytext); @@ -1167,7 +1227,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 199 "glcpp/glcpp-lex.l" +#line 254 "glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); yylval->str = ralloc_strdup (yyextra, yytext); @@ -1176,7 +1236,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 205 "glcpp/glcpp-lex.l" +#line 260 "glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_UNDEF; @@ -1184,7 +1244,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 210 "glcpp/glcpp-lex.l" +#line 265 "glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH; @@ -1192,7 +1252,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 215 "glcpp/glcpp-lex.l" +#line 270 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1200,7 +1260,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 220 "glcpp/glcpp-lex.l" +#line 275 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1208,7 +1268,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 225 "glcpp/glcpp-lex.l" +#line 280 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1216,63 +1276,63 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 230 "glcpp/glcpp-lex.l" +#line 285 "glcpp/glcpp-lex.l" { return LEFT_SHIFT; } YY_BREAK case 28: YY_RULE_SETUP -#line 234 "glcpp/glcpp-lex.l" +#line 289 "glcpp/glcpp-lex.l" { return RIGHT_SHIFT; } YY_BREAK case 29: YY_RULE_SETUP -#line 238 "glcpp/glcpp-lex.l" +#line 293 "glcpp/glcpp-lex.l" { return LESS_OR_EQUAL; } YY_BREAK case 30: YY_RULE_SETUP -#line 242 "glcpp/glcpp-lex.l" +#line 297 "glcpp/glcpp-lex.l" { return GREATER_OR_EQUAL; } YY_BREAK case 31: YY_RULE_SETUP -#line 246 "glcpp/glcpp-lex.l" +#line 301 "glcpp/glcpp-lex.l" { return EQUAL; } YY_BREAK case 32: YY_RULE_SETUP -#line 250 "glcpp/glcpp-lex.l" +#line 305 "glcpp/glcpp-lex.l" { return NOT_EQUAL; } YY_BREAK case 33: YY_RULE_SETUP -#line 254 "glcpp/glcpp-lex.l" +#line 309 "glcpp/glcpp-lex.l" { return AND; } YY_BREAK case 34: YY_RULE_SETUP -#line 258 "glcpp/glcpp-lex.l" +#line 313 "glcpp/glcpp-lex.l" { return OR; } YY_BREAK case 35: YY_RULE_SETUP -#line 262 "glcpp/glcpp-lex.l" +#line 317 "glcpp/glcpp-lex.l" { if (parser->is_gles) glcpp_error(yylloc, yyextra, "Token pasting (##) is illegal in GLES"); @@ -1281,14 +1341,14 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 268 "glcpp/glcpp-lex.l" +#line 323 "glcpp/glcpp-lex.l" { return DEFINED; } YY_BREAK case 37: YY_RULE_SETUP -#line 272 "glcpp/glcpp-lex.l" +#line 327 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return IDENTIFIER; @@ -1296,14 +1356,14 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 277 "glcpp/glcpp-lex.l" +#line 332 "glcpp/glcpp-lex.l" { return yytext[0]; } YY_BREAK case 39: YY_RULE_SETUP -#line 281 "glcpp/glcpp-lex.l" +#line 336 "glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return OTHER; @@ -1311,7 +1371,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 286 "glcpp/glcpp-lex.l" +#line 341 "glcpp/glcpp-lex.l" { if (yyextra->space_tokens) { return SPACE; @@ -1321,8 +1381,11 @@ YY_RULE_SETUP case 41: /* rule 41 can match eol */ YY_RULE_SETUP -#line 292 "glcpp/glcpp-lex.l" +#line 347 "glcpp/glcpp-lex.l" { + if (parser->commented_newlines) { + BEGIN NEWLINE_CATCHUP; + } yyextra->lexing_if = 0; yylineno++; yycolumn = 0; @@ -1331,7 +1394,7 @@ YY_RULE_SETUP YY_BREAK /* Handle missing newline at EOF. */ case YY_STATE_EOF(INITIAL): -#line 300 "glcpp/glcpp-lex.l" +#line 358 "glcpp/glcpp-lex.l" { BEGIN DONE; /* Don't keep matching this rule forever. */ yyextra->lexing_if = 0; @@ -1344,7 +1407,7 @@ case YY_STATE_EOF(INITIAL): warnings. */ case 42: YY_RULE_SETUP -#line 310 "glcpp/glcpp-lex.l" +#line 368 "glcpp/glcpp-lex.l" { unput('.'); yy_top_state(yyextra); @@ -1352,15 +1415,16 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 315 "glcpp/glcpp-lex.l" +#line 373 "glcpp/glcpp-lex.l" ECHO; YY_BREAK -#line 1359 "glcpp/glcpp-lex.c" +#line 1422 "glcpp/glcpp-lex.c" case YY_STATE_EOF(DONE): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(UNREACHABLE): case YY_STATE_EOF(SKIP): case YY_STATE_EOF(DEFINE): +case YY_STATE_EOF(NEWLINE_CATCHUP): yyterminate(); case YY_END_OF_BUFFER: @@ -1491,6 +1555,7 @@ case YY_STATE_EOF(DEFINE): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of glcpp_lex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1547,21 +1612,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1592,7 +1657,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); + yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } @@ -1655,7 +1720,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 150 ) + if ( yy_current_state >= 151 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1684,12 +1749,13 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 150 ) + if ( yy_current_state >= 151 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 149); + yy_is_jam = (yy_current_state == 150); + (void)yyg; return yy_is_jam ? 0 : yy_current_state; } @@ -1706,7 +1772,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = yyg->yy_n_chars + 2; + register yy_size_t number_to_move = yyg->yy_n_chars + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -1756,7 +1822,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -2038,7 +2104,7 @@ void glcpp_pop_buffer_state (yyscan_t yyscanner) */ static void glcpp_ensure_buffer_stack (yyscan_t yyscanner) { - int num_to_alloc; + yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -2136,12 +2202,12 @@ YY_BUFFER_STATE glcpp__scan_string (yyconst char * yystr , yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE glcpp__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE glcpp__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -2291,7 +2357,7 @@ FILE *glcpp_get_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int glcpp_get_leng (yyscan_t yyscanner) +yy_size_t glcpp_get_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -2327,7 +2393,7 @@ void glcpp_set_lineno (int line_number , yyscan_t yyscanner) /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "glcpp_set_lineno called with no buffer" , yyscanner); + YY_FATAL_ERROR( "glcpp_set_lineno called with no buffer" ); yylineno = line_number; } @@ -2342,7 +2408,7 @@ void glcpp_set_column (int column_no , yyscan_t yyscanner) /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "glcpp_set_column called with no buffer" , yyscanner); + YY_FATAL_ERROR( "glcpp_set_column called with no buffer" ); yycolumn = column_no; } @@ -2578,7 +2644,7 @@ void glcpp_free (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 315 "glcpp/glcpp-lex.l" +#line 372 "glcpp/glcpp-lex.l" diff --git a/dist/Mesa/src/glsl/glcpp/glcpp-lex.l b/dist/Mesa/src/glsl/glcpp/glcpp-lex.l index a029f6203..188e45466 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp-lex.l +++ b/dist/Mesa/src/glsl/glcpp/glcpp-lex.l @@ -47,8 +47,9 @@ void glcpp_set_column (int column_no , yyscan_t yyscanner); if (parser->has_new_source_number) \ yylloc->source = parser->new_source_number; \ yylloc->first_column = yycolumn + 1; \ - yylloc->first_line = yylineno; \ + yylloc->first_line = yylloc->last_line = yylineno; \ yycolumn += yyleng; \ + yylloc->last_column = yycolumn + 1; \ parser->has_new_line_number = 0; \ parser->has_new_source_number = 0; \ } while(0); @@ -67,7 +68,7 @@ void glcpp_set_column (int column_no , yyscan_t yyscanner); %option stack %option never-interactive -%x DONE COMMENT UNREACHABLE SKIP DEFINE +%x DONE COMMENT UNREACHABLE SKIP DEFINE NEWLINE_CATCHUP SPACE [[:space:]] NONSPACE [^[:space:]] @@ -92,13 +93,62 @@ OCTAL_INTEGER 0[0-7]*[uU]? HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? %% - /* Implicitly switch between SKIP and INITIAL (non-skipping); - * don't switch if some other state was explicitly set. - */ + glcpp_parser_t *parser = yyextra; - if (YY_START == 0 || YY_START == SKIP) { - if (parser->lexing_if || parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) { - BEGIN 0; + + /* When we lex a multi-line comment, we replace it (as + * specified) with a single space. But if the comment spanned + * multiple lines, then subsequent parsing stages will not + * count correct line numbers. To avoid this problem we keep + * track of all newlines that were commented out by a + * multi-line comment, and we emit a NEWLINE token for each at + * the next legal opportunity, (which is when the lexer would + * be emitting a NEWLINE token anyway). + */ + if (YY_START == NEWLINE_CATCHUP) { + if (parser->commented_newlines) + parser->commented_newlines--; + if (parser->commented_newlines == 0) + BEGIN INITIAL; + return NEWLINE; + } + + /* The handling of the SKIP vs INITIAL start states requires + * some special handling. Typically, a lexer would change + * start states with statements like "BEGIN SKIP" within the + * lexer rules. We can't get away with that here, since we + * need the parser to actually evaluate expressions for + * directives like "#if". + * + * So, here, in code that will be executed on every call to + * the lexer,and before any rules, we examine the skip_stack + * as set by the parser to know whether to change from INITIAL + * to SKIP or from SKIP back to INITIAL. + * + * Three cases cause us to switch out of the SKIP state and + * back to the INITIAL state: + * + * 1. The top of the skip_stack is of type SKIP_NO_SKIP + * This means we're still evaluating some #if + * hierarchy, but we're on a branch of it where + * content should not be skipped (such as "#if 1" or + * "#else" or so). + * + * 2. The skip_stack is NULL meaning that we've reached + * the last #endif. + * + * 3. The lexing_if bit is set. This indicates that we + * are lexing the expression following an "#if" of + * "#elif". Even inside an "#if 0" we need to lex this + * expression so the parser can correctly update the + * skip_stack state. + */ + if (YY_START == INITIAL || YY_START == SKIP) { + if (parser->lexing_if || + parser->skip_stack == NULL || + parser->skip_stack->type == SKIP_NO_SKIP) + { + BEGIN INITIAL; } else { BEGIN SKIP; } @@ -111,9 +161,9 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? /* Multi-line comments */ "/*" { yy_push_state(COMMENT, yyscanner); } <COMMENT>[^*\n]* -<COMMENT>[^*\n]*\n { yylineno++; yycolumn = 0; return NEWLINE; } +<COMMENT>[^*\n]*\n { yylineno++; yycolumn = 0; parser->commented_newlines++; } <COMMENT>"*"+[^*/\n]* -<COMMENT>"*"+[^*/\n]*\n { yylineno++; yycolumn = 0; return NEWLINE; } +<COMMENT>"*"+[^*/\n]*\n { yylineno++; yycolumn = 0; parser->commented_newlines++; } <COMMENT>"*"+"/" { yy_pop_state(yyscanner); if (yyextra->space_tokens) @@ -129,6 +179,8 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? /* glcpp doesn't handle #extension, #version, or #pragma directives. * Simply pass them through to the main compiler's lexer/parser. */ {HASH}(extension|pragma)[^\n]+ { + if (parser->commented_newlines) + BEGIN NEWLINE_CATCHUP; yylval->str = ralloc_strdup (yyextra, yytext); yylineno++; yycolumn = 0; @@ -175,7 +227,10 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? } } -<SKIP>[^\n] ; +<SKIP>[^\n] { + if (parser->commented_newlines) + BEGIN NEWLINE_CATCHUP; +} {HASH}error.* { char *p; @@ -283,13 +338,16 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? return OTHER; } -{HSPACE}+ { +{HSPACE} { if (yyextra->space_tokens) { return SPACE; } } <SKIP,INITIAL>\n { + if (parser->commented_newlines) { + BEGIN NEWLINE_CATCHUP; + } yyextra->lexing_if = 0; yylineno++; yycolumn = 0; diff --git a/dist/Mesa/src/glsl/glcpp/glcpp-parse.c b/dist/Mesa/src/glsl/glcpp/glcpp-parse.c index 9b0163dea..a131a824e 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp-parse.c +++ b/dist/Mesa/src/glsl/glcpp/glcpp-parse.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7.12-4996" +#define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -63,15 +63,12 @@ #define yyparse glcpp_parser_parse #define yylex glcpp_parser_lex #define yyerror glcpp_parser_error -#define yylval glcpp_parser_lval -#define yychar glcpp_parser_char #define yydebug glcpp_parser_debug #define yynerrs glcpp_parser_nerrs -#define yylloc glcpp_parser_lloc + /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 1 "glcpp/glcpp-parse.y" +#line 1 "glcpp/glcpp-parse.y" /* yacc.c:339 */ /* * Copyright © 2010 Intel Corporation @@ -209,7 +206,7 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc); static void _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version, - const char *ident); + const char *ident, bool explicitly_set); static int glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser); @@ -221,14 +218,13 @@ static void add_builtin_define(glcpp_parser_t *parser, const char *name, int value); -/* Line 371 of yacc.c */ -#line 226 "glcpp/glcpp-parse.c" +#line 222 "glcpp/glcpp-parse.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -244,7 +240,7 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value); by #include "glcpp-parse.h". */ #ifndef YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED # define YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -252,91 +248,74 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value); extern int glcpp_parser_debug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - COMMA_FINAL = 258, - DEFINED = 259, - ELIF_EXPANDED = 260, - HASH = 261, - HASH_DEFINE = 262, - FUNC_IDENTIFIER = 263, - OBJ_IDENTIFIER = 264, - HASH_ELIF = 265, - HASH_ELSE = 266, - HASH_ENDIF = 267, - HASH_IF = 268, - HASH_IFDEF = 269, - HASH_IFNDEF = 270, - HASH_LINE = 271, - HASH_UNDEF = 272, - HASH_VERSION = 273, - IDENTIFIER = 274, - IF_EXPANDED = 275, - INTEGER = 276, - INTEGER_STRING = 277, - LINE_EXPANDED = 278, - NEWLINE = 279, - OTHER = 280, - PLACEHOLDER = 281, - SPACE = 282, - PASTE = 283, - OR = 284, - AND = 285, - NOT_EQUAL = 286, - EQUAL = 287, - GREATER_OR_EQUAL = 288, - LESS_OR_EQUAL = 289, - RIGHT_SHIFT = 290, - LEFT_SHIFT = 291, - UNARY = 292 - }; + enum yytokentype + { + COMMA_FINAL = 258, + DEFINED = 259, + ELIF_EXPANDED = 260, + HASH = 261, + HASH_DEFINE = 262, + FUNC_IDENTIFIER = 263, + OBJ_IDENTIFIER = 264, + HASH_ELIF = 265, + HASH_ELSE = 266, + HASH_ENDIF = 267, + HASH_IF = 268, + HASH_IFDEF = 269, + HASH_IFNDEF = 270, + HASH_LINE = 271, + HASH_UNDEF = 272, + HASH_VERSION = 273, + IDENTIFIER = 274, + IF_EXPANDED = 275, + INTEGER = 276, + INTEGER_STRING = 277, + LINE_EXPANDED = 278, + NEWLINE = 279, + OTHER = 280, + PLACEHOLDER = 281, + SPACE = 282, + PASTE = 283, + OR = 284, + AND = 285, + EQUAL = 286, + NOT_EQUAL = 287, + LESS_OR_EQUAL = 288, + GREATER_OR_EQUAL = 289, + LEFT_SHIFT = 290, + RIGHT_SHIFT = 291, + UNARY = 292 + }; #endif +/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif - +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int glcpp_parser_parse (void *YYPARSE_PARAM); -#else -int glcpp_parser_parse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus + int glcpp_parser_parse (glcpp_parser_t *parser); -#else -int glcpp_parser_parse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 340 "glcpp/glcpp-parse.c" +#line 319 "glcpp/glcpp-parse.c" /* yacc.c:358 */ #ifdef short # undef short @@ -350,11 +329,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -374,8 +350,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -397,11 +372,30 @@ typedef short int yytype_int16; # endif #endif -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -412,24 +406,25 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -448,8 +443,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -461,8 +455,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -478,7 +472,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -486,15 +480,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -504,8 +496,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -531,16 +523,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -559,7 +551,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -567,25 +559,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 670 +#define YYLAST 695 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 60 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 19 +#define YYNNTS 26 /* YYNRULES -- Number of rules. */ -#define YYNRULES 108 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 174 +#define YYNRULES 115 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 181 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 292 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -621,74 +615,21 @@ static const yytype_uint8 yytranslate[] = }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 4, 7, 9, 13, 15, 17, 20, - 24, 28, 32, 37, 42, 49, 57, 61, 65, 68, - 73, 78, 82, 85, 86, 90, 91, 95, 99, 104, - 107, 109, 111, 113, 115, 119, 123, 127, 131, 135, - 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, - 179, 183, 187, 190, 193, 196, 199, 203, 205, 209, - 211, 214, 217, 218, 220, 221, 223, 226, 231, 233, - 235, 238, 240, 243, 245, 247, 249, 251, 253, 255, - 257, 259, 261, 263, 265, 267, 269, 271, 273, 275, - 277, 279, 281, 283, 285, 287, 289, 291, 293, 295, - 297, 299, 301, 303, 305, 307, 309, 311, 313 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 61, 0, -1, -1, 61, 62, -1, 64, -1, 16, - 76, 24, -1, 70, -1, 63, -1, 6, 71, -1, - 20, 68, 24, -1, 5, 68, 24, -1, 23, 67, - 24, -1, 23, 67, 67, 24, -1, 7, 9, 72, - 24, -1, 7, 8, 48, 49, 72, 24, -1, 7, - 8, 48, 69, 49, 72, 24, -1, 17, 19, 24, - -1, 13, 75, 24, -1, 13, 24, -1, 14, 19, - 73, 24, -1, 15, 19, 73, 24, -1, 10, 75, - 24, -1, 10, 24, -1, -1, 11, 65, 24, -1, - -1, 12, 66, 24, -1, 18, 67, 24, -1, 18, - 67, 19, 24, -1, 6, 24, -1, 22, -1, 21, - -1, 67, -1, 19, -1, 68, 29, 68, -1, 68, - 30, 68, -1, 68, 31, 68, -1, 68, 32, 68, - -1, 68, 33, 68, -1, 68, 34, 68, -1, 68, - 35, 68, -1, 68, 38, 68, -1, 68, 39, 68, - -1, 68, 37, 68, -1, 68, 36, 68, -1, 68, - 40, 68, -1, 68, 41, 68, -1, 68, 43, 68, - -1, 68, 42, 68, -1, 68, 46, 68, -1, 68, - 45, 68, -1, 68, 44, 68, -1, 50, 68, -1, - 51, 68, -1, 43, 68, -1, 42, 68, -1, 48, - 68, 49, -1, 19, -1, 69, 52, 19, -1, 24, - -1, 76, 24, -1, 76, 24, -1, -1, 76, -1, - -1, 76, -1, 4, 19, -1, 4, 48, 19, 49, - -1, 77, -1, 74, -1, 75, 74, -1, 77, -1, - 76, 77, -1, 19, -1, 22, -1, 78, -1, 25, - -1, 27, -1, 53, -1, 54, -1, 48, -1, 49, - -1, 55, -1, 56, -1, 57, -1, 33, -1, 44, - -1, 42, -1, 43, -1, 51, -1, 50, -1, 45, - -1, 46, -1, 41, -1, 40, -1, 36, -1, 37, - -1, 39, -1, 38, -1, 35, -1, 34, -1, 32, - -1, 31, -1, 30, -1, 29, -1, 58, -1, 52, - -1, 59, -1, 28, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 188, 188, 190, 194, 197, 205, 210, 211, 215, - 218, 221, 229, 242, 245, 248, 251, 259, 279, 289, - 294, 299, 319, 334, 334, 337, 337, 340, 343, 346, - 350, 359, 364, 365, 370, 373, 376, 379, 382, 385, - 388, 391, 394, 397, 400, 403, 406, 409, 412, 415, - 423, 431, 434, 437, 440, 443, 446, 452, 457, 465, - 466, 470, 476, 477, 480, 482, 489, 493, 497, 502, - 506, 513, 518, 525, 529, 533, 537, 541, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, - 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578 + 0, 188, 188, 190, 194, 197, 197, 208, 213, 214, + 218, 221, 224, 232, 245, 248, 251, 257, 257, 260, + 260, 270, 270, 292, 302, 302, 309, 309, 316, 341, + 361, 361, 374, 374, 377, 383, 389, 395, 404, 409, + 410, 415, 418, 421, 424, 427, 430, 433, 436, 439, + 442, 445, 448, 451, 454, 457, 460, 468, 476, 479, + 482, 485, 488, 491, 497, 502, 510, 511, 515, 521, + 522, 525, 527, 534, 538, 542, 547, 551, 558, 563, + 570, 574, 578, 582, 586, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623 }; #endif @@ -703,20 +644,21 @@ static const char *const yytname[] = "HASH_IFDEF", "HASH_IFNDEF", "HASH_LINE", "HASH_UNDEF", "HASH_VERSION", "IDENTIFIER", "IF_EXPANDED", "INTEGER", "INTEGER_STRING", "LINE_EXPANDED", "NEWLINE", "OTHER", "PLACEHOLDER", "SPACE", "PASTE", - "OR", "AND", "'|'", "'^'", "'&'", "NOT_EQUAL", "EQUAL", "'<'", "'>'", - "GREATER_OR_EQUAL", "LESS_OR_EQUAL", "RIGHT_SHIFT", "LEFT_SHIFT", "'+'", + "OR", "AND", "'|'", "'^'", "'&'", "EQUAL", "NOT_EQUAL", "'<'", "'>'", + "LESS_OR_EQUAL", "GREATER_OR_EQUAL", "LEFT_SHIFT", "RIGHT_SHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "'('", "')'", "'!'", "'~'", "','", "'['", "']'", "'{'", "'}'", "'.'", "';'", "'='", "$accept", "input", - "line", "expanded_line", "control_line", "$@1", "$@2", - "integer_constant", "expression", "identifier_list", "text_line", - "non_directive", "replacement_list", "junk", "conditional_token", - "conditional_tokens", "pp_tokens", "preprocessing_token", "operator", YY_NULL + "line", "$@1", "expanded_line", "define", "control_line", "$@2", "$@3", + "$@4", "$@5", "$@6", "$@7", "$@8", "integer_constant", "expression", + "identifier_list", "text_line", "non_directive", "replacement_list", + "junk", "conditional_token", "conditional_tokens", "pp_tokens", + "preprocessing_token", "operator", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -728,226 +670,197 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 60, 61, 61, 62, 62, 62, 62, 62, 63, - 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 64, 66, 64, 64, 64, 64, - 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 69, 69, 70, - 70, 71, 72, 72, 73, 73, 74, 74, 74, 75, - 75, 76, 76, 77, 77, 77, 77, 77, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78 -}; +#define YYPACT_NINF -166 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-166))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 2, 0, 2, 1, 3, 1, 1, 2, 3, - 3, 3, 4, 4, 6, 7, 3, 3, 2, 4, - 4, 3, 2, 0, 3, 0, 3, 3, 4, 2, - 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 2, 3, 1, 3, 1, - 2, 2, 0, 1, 0, 1, 2, 4, 1, 1, - 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1 + -166, 147, -166, 87, -10, -166, 190, -166, -166, -17, + -166, -166, -166, -166, 52, -166, 87, -166, 52, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, 360, -166, -166, + -166, -166, -166, 87, 87, 87, 87, 87, -166, 519, + -166, -166, 401, 105, 31, -166, -166, 233, -166, 34, + 44, -166, 319, 67, 86, 483, 88, -8, 542, 48, + -166, -166, -166, -166, 560, -166, -166, -166, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, -166, -35, 483, -166, + -166, 96, -166, -166, -166, -166, 276, 483, 483, 442, + 92, 93, -166, -166, -166, 94, -166, 580, 596, 611, + 625, 638, 649, 649, 19, 19, 19, 19, 38, 38, + 66, 66, -166, -166, -166, 18, 95, 483, 72, -166, + 98, 483, 100, -166, -166, -166, -166, -166, 483, 26, + -166, -166, -166, -166, 101, 483, 107, -166, 108, -166, + -166 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 0, 0, 0, 0, 23, 25, 0, - 0, 0, 0, 0, 0, 73, 0, 74, 0, 59, - 76, 77, 108, 104, 103, 102, 101, 85, 100, 99, - 95, 96, 98, 97, 94, 93, 87, 88, 86, 91, - 92, 80, 81, 90, 89, 106, 78, 79, 82, 83, - 84, 105, 107, 3, 7, 4, 6, 0, 71, 75, - 33, 31, 30, 0, 0, 0, 0, 0, 32, 0, - 29, 8, 0, 0, 62, 0, 22, 69, 0, 68, - 0, 0, 18, 0, 64, 64, 0, 0, 0, 0, - 0, 60, 72, 55, 54, 0, 52, 53, 10, 0, + 2, 0, 1, 0, 0, 17, 0, 30, 32, 21, + 24, 26, 5, 19, 0, 80, 0, 81, 0, 66, + 83, 84, 115, 111, 110, 109, 108, 92, 106, 107, + 102, 103, 104, 105, 100, 101, 94, 95, 93, 98, + 99, 87, 88, 97, 96, 113, 85, 86, 89, 90, + 91, 112, 114, 3, 8, 4, 7, 0, 78, 82, + 40, 38, 37, 0, 0, 0, 0, 0, 39, 0, + 36, 9, 0, 0, 0, 29, 76, 0, 75, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 79, 62, 61, 0, 59, 60, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 63, 66, 0, 21, 70, 24, 26, 17, 0, 65, - 0, 5, 16, 0, 27, 9, 11, 0, 56, 34, - 35, 36, 37, 38, 39, 40, 44, 43, 41, 42, - 45, 46, 48, 47, 51, 50, 49, 57, 62, 0, - 13, 0, 19, 20, 28, 12, 0, 62, 0, 67, - 14, 0, 58, 15 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 53, 54, 55, 80, 81, 68, 69, 159, - 56, 71, 119, 128, 77, 78, 120, 58, 59 + 0, 0, 0, 0, 0, 0, 68, 0, 69, 18, + 73, 0, 28, 77, 31, 33, 0, 71, 71, 0, + 0, 0, 34, 10, 12, 0, 63, 41, 42, 43, + 44, 45, 47, 46, 51, 50, 49, 48, 53, 52, + 55, 54, 58, 57, 56, 0, 0, 70, 0, 22, + 0, 72, 0, 6, 20, 35, 13, 64, 69, 0, + 14, 74, 25, 27, 0, 69, 0, 15, 0, 65, + 16 }; -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -151 -static const yytype_int16 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -151, 115, -151, 492, -9, 108, 158, -151, -151, 201, - -8, 48, 451, 50, 97, -151, 492, -151, 97, -151, - -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, -151, -151, -151, -151, 328, -151, -151, - -151, -151, -151, 492, 492, 492, 492, 492, -151, 515, - -151, -151, 369, -41, 451, 38, -151, -151, 244, -151, - 47, 51, -151, 287, 451, 451, 410, 57, -10, 538, - 52, -151, -151, -151, -151, 487, -151, -151, -151, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, -151, 19, 59, - 451, -151, 68, -151, -151, -151, -151, -151, 100, 451, - 112, -151, -151, 117, -151, -151, -151, 151, -151, 555, - 571, 586, 600, 613, 624, 624, 18, 18, 18, 18, - 64, 64, 67, 67, -151, -151, -151, -151, 451, 30, - -151, 127, -151, -151, -151, -151, 154, 451, 160, -151, - -151, 157, -151, -151 + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -12, -11, -166, -166, -166, -165, + 3, -69, 51, 0, -6, -166 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -151, -151, -151, -151, -151, -151, -151, -12, -11, -151, - -151, -151, -150, 99, -13, 209, 0, -6, -151 + -1, 1, 53, 85, 54, 119, 55, 73, 86, 82, + 83, 84, 79, 80, 68, 69, 169, 56, 71, 156, + 160, 76, 77, 157, 58, 59 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 79, 57, 88, 79, 72, 89, 90, 118, 166, 133, - 15, 84, 86, 17, 134, 70, 20, 171, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 157, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 92, 93, 94, 95, 96, 97, 121, 110, 111, - 112, 113, 114, 115, 116, 124, 92, 85, 158, 87, - 124, 125, 79, 61, 62, 126, 136, 79, 137, 167, - 92, 132, 168, 160, 129, 129, 122, 161, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 112, 113, 114, 115, - 116, 114, 115, 116, 92, 2, 73, 74, 61, 62, - 3, 4, 5, 92, 162, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 163, 17, 18, 19, - 20, 164, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 75, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 165, 169, 15, 170, 172, - 17, 173, 76, 20, 130, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 75, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 83, 0, - 15, 0, 0, 17, 0, 82, 20, 0, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 75, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 0, 0, 15, 0, 0, 17, 0, 123, 20, - 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 75, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 0, 0, 15, 0, 0, 17, - 0, 127, 20, 0, 21, 22, 23, 24, 25, 26, + 78, 57, 87, 174, 72, 88, 89, 81, 123, 15, + 178, 131, 17, 155, 70, 20, 132, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 167, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 120, 91, 92, 93, 94, 95, 96, 123, 124, 109, + 110, 111, 112, 113, 114, 115, 91, 168, 125, 61, + 62, 78, 134, 61, 62, 175, 78, 135, 176, 121, + 111, 112, 113, 114, 115, 129, 127, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 128, 60, 130, 61, 62, + 113, 114, 115, 117, 118, 158, 164, 165, 166, 170, + 78, 171, 172, 91, 173, 177, 179, 161, 161, 63, + 64, 162, 180, 126, 0, 65, 0, 66, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 91, 3, 4, 5, 91, 0, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, + 18, 19, 20, 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 15, 0, 0, - 17, 0, 91, 20, 0, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 15, 0, - 0, 17, 0, 117, 20, 0, 21, 22, 23, 24, + 37, 38, 39, 40, 74, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 0, 0, 15, + 0, 0, 17, 0, 75, 20, 0, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 74, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 0, 0, 15, 0, 0, 17, 0, 122, 20, 0, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 74, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 0, 0, 15, 0, 0, 17, 0, + 159, 20, 0, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 74, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 0, 0, 15, 0, + 0, 17, 0, 0, 20, 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 15, - 0, 0, 17, 0, 131, 20, 0, 21, 22, 23, + 0, 0, 17, 0, 90, 20, 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 15, 0, 0, 17, 0, 0, 20, 0, 21, 22, + 15, 0, 0, 17, 0, 116, 20, 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 60, 0, 61, 62, 0, 99, 100, 101, 102, + 52, 15, 0, 0, 17, 0, 163, 20, 0, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 15, 0, 0, 17, 0, 0, 20, 0, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 97, 0, 0, 0, 0, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 133, 0, 0, 0, + 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 0, 0, 136, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 63, 64, 138, 0, 0, 98, - 65, 0, 66, 67, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 135, 0, 0, 0, 0, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 102, 103, + 113, 114, 115, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116 + 114, 115, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-151))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 6, 1, 14, 9, 4, 16, 18, 48, 158, 19, - 19, 19, 12, 22, 24, 24, 25, 167, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 19, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 57, 63, 64, 65, 66, 67, 19, 40, 41, - 42, 43, 44, 45, 46, 78, 72, 19, 49, 19, - 83, 24, 78, 21, 22, 24, 24, 83, 90, 49, - 86, 24, 52, 24, 84, 85, 48, 19, 99, 100, + 6, 1, 14, 168, 4, 16, 18, 24, 77, 19, + 175, 19, 22, 48, 24, 25, 24, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 19, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 19, 57, 63, 64, 65, 66, 67, 126, 24, 40, + 41, 42, 43, 44, 45, 46, 72, 49, 24, 21, + 22, 77, 24, 21, 22, 49, 82, 89, 52, 48, + 42, 43, 44, 45, 46, 85, 19, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 42, 43, 44, 45, - 46, 44, 45, 46, 120, 0, 8, 9, 21, 22, - 5, 6, 7, 129, 24, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 24, 22, 23, 24, - 25, 24, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 4, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 24, 49, 19, 24, 19, - 22, 24, 24, 25, 85, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 4, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 9, -1, - 19, -1, -1, 22, -1, 24, 25, -1, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 4, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, 19, -1, -1, 22, -1, 24, 25, - -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 4, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, -1, 19, -1, -1, 22, - -1, 24, 25, -1, 27, 28, 29, 30, 31, 32, + 111, 112, 113, 114, 115, 19, 19, 19, 21, 22, + 44, 45, 46, 8, 9, 19, 24, 24, 24, 24, + 126, 49, 24, 129, 24, 24, 19, 127, 128, 42, + 43, 128, 24, 82, -1, 48, -1, 50, 51, -1, + -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, 157, 5, 6, 7, 161, -1, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, -1, 22, + 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 19, -1, -1, - 22, -1, 24, 25, -1, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 19, -1, - -1, 22, -1, 24, 25, -1, 27, 28, 29, 30, + 43, 44, 45, 46, 4, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, -1, -1, 19, + -1, -1, 22, -1, 24, 25, -1, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 4, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + -1, -1, 19, -1, -1, 22, -1, 24, 25, -1, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 4, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, -1, -1, 19, -1, -1, 22, -1, + 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 4, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, -1, -1, 19, -1, + -1, 22, -1, -1, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 19, @@ -955,31 +868,38 @@ static const yytype_int16 yycheck[] = 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 19, -1, -1, 22, -1, -1, 25, -1, 27, 28, + 19, -1, -1, 22, -1, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 19, -1, 21, 22, -1, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 42, 43, 49, -1, -1, 24, - 48, -1, 50, 51, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 34, 35, 36, + 59, 19, -1, -1, 22, -1, 24, 25, -1, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 19, -1, -1, 22, -1, -1, 25, -1, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46 + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 24, -1, -1, -1, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 61, 0, 5, 6, 7, 10, 11, 12, 13, @@ -987,45 +907,66 @@ static const yytype_uint8 yystos[] = 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 62, 63, 64, 70, 76, 77, 78, - 19, 21, 22, 42, 43, 48, 50, 51, 67, 68, - 24, 71, 76, 8, 9, 4, 24, 74, 75, 77, - 65, 66, 24, 75, 19, 19, 76, 19, 67, 68, - 67, 24, 77, 68, 68, 68, 68, 68, 24, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 24, 48, 72, - 76, 19, 48, 24, 74, 24, 24, 24, 73, 76, - 73, 24, 24, 19, 24, 24, 24, 67, 49, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 19, 49, 69, - 24, 19, 24, 24, 24, 24, 72, 49, 52, 49, - 24, 72, 19, 24 + 57, 58, 59, 62, 64, 66, 77, 83, 84, 85, + 19, 21, 22, 42, 43, 48, 50, 51, 74, 75, + 24, 78, 83, 67, 4, 24, 81, 82, 84, 72, + 73, 24, 69, 70, 71, 63, 68, 74, 75, 74, + 24, 84, 75, 75, 75, 75, 75, 24, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 24, 8, 9, 65, + 19, 48, 24, 81, 24, 24, 82, 19, 19, 83, + 19, 19, 24, 24, 24, 74, 49, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 48, 79, 83, 19, 24, + 80, 83, 80, 24, 24, 24, 24, 19, 49, 76, + 24, 49, 24, 24, 79, 49, 52, 24, 79, 19, + 24 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 60, 61, 61, 62, 63, 62, 62, 62, 62, + 64, 64, 64, 64, 65, 65, 65, 67, 66, 68, + 66, 69, 66, 66, 70, 66, 71, 66, 66, 66, + 72, 66, 73, 66, 66, 66, 66, 74, 74, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 76, 76, 77, 77, 78, 79, + 79, 80, 80, 81, 81, 81, 82, 82, 83, 83, + 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 1, 0, 4, 1, 1, 2, + 3, 3, 3, 4, 3, 5, 6, 0, 3, 0, + 4, 0, 4, 2, 0, 5, 0, 5, 3, 2, + 0, 3, 0, 3, 3, 4, 2, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 3, 1, 3, 1, 2, 2, 0, + 1, 0, 1, 2, 4, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -1042,13 +983,13 @@ do \ else \ { \ yyerror (&yylloc, parser, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -1058,7 +999,7 @@ while (YYID (0)) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (YYID (N)) \ + if (N) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -1072,12 +1013,27 @@ while (YYID (0)) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (YYID (0)) + while (0) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ @@ -1087,36 +1043,28 @@ while (YYID (0)) /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -__attribute__((__unused__)) -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +YY_ATTRIBUTE_UNUSED static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) -#else -static unsigned -yy_location_print_ (yyo, yylocp) - FILE *yyo; - YYLTYPE const * const yylocp; -#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += fprintf (yyo, "%d", yylocp->first_line); + res += YYFPRINTF (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += fprintf (yyo, ".%d", yylocp->first_column); + res += YYFPRINTF (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += fprintf (yyo, "-%d", yylocp->last_line); + res += YYFPRINTF (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += fprintf (yyo, ".%d", end_col); + res += YYFPRINTF (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += fprintf (yyo, "-%d", end_col); + res += YYFPRINTF (yyo, "-%d", end_col); } return res; } @@ -1130,69 +1078,34 @@ yy_location_print_ (yyo, yylocp) #endif -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, &yylloc, parser) -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, parser); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, parser); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, glcpp_parser_t *parser) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - glcpp_parser_t *parser; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); - if (!yyvaluep) - return; YYUSE (yylocationp); YYUSE (parser); + if (!yyvaluep) + return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif YYUSE (yytype); } @@ -1202,24 +1115,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, glcpp_parser_t *parser) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parser) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - glcpp_parser_t *parser; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -1232,16 +1132,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parser) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1252,51 +1144,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, glcpp_parser_t *parser) -#else static void -yy_reduce_print (yyvsp, yylsp, yyrule, parser) - YYSTYPE *yyvsp; - YYLTYPE *yylsp; - int yyrule; - glcpp_parser_t *parser; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, glcpp_parser_t *parser) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , parser); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) , parser); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule, parser); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, yylsp, Rule, parser); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1310,7 +1193,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1333,15 +1216,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1357,16 +1233,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1396,27 +1264,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1439,11 +1307,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1451,10 +1319,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1504,7 +1368,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -1571,30 +1435,19 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, glcpp_parser_t *parser) -#else -static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp, parser) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - YYLTYPE *yylocationp; - glcpp_parser_t *parser; -#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (parser); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1604,66 +1457,27 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parser) | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (glcpp_parser_t *parser) -#else -int -yyparse (parser) - glcpp_parser_t *parser; -#endif -#endif { /* The lookahead symbol. */ int yychar; -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else +/* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -static YYSTYPE yyval_default; -# define YY_INITIAL_VALUE(Value) = Value -#endif +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); + +/* Location data for the lookahead symbol. */ static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - -/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; - /* Number of syntax errors so far. */ int yynerrs; @@ -1672,9 +1486,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. - `yyls': related to locations. + 'yyss': related to states. + 'yyvs': related to semantic values. + 'yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -1734,8 +1548,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -/* Line 1570 of yacc.c */ -#line 155 "glcpp/glcpp-parse.y" +#line 155 "glcpp/glcpp-parse.y" /* yacc.c:1429 */ { yylloc.first_line = 1; yylloc.first_column = 1; @@ -1743,8 +1556,8 @@ YYLTYPE yylloc = yyloc_default; yylloc.last_column = 1; yylloc.source = 0; } -/* Line 1570 of yacc.c */ -#line 1748 "glcpp/glcpp-parse.c" + +#line 1561 "glcpp/glcpp-parse.c" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -1766,26 +1579,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1793,23 +1606,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1819,10 +1632,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1851,7 +1664,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (&yylval, &yylloc, parser); } if (yychar <= YYEOF) @@ -1916,7 +1729,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -1931,120 +1744,152 @@ yyreduce: switch (yyn) { case 4: -/* Line 1787 of yacc.c */ -#line 194 "glcpp/glcpp-parse.y" +#line 194 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n"); } +#line 1752 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; case 5: -/* Line 1787 of yacc.c */ -#line 197 "glcpp/glcpp-parse.y" +#line 197 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { + glcpp_parser_resolve_implicit_version(parser); + } +#line 1760 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 6: +#line 199 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + if (parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) { _glcpp_parser_expand_and_lex_from (parser, - LINE_EXPANDED, (yyvsp[(2) - (3)].token_list)); + LINE_EXPANDED, (yyvsp[-1].token_list)); } } +#line 1774 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 6: -/* Line 1787 of yacc.c */ -#line 205 "glcpp/glcpp-parse.y" + case 7: +#line 208 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list)); + _glcpp_parser_print_expanded_token_list (parser, (yyvsp[0].token_list)); ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n"); - ralloc_free ((yyvsp[(1) - (1)].token_list)); + ralloc_free ((yyvsp[0].token_list)); } +#line 1784 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 9: -/* Line 1787 of yacc.c */ -#line 215 "glcpp/glcpp-parse.y" + case 10: +#line 218 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival)); + _glcpp_parser_skip_stack_push_if (parser, & (yylsp[-2]), (yyvsp[-1].ival)); } +#line 1792 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 10: -/* Line 1787 of yacc.c */ -#line 218 "glcpp/glcpp-parse.y" + case 11: +#line 221 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival)); + _glcpp_parser_skip_stack_change_if (parser, & (yylsp[-2]), "elif", (yyvsp[-1].ival)); } +#line 1800 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 11: -/* Line 1787 of yacc.c */ -#line 221 "glcpp/glcpp-parse.y" + case 12: +#line 224 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { parser->has_new_line_number = 1; - parser->new_line_number = (yyvsp[(2) - (3)].ival); + parser->new_line_number = (yyvsp[-1].ival); ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "#line %" PRIiMAX "\n", - (yyvsp[(2) - (3)].ival)); + (yyvsp[-1].ival)); } +#line 1813 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 12: -/* Line 1787 of yacc.c */ -#line 229 "glcpp/glcpp-parse.y" + case 13: +#line 232 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { parser->has_new_line_number = 1; - parser->new_line_number = (yyvsp[(2) - (4)].ival); + parser->new_line_number = (yyvsp[-2].ival); parser->has_new_source_number = 1; - parser->new_source_number = (yyvsp[(3) - (4)].ival); + parser->new_source_number = (yyvsp[-1].ival); ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "#line %" PRIiMAX " %" PRIiMAX "\n", - (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].ival)); + (yyvsp[-2].ival), (yyvsp[-1].ival)); } +#line 1828 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 13: -/* Line 1787 of yacc.c */ -#line 242 "glcpp/glcpp-parse.y" + case 14: +#line 245 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list)); + _define_object_macro (parser, & (yylsp[-2]), (yyvsp[-2].str), (yyvsp[-1].token_list)); } +#line 1836 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 14: -/* Line 1787 of yacc.c */ -#line 245 "glcpp/glcpp-parse.y" + case 15: +#line 248 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list)); + _define_function_macro (parser, & (yylsp[-4]), (yyvsp[-4].str), NULL, (yyvsp[-1].token_list)); } +#line 1844 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 15: -/* Line 1787 of yacc.c */ -#line 248 "glcpp/glcpp-parse.y" + case 16: +#line 251 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list)); + _define_function_macro (parser, & (yylsp[-5]), (yyvsp[-5].str), (yyvsp[-3].string_list), (yyvsp[-1].token_list)); } +#line 1852 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 16: -/* Line 1787 of yacc.c */ -#line 251 "glcpp/glcpp-parse.y" + case 17: +#line 257 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str)); + glcpp_parser_resolve_implicit_version(parser); + } +#line 1860 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 19: +#line 260 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + glcpp_parser_resolve_implicit_version(parser); + } +#line 1868 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 20: +#line 262 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + macro_t *macro = hash_table_find (parser->defines, (yyvsp[-1].str)); if (macro) { - hash_table_remove (parser->defines, (yyvsp[(2) - (3)].str)); + hash_table_remove (parser->defines, (yyvsp[-1].str)); ralloc_free (macro); } - ralloc_free ((yyvsp[(2) - (3)].str)); + ralloc_free ((yyvsp[-1].str)); } +#line 1881 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 17: -/* Line 1787 of yacc.c */ -#line 259 "glcpp/glcpp-parse.y" + case 21: +#line 270 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + glcpp_parser_resolve_implicit_version(parser); + } +#line 1889 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 22: +#line 272 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { /* Be careful to only evaluate the 'if' expression if * we are not skipping. When we are skipping, we @@ -2057,54 +1902,70 @@ yyreduce: parser->skip_stack->type == SKIP_NO_SKIP) { _glcpp_parser_expand_and_lex_from (parser, - IF_EXPANDED, (yyvsp[(2) - (3)].token_list)); + IF_EXPANDED, (yyvsp[-1].token_list)); } else { - _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), 0); + _glcpp_parser_skip_stack_push_if (parser, & (yylsp[-3]), 0); parser->skip_stack->type = SKIP_TO_ENDIF; } } +#line 1914 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 18: -/* Line 1787 of yacc.c */ -#line 279 "glcpp/glcpp-parse.y" + case 23: +#line 292 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { /* #if without an expression is only an error if we * are not skipping */ if (parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) { - glcpp_error(& (yylsp[(1) - (2)]), parser, "#if with no expression"); + glcpp_error(& (yylsp[-1]), parser, "#if with no expression"); } - _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (2)]), 0); + _glcpp_parser_skip_stack_push_if (parser, & (yylsp[-1]), 0); } +#line 1929 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 19: -/* Line 1787 of yacc.c */ -#line 289 "glcpp/glcpp-parse.y" + case 24: +#line 302 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); - ralloc_free ((yyvsp[(2) - (4)].str)); - _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro != NULL); + glcpp_parser_resolve_implicit_version(parser); } +#line 1937 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 20: -/* Line 1787 of yacc.c */ -#line 294 "glcpp/glcpp-parse.y" + case 25: +#line 304 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); - ralloc_free ((yyvsp[(2) - (4)].str)); - _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro == NULL); + macro_t *macro = hash_table_find (parser->defines, (yyvsp[-2].str)); + ralloc_free ((yyvsp[-2].str)); + _glcpp_parser_skip_stack_push_if (parser, & (yylsp[-4]), macro != NULL); } +#line 1947 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 21: -/* Line 1787 of yacc.c */ -#line 299 "glcpp/glcpp-parse.y" + case 26: +#line 309 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + glcpp_parser_resolve_implicit_version(parser); + } +#line 1955 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 27: +#line 311 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + macro_t *macro = hash_table_find (parser->defines, (yyvsp[-2].str)); + ralloc_free ((yyvsp[-2].str)); + _glcpp_parser_skip_stack_push_if (parser, & (yylsp[-3]), macro == NULL); + } +#line 1965 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 28: +#line 316 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { /* Be careful to only evaluate the 'elif' expression * if we are not skipping. When we are skipping, we @@ -2117,631 +1978,665 @@ yyreduce: parser->skip_stack->type == SKIP_TO_ELSE) { _glcpp_parser_expand_and_lex_from (parser, - ELIF_EXPANDED, (yyvsp[(2) - (3)].token_list)); + ELIF_EXPANDED, (yyvsp[-1].token_list)); + } + else if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& (yylsp[-2]), parser, "#elif after #else"); } else { - _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), + _glcpp_parser_skip_stack_change_if (parser, & (yylsp[-2]), "elif", 0); } } +#line 1995 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 22: -/* Line 1787 of yacc.c */ -#line 319 "glcpp/glcpp-parse.y" + case 29: +#line 341 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { /* #elif without an expression is an error unless we * are skipping. */ if (parser->skip_stack && parser->skip_stack->type == SKIP_TO_ELSE) { - glcpp_error(& (yylsp[(1) - (2)]), parser, "#elif with no expression"); + glcpp_error(& (yylsp[-1]), parser, "#elif with no expression"); + } + else if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& (yylsp[-1]), parser, "#elif after #else"); } else { - _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), + _glcpp_parser_skip_stack_change_if (parser, & (yylsp[-1]), "elif", 0); - glcpp_warning(& (yylsp[(1) - (2)]), parser, "ignoring illegal #elif without expression"); + glcpp_warning(& (yylsp[-1]), parser, "ignoring illegal #elif without expression"); } } +#line 2020 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 23: -/* Line 1787 of yacc.c */ -#line 334 "glcpp/glcpp-parse.y" + case 30: +#line 361 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ + { + if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& (yylsp[0]), parser, "multiple #else"); + } + else + { + _glcpp_parser_skip_stack_change_if (parser, & (yylsp[0]), "else", 1); + if (parser->skip_stack) + parser->skip_stack->has_else = true; + } + } +#line 2038 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ + break; + + case 32: +#line 374 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (1)]), "else", 1); + _glcpp_parser_skip_stack_pop (parser, & (yylsp[0])); } +#line 2046 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 25: -/* Line 1787 of yacc.c */ -#line 337 "glcpp/glcpp-parse.y" + case 34: +#line 377 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (1)])); + if (parser->version_resolved) { + glcpp_error(& (yylsp[-2]), parser, "#version must appear on the first line"); + } + _glcpp_parser_handle_version_declaration(parser, (yyvsp[-1].ival), NULL, true); } +#line 2057 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 27: -/* Line 1787 of yacc.c */ -#line 340 "glcpp/glcpp-parse.y" + case 35: +#line 383 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_handle_version_declaration(parser, (yyvsp[(2) - (3)].ival), NULL); + if (parser->version_resolved) { + glcpp_error(& (yylsp[-3]), parser, "#version must appear on the first line"); + } + _glcpp_parser_handle_version_declaration(parser, (yyvsp[-2].ival), (yyvsp[-1].str), true); } +#line 2068 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 28: -/* Line 1787 of yacc.c */ -#line 343 "glcpp/glcpp-parse.y" + case 36: +#line 389 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - _glcpp_parser_handle_version_declaration(parser, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].str)); + glcpp_parser_resolve_implicit_version(parser); } +#line 2076 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 30: -/* Line 1787 of yacc.c */ -#line 350 "glcpp/glcpp-parse.y" + case 37: +#line 395 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) { - (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16); - } else if ((yyvsp[(1) - (1)].str)[0] == '0') { - (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str), NULL, 8); + if (strlen ((yyvsp[0].str)) >= 3 && strncmp ((yyvsp[0].str), "0x", 2) == 0) { + (yyval.ival) = strtoll ((yyvsp[0].str) + 2, NULL, 16); + } else if ((yyvsp[0].str)[0] == '0') { + (yyval.ival) = strtoll ((yyvsp[0].str), NULL, 8); } else { - (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str), NULL, 10); + (yyval.ival) = strtoll ((yyvsp[0].str), NULL, 10); } } +#line 2090 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 31: -/* Line 1787 of yacc.c */ -#line 359 "glcpp/glcpp-parse.y" + case 38: +#line 404 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (1)].ival); + (yyval.ival) = (yyvsp[0].ival); } +#line 2098 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 33: -/* Line 1787 of yacc.c */ -#line 365 "glcpp/glcpp-parse.y" + case 40: +#line 410 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { if (parser->is_gles) - glcpp_error(& (yylsp[(1) - (1)]), parser, "undefined macro %s in expression (illegal in GLES)", (yyvsp[(1) - (1)].str)); + glcpp_error(& (yylsp[0]), parser, "undefined macro %s in expression (illegal in GLES)", (yyvsp[0].str)); (yyval.ival) = 0; } +#line 2108 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 34: -/* Line 1787 of yacc.c */ -#line 370 "glcpp/glcpp-parse.y" + case 41: +#line 415 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) || (yyvsp[0].ival); } +#line 2116 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 35: -/* Line 1787 of yacc.c */ -#line 373 "glcpp/glcpp-parse.y" + case 42: +#line 418 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) && (yyvsp[0].ival); } +#line 2124 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 36: -/* Line 1787 of yacc.c */ -#line 376 "glcpp/glcpp-parse.y" + case 43: +#line 421 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } +#line 2132 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 37: -/* Line 1787 of yacc.c */ -#line 379 "glcpp/glcpp-parse.y" + case 44: +#line 424 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) ^ (yyvsp[0].ival); } +#line 2140 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 38: -/* Line 1787 of yacc.c */ -#line 382 "glcpp/glcpp-parse.y" + case 45: +#line 427 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) & (yyvsp[0].ival); } +#line 2148 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 39: -/* Line 1787 of yacc.c */ -#line 385 "glcpp/glcpp-parse.y" + case 46: +#line 430 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) != (yyvsp[0].ival); } +#line 2156 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 40: -/* Line 1787 of yacc.c */ -#line 388 "glcpp/glcpp-parse.y" + case 47: +#line 433 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) == (yyvsp[0].ival); } +#line 2164 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 41: -/* Line 1787 of yacc.c */ -#line 391 "glcpp/glcpp-parse.y" + case 48: +#line 436 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) >= (yyvsp[0].ival); } +#line 2172 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 42: -/* Line 1787 of yacc.c */ -#line 394 "glcpp/glcpp-parse.y" + case 49: +#line 439 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) <= (yyvsp[0].ival); } +#line 2180 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 43: -/* Line 1787 of yacc.c */ -#line 397 "glcpp/glcpp-parse.y" + case 50: +#line 442 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) > (yyvsp[0].ival); } +#line 2188 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 44: -/* Line 1787 of yacc.c */ -#line 400 "glcpp/glcpp-parse.y" + case 51: +#line 445 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) < (yyvsp[0].ival); } +#line 2196 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 45: -/* Line 1787 of yacc.c */ -#line 403 "glcpp/glcpp-parse.y" + case 52: +#line 448 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) >> (yyvsp[0].ival); } +#line 2204 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 46: -/* Line 1787 of yacc.c */ -#line 406 "glcpp/glcpp-parse.y" + case 53: +#line 451 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) << (yyvsp[0].ival); } +#line 2212 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 47: -/* Line 1787 of yacc.c */ -#line 409 "glcpp/glcpp-parse.y" + case 54: +#line 454 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) - (yyvsp[0].ival); } +#line 2220 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 48: -/* Line 1787 of yacc.c */ -#line 412 "glcpp/glcpp-parse.y" + case 55: +#line 457 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) + (yyvsp[0].ival); } +#line 2228 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 49: -/* Line 1787 of yacc.c */ -#line 415 "glcpp/glcpp-parse.y" + case 56: +#line 460 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(3) - (3)].ival) == 0) { - yyerror (& (yylsp[(1) - (3)]), parser, + if ((yyvsp[0].ival) == 0) { + yyerror (& (yylsp[-2]), parser, "zero modulus in preprocessor directive"); } else { - (yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) % (yyvsp[0].ival); } } +#line 2241 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 50: -/* Line 1787 of yacc.c */ -#line 423 "glcpp/glcpp-parse.y" + case 57: +#line 468 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(3) - (3)].ival) == 0) { - yyerror (& (yylsp[(1) - (3)]), parser, + if ((yyvsp[0].ival) == 0) { + yyerror (& (yylsp[-2]), parser, "division by 0 in preprocessor directive"); } else { - (yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) / (yyvsp[0].ival); } } +#line 2254 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 51: -/* Line 1787 of yacc.c */ -#line 431 "glcpp/glcpp-parse.y" + case 58: +#line 476 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival); + (yyval.ival) = (yyvsp[-2].ival) * (yyvsp[0].ival); } +#line 2262 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 52: -/* Line 1787 of yacc.c */ -#line 434 "glcpp/glcpp-parse.y" + case 59: +#line 479 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = ! (yyvsp[(2) - (2)].ival); + (yyval.ival) = ! (yyvsp[0].ival); } +#line 2270 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 53: -/* Line 1787 of yacc.c */ -#line 437 "glcpp/glcpp-parse.y" + case 60: +#line 482 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = ~ (yyvsp[(2) - (2)].ival); + (yyval.ival) = ~ (yyvsp[0].ival); } +#line 2278 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 54: -/* Line 1787 of yacc.c */ -#line 440 "glcpp/glcpp-parse.y" + case 61: +#line 485 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = - (yyvsp[(2) - (2)].ival); + (yyval.ival) = - (yyvsp[0].ival); } +#line 2286 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 55: -/* Line 1787 of yacc.c */ -#line 443 "glcpp/glcpp-parse.y" + case 62: +#line 488 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = + (yyvsp[(2) - (2)].ival); + (yyval.ival) = + (yyvsp[0].ival); } +#line 2294 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 56: -/* Line 1787 of yacc.c */ -#line 446 "glcpp/glcpp-parse.y" + case 63: +#line 491 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.ival) = (yyvsp[(2) - (3)].ival); + (yyval.ival) = (yyvsp[-1].ival); } +#line 2302 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 57: -/* Line 1787 of yacc.c */ -#line 452 "glcpp/glcpp-parse.y" + case 64: +#line 497 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.string_list) = _string_list_create (parser); - _string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str)); - ralloc_steal ((yyval.string_list), (yyvsp[(1) - (1)].str)); + _string_list_append_item ((yyval.string_list), (yyvsp[0].str)); + ralloc_steal ((yyval.string_list), (yyvsp[0].str)); } +#line 2312 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 58: -/* Line 1787 of yacc.c */ -#line 457 "glcpp/glcpp-parse.y" + case 65: +#line 502 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.string_list) = (yyvsp[(1) - (3)].string_list); - _string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str)); - ralloc_steal ((yyval.string_list), (yyvsp[(3) - (3)].str)); + (yyval.string_list) = (yyvsp[-2].string_list); + _string_list_append_item ((yyval.string_list), (yyvsp[0].str)); + ralloc_steal ((yyval.string_list), (yyvsp[0].str)); } +#line 2322 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 59: -/* Line 1787 of yacc.c */ -#line 465 "glcpp/glcpp-parse.y" + case 66: +#line 510 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.token_list) = NULL; } +#line 2328 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 61: -/* Line 1787 of yacc.c */ -#line 470 "glcpp/glcpp-parse.y" + case 68: +#line 515 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #"); + yyerror (& (yylsp[-1]), parser, "Invalid tokens after #"); } +#line 2336 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 62: -/* Line 1787 of yacc.c */ -#line 476 "glcpp/glcpp-parse.y" + case 69: +#line 521 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.token_list) = NULL; } +#line 2342 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 65: -/* Line 1787 of yacc.c */ -#line 482 "glcpp/glcpp-parse.y" + case 72: +#line 527 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive"); + glcpp_warning(&(yylsp[0]), parser, "extra tokens at end of directive"); } +#line 2350 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 66: -/* Line 1787 of yacc.c */ -#line 489 "glcpp/glcpp-parse.y" + case 73: +#line 534 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0; + int v = hash_table_find (parser->defines, (yyvsp[0].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); } +#line 2359 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 67: -/* Line 1787 of yacc.c */ -#line 493 "glcpp/glcpp-parse.y" + case 74: +#line 538 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0; + int v = hash_table_find (parser->defines, (yyvsp[-1].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); } +#line 2368 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 69: -/* Line 1787 of yacc.c */ -#line 502 "glcpp/glcpp-parse.y" + case 76: +#line 547 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.token_list) = _token_list_create (parser); - _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token)); + _token_list_append ((yyval.token_list), (yyvsp[0].token)); } +#line 2377 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 70: -/* Line 1787 of yacc.c */ -#line 506 "glcpp/glcpp-parse.y" + case 77: +#line 551 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token_list) = (yyvsp[(1) - (2)].token_list); - _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); + (yyval.token_list) = (yyvsp[-1].token_list); + _token_list_append ((yyval.token_list), (yyvsp[0].token)); } +#line 2386 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 71: -/* Line 1787 of yacc.c */ -#line 513 "glcpp/glcpp-parse.y" + case 78: +#line 558 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { parser->space_tokens = 1; (yyval.token_list) = _token_list_create (parser); - _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token)); + _token_list_append ((yyval.token_list), (yyvsp[0].token)); } +#line 2396 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 72: -/* Line 1787 of yacc.c */ -#line 518 "glcpp/glcpp-parse.y" + case 79: +#line 563 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token_list) = (yyvsp[(1) - (2)].token_list); - _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); + (yyval.token_list) = (yyvsp[-1].token_list); + _token_list_append ((yyval.token_list), (yyvsp[0].token)); } +#line 2405 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 73: -/* Line 1787 of yacc.c */ -#line 525 "glcpp/glcpp-parse.y" + case 80: +#line 570 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str)); + (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[0].str)); (yyval.token)->location = yylloc; } +#line 2414 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 74: -/* Line 1787 of yacc.c */ -#line 529 "glcpp/glcpp-parse.y" + case 81: +#line 574 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str)); + (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[0].str)); (yyval.token)->location = yylloc; } +#line 2423 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 75: -/* Line 1787 of yacc.c */ -#line 533 "glcpp/glcpp-parse.y" + case 82: +#line 578 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival)); + (yyval.token) = _token_create_ival (parser, (yyvsp[0].ival), (yyvsp[0].ival)); (yyval.token)->location = yylloc; } +#line 2432 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 76: -/* Line 1787 of yacc.c */ -#line 537 "glcpp/glcpp-parse.y" + case 83: +#line 582 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { - (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str)); + (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[0].str)); (yyval.token)->location = yylloc; } +#line 2441 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 77: -/* Line 1787 of yacc.c */ -#line 541 "glcpp/glcpp-parse.y" + case 84: +#line 586 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.token) = _token_create_ival (parser, SPACE, SPACE); (yyval.token)->location = yylloc; } +#line 2450 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 78: -/* Line 1787 of yacc.c */ -#line 548 "glcpp/glcpp-parse.y" + case 85: +#line 593 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '['; } +#line 2456 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 79: -/* Line 1787 of yacc.c */ -#line 549 "glcpp/glcpp-parse.y" + case 86: +#line 594 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = ']'; } +#line 2462 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 80: -/* Line 1787 of yacc.c */ -#line 550 "glcpp/glcpp-parse.y" + case 87: +#line 595 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '('; } +#line 2468 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 81: -/* Line 1787 of yacc.c */ -#line 551 "glcpp/glcpp-parse.y" + case 88: +#line 596 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = ')'; } +#line 2474 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 82: -/* Line 1787 of yacc.c */ -#line 552 "glcpp/glcpp-parse.y" + case 89: +#line 597 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '{'; } +#line 2480 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 83: -/* Line 1787 of yacc.c */ -#line 553 "glcpp/glcpp-parse.y" + case 90: +#line 598 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '}'; } +#line 2486 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 84: -/* Line 1787 of yacc.c */ -#line 554 "glcpp/glcpp-parse.y" + case 91: +#line 599 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '.'; } +#line 2492 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 85: -/* Line 1787 of yacc.c */ -#line 555 "glcpp/glcpp-parse.y" + case 92: +#line 600 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '&'; } +#line 2498 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 86: -/* Line 1787 of yacc.c */ -#line 556 "glcpp/glcpp-parse.y" + case 93: +#line 601 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '*'; } +#line 2504 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 87: -/* Line 1787 of yacc.c */ -#line 557 "glcpp/glcpp-parse.y" + case 94: +#line 602 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '+'; } +#line 2510 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 88: -/* Line 1787 of yacc.c */ -#line 558 "glcpp/glcpp-parse.y" + case 95: +#line 603 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '-'; } +#line 2516 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 89: -/* Line 1787 of yacc.c */ -#line 559 "glcpp/glcpp-parse.y" + case 96: +#line 604 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '~'; } +#line 2522 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 90: -/* Line 1787 of yacc.c */ -#line 560 "glcpp/glcpp-parse.y" + case 97: +#line 605 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '!'; } +#line 2528 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 91: -/* Line 1787 of yacc.c */ -#line 561 "glcpp/glcpp-parse.y" + case 98: +#line 606 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '/'; } +#line 2534 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 92: -/* Line 1787 of yacc.c */ -#line 562 "glcpp/glcpp-parse.y" + case 99: +#line 607 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '%'; } +#line 2540 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 93: -/* Line 1787 of yacc.c */ -#line 563 "glcpp/glcpp-parse.y" + case 100: +#line 608 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = LEFT_SHIFT; } +#line 2546 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 94: -/* Line 1787 of yacc.c */ -#line 564 "glcpp/glcpp-parse.y" + case 101: +#line 609 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = RIGHT_SHIFT; } +#line 2552 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 95: -/* Line 1787 of yacc.c */ -#line 565 "glcpp/glcpp-parse.y" + case 102: +#line 610 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '<'; } +#line 2558 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 96: -/* Line 1787 of yacc.c */ -#line 566 "glcpp/glcpp-parse.y" + case 103: +#line 611 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '>'; } +#line 2564 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 97: -/* Line 1787 of yacc.c */ -#line 567 "glcpp/glcpp-parse.y" + case 104: +#line 612 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = LESS_OR_EQUAL; } +#line 2570 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 98: -/* Line 1787 of yacc.c */ -#line 568 "glcpp/glcpp-parse.y" + case 105: +#line 613 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = GREATER_OR_EQUAL; } +#line 2576 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 99: -/* Line 1787 of yacc.c */ -#line 569 "glcpp/glcpp-parse.y" + case 106: +#line 614 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = EQUAL; } +#line 2582 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 100: -/* Line 1787 of yacc.c */ -#line 570 "glcpp/glcpp-parse.y" + case 107: +#line 615 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = NOT_EQUAL; } +#line 2588 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 101: -/* Line 1787 of yacc.c */ -#line 571 "glcpp/glcpp-parse.y" + case 108: +#line 616 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '^'; } +#line 2594 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 102: -/* Line 1787 of yacc.c */ -#line 572 "glcpp/glcpp-parse.y" + case 109: +#line 617 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '|'; } +#line 2600 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 103: -/* Line 1787 of yacc.c */ -#line 573 "glcpp/glcpp-parse.y" + case 110: +#line 618 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = AND; } +#line 2606 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 104: -/* Line 1787 of yacc.c */ -#line 574 "glcpp/glcpp-parse.y" + case 111: +#line 619 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = OR; } +#line 2612 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 105: -/* Line 1787 of yacc.c */ -#line 575 "glcpp/glcpp-parse.y" + case 112: +#line 620 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = ';'; } +#line 2618 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 106: -/* Line 1787 of yacc.c */ -#line 576 "glcpp/glcpp-parse.y" + case 113: +#line 621 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = ','; } +#line 2624 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 107: -/* Line 1787 of yacc.c */ -#line 577 "glcpp/glcpp-parse.y" + case 114: +#line 622 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = '='; } +#line 2630 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; - case 108: -/* Line 1787 of yacc.c */ -#line 578 "glcpp/glcpp-parse.y" + case 115: +#line 623 "glcpp/glcpp-parse.y" /* yacc.c:1646 */ { (yyval.ival) = PASTE; } +#line 2636 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ break; -/* Line 1787 of yacc.c */ -#line 2745 "glcpp/glcpp-parse.c" +#line 2640 "glcpp/glcpp-parse.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2764,7 +2659,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -2779,9 +2674,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -2832,20 +2727,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, parser); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, parser); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -2865,7 +2760,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2878,29 +2773,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, parser); + yystos[yystate], yyvsp, yylsp, parser); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -2956,14 +2851,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, parser); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, parser); + yystos[*yyssp], yyvsp, yylsp, parser); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2974,13 +2869,9 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -/* Line 2050 of yacc.c */ -#line 581 "glcpp/glcpp-parse.y" +#line 626 "glcpp/glcpp-parse.y" /* yacc.c:1906 */ string_list_t * @@ -3551,10 +3442,9 @@ static void add_builtin_define(glcpp_parser_t *parser, } glcpp_parser_t * -glcpp_parser_create (const struct gl_extensions *extensions, int api) +glcpp_parser_create (const struct gl_extensions *extensions, gl_api api) { glcpp_parser_t *parser; - int language_version; parser = ralloc (NULL, glcpp_parser_t); @@ -3567,6 +3457,7 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) parser->newline_as_space = 0; parser->in_control_line = 0; parser->paren_count = 0; + parser->commented_newlines = 0; parser->skip_stack = NULL; @@ -3579,81 +3470,15 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) parser->info_log_length = 0; parser->error = 0; + parser->extensions = extensions; + parser->api = api; + parser->version_resolved = false; + parser->has_new_line_number = 0; parser->new_line_number = 1; parser->has_new_source_number = 0; parser->new_source_number = 0; - parser->is_gles = false; - - /* Add pre-defined macros. */ - if (api == API_OPENGLES2) { - parser->is_gles = true; - add_builtin_define(parser, "GL_ES", 1); - - if (extensions != NULL) { - if (extensions->OES_EGL_image_external) - add_builtin_define(parser, "GL_OES_EGL_image_external", 1); - } - } else { - add_builtin_define(parser, "GL_ARB_draw_buffers", 1); - add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); - - if (extensions != NULL) { - if (extensions->EXT_texture_array) { - add_builtin_define(parser, "GL_EXT_texture_array", 1); - } - - if (extensions->ARB_fragment_coord_conventions) - add_builtin_define(parser, "GL_ARB_fragment_coord_conventions", - 1); - - if (extensions->ARB_explicit_attrib_location) - add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); - - if (extensions->ARB_shader_texture_lod) - add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); - - if (extensions->ARB_draw_instanced) - add_builtin_define(parser, "GL_ARB_draw_instanced", 1); - - if (extensions->ARB_conservative_depth) { - add_builtin_define(parser, "GL_AMD_conservative_depth", 1); - add_builtin_define(parser, "GL_ARB_conservative_depth", 1); - } - - if (extensions->ARB_shader_bit_encoding) - add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1); - - if (extensions->ARB_uniform_buffer_object) - add_builtin_define(parser, "GL_ARB_uniform_buffer_object", 1); - - if (extensions->ARB_texture_cube_map_array) - add_builtin_define(parser, "GL_ARB_texture_cube_map_array", 1); - - if (extensions->ARB_shading_language_packing) - add_builtin_define(parser, "GL_ARB_shading_language_packing", 1); - - if (extensions->ARB_texture_multisample) - add_builtin_define(parser, "GL_ARB_texture_multisample", 1); - - if (extensions->ARB_texture_query_lod) - add_builtin_define(parser, "GL_ARB_texture_query_lod", 1); - - if (extensions->ARB_gpu_shader5) - add_builtin_define(parser, "GL_ARB_gpu_shader5", 1); - - if (extensions->AMD_vertex_shader_layer) - add_builtin_define(parser, "GL_AMD_vertex_shader_layer", 1); - - if (extensions->ARB_shading_language_420pack) - add_builtin_define(parser, "GL_ARB_shading_language_420pack", 1); - } - } - - language_version = 110; - add_builtin_define(parser, "__VERSION__", language_version); - return parser; } @@ -4194,11 +4019,27 @@ static void _check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc, const char *identifier) { - /* According to the GLSL specification, macro names starting with "__" - * or "GL_" are reserved for future use. So, don't allow them. + /* Section 3.3 (Preprocessor) of the GLSL 1.30 spec (and later) and + * the GLSL ES spec (all versions) say: + * + * "All macro names containing two consecutive underscores ( __ ) + * are reserved for future use as predefined macro names. All + * macro names prefixed with "GL_" ("GL" followed by a single + * underscore) are also reserved." + * + * The intention is that names containing __ are reserved for internal + * use by the implementation, and names prefixed with GL_ are reserved + * for use by Khronos. Since every extension adds a name prefixed + * with GL_ (i.e., the name of the extension), that should be an + * error. Names simply containing __ are dangerous to use, but should + * be allowed. + * + * A future version of the GLSL specification will clarify this. */ if (strstr(identifier, "__")) { - glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n"); + glcpp_warning(loc, parser, + "Macro names containing \"__\" are reserved " + "for use by the implementation.\n"); } if (strncmp(identifier, "GL_", 3) == 0) { glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n"); @@ -4412,6 +4253,7 @@ _glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc, node->type = SKIP_TO_ENDIF; } + node->has_else = false; node->next = parser->skip_stack; parser->skip_stack = node; } @@ -4450,24 +4292,116 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc) static void _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version, - const char *es_identifier) + const char *es_identifier, + bool explicitly_set) { - macro_t *macro = hash_table_find (parser->defines, "__VERSION__"); - if (macro) { - hash_table_remove (parser->defines, "__VERSION__"); - ralloc_free (macro); - } + const struct gl_extensions *extensions = parser->extensions; + + if (parser->version_resolved) + return; + + parser->version_resolved = true; + add_builtin_define (parser, "__VERSION__", version); - /* If we didn't have a GLES context to begin with, (indicated - * by parser->api), then the version declaration here might - * indicate GLES. */ - if (! parser->is_gles && - (version == 100 || - (es_identifier && (strcmp(es_identifier, "es") == 0)))) - { - parser->is_gles = true; - add_builtin_define (parser, "GL_ES", 1); + parser->is_gles = (version == 100) || + (es_identifier && + (strcmp(es_identifier, "es") == 0)); + + /* Add pre-defined macros. */ + if (parser->is_gles) { + add_builtin_define(parser, "GL_ES", 1); + add_builtin_define(parser, "GL_EXT_separate_shader_objects", 1); + + if (extensions != NULL) { + if (extensions->OES_EGL_image_external) + add_builtin_define(parser, "GL_OES_EGL_image_external", 1); + } + } else { + add_builtin_define(parser, "GL_ARB_draw_buffers", 1); + add_builtin_define(parser, "GL_ARB_separate_shader_objects", 1); + add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); + add_builtin_define(parser, "GL_AMD_shader_trinary_minmax", 1); + + + if (extensions != NULL) { + if (extensions->EXT_texture_array) + add_builtin_define(parser, "GL_EXT_texture_array", 1); + + if (extensions->ARB_arrays_of_arrays) + add_builtin_define(parser, "GL_ARB_arrays_of_arrays", 1); + + if (extensions->ARB_fragment_coord_conventions) + add_builtin_define(parser, "GL_ARB_fragment_coord_conventions", + 1); + + if (extensions->ARB_explicit_attrib_location) + add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); + + if (extensions->ARB_shader_texture_lod) + add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); + + if (extensions->ARB_draw_instanced) + add_builtin_define(parser, "GL_ARB_draw_instanced", 1); + + if (extensions->ARB_conservative_depth) { + add_builtin_define(parser, "GL_AMD_conservative_depth", 1); + add_builtin_define(parser, "GL_ARB_conservative_depth", 1); + } + + if (extensions->ARB_shader_bit_encoding) + add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1); + + if (extensions->ARB_uniform_buffer_object) + add_builtin_define(parser, "GL_ARB_uniform_buffer_object", 1); + + if (extensions->ARB_texture_cube_map_array) + add_builtin_define(parser, "GL_ARB_texture_cube_map_array", 1); + + if (extensions->ARB_shading_language_packing) + add_builtin_define(parser, "GL_ARB_shading_language_packing", 1); + + if (extensions->ARB_texture_multisample) + add_builtin_define(parser, "GL_ARB_texture_multisample", 1); + + if (extensions->ARB_texture_query_levels) + add_builtin_define(parser, "GL_ARB_texture_query_levels", 1); + + if (extensions->ARB_texture_query_lod) + add_builtin_define(parser, "GL_ARB_texture_query_lod", 1); + + if (extensions->ARB_gpu_shader5) + add_builtin_define(parser, "GL_ARB_gpu_shader5", 1); + + if (extensions->AMD_vertex_shader_layer) + add_builtin_define(parser, "GL_AMD_vertex_shader_layer", 1); + + if (extensions->ARB_shading_language_420pack) + add_builtin_define(parser, "GL_ARB_shading_language_420pack", 1); + + if (extensions->ARB_sample_shading) + add_builtin_define(parser, "GL_ARB_sample_shading", 1); + + if (extensions->ARB_texture_gather) + add_builtin_define(parser, "GL_ARB_texture_gather", 1); + + if (extensions->ARB_shader_atomic_counters) + add_builtin_define(parser, "GL_ARB_shader_atomic_counters", 1); + + if (extensions->ARB_viewport_array) + add_builtin_define(parser, "GL_ARB_viewport_array", 1); + + if (extensions->ARB_compute_shader) + add_builtin_define(parser, "GL_ARB_compute_shader", 1); + + if (extensions->ARB_shader_image_load_store) + add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1); + } + } + + if (extensions != NULL) { + if (extensions->EXT_shader_integer_mix) + add_builtin_define(parser, "GL_EXT_shader_integer_mix", 1); } if (version >= 150) @@ -4481,8 +4415,27 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (version >= 130 || parser->is_gles) add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); - ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, - "#version %" PRIiMAX "%s%s", version, - es_identifier ? " " : "", - es_identifier ? es_identifier : ""); + if (explicitly_set) { + ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, + "#version %" PRIiMAX "%s%s", version, + es_identifier ? " " : "", + es_identifier ? es_identifier : ""); + } +} + +/* GLSL version if no version is explicitly specified. */ +#define IMPLICIT_GLSL_VERSION 110 + +/* GLSL ES version if no version is explicitly specified. */ +#define IMPLICIT_GLSL_ES_VERSION 100 + +void +glcpp_parser_resolve_implicit_version(glcpp_parser_t *parser) +{ + int language_version = parser->api == API_OPENGLES2 ? + IMPLICIT_GLSL_ES_VERSION : + IMPLICIT_GLSL_VERSION; + + _glcpp_parser_handle_version_declaration(parser, language_version, + NULL, false); } diff --git a/dist/Mesa/src/glsl/glcpp/glcpp-parse.h b/dist/Mesa/src/glsl/glcpp/glcpp-parse.h index a20ebf5a1..97e48602a 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp-parse.h +++ b/dist/Mesa/src/glsl/glcpp/glcpp-parse.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED # define YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,83 +40,67 @@ extern int glcpp_parser_debug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - COMMA_FINAL = 258, - DEFINED = 259, - ELIF_EXPANDED = 260, - HASH = 261, - HASH_DEFINE = 262, - FUNC_IDENTIFIER = 263, - OBJ_IDENTIFIER = 264, - HASH_ELIF = 265, - HASH_ELSE = 266, - HASH_ENDIF = 267, - HASH_IF = 268, - HASH_IFDEF = 269, - HASH_IFNDEF = 270, - HASH_LINE = 271, - HASH_UNDEF = 272, - HASH_VERSION = 273, - IDENTIFIER = 274, - IF_EXPANDED = 275, - INTEGER = 276, - INTEGER_STRING = 277, - LINE_EXPANDED = 278, - NEWLINE = 279, - OTHER = 280, - PLACEHOLDER = 281, - SPACE = 282, - PASTE = 283, - OR = 284, - AND = 285, - NOT_EQUAL = 286, - EQUAL = 287, - GREATER_OR_EQUAL = 288, - LESS_OR_EQUAL = 289, - RIGHT_SHIFT = 290, - LEFT_SHIFT = 291, - UNARY = 292 - }; + enum yytokentype + { + COMMA_FINAL = 258, + DEFINED = 259, + ELIF_EXPANDED = 260, + HASH = 261, + HASH_DEFINE = 262, + FUNC_IDENTIFIER = 263, + OBJ_IDENTIFIER = 264, + HASH_ELIF = 265, + HASH_ELSE = 266, + HASH_ENDIF = 267, + HASH_IF = 268, + HASH_IFDEF = 269, + HASH_IFNDEF = 270, + HASH_LINE = 271, + HASH_UNDEF = 272, + HASH_VERSION = 273, + IDENTIFIER = 274, + IF_EXPANDED = 275, + INTEGER = 276, + INTEGER_STRING = 277, + LINE_EXPANDED = 278, + NEWLINE = 279, + OTHER = 280, + PLACEHOLDER = 281, + SPACE = 282, + PASTE = 283, + OR = 284, + AND = 285, + EQUAL = 286, + NOT_EQUAL = 287, + LESS_OR_EQUAL = 288, + GREATER_OR_EQUAL = 289, + LEFT_SHIFT = 290, + RIGHT_SHIFT = 291, + UNARY = 292 + }; #endif +/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif - +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int glcpp_parser_parse (void *YYPARSE_PARAM); -#else -int glcpp_parser_parse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus + int glcpp_parser_parse (glcpp_parser_t *parser); -#else -int glcpp_parser_parse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_GLCPP_PARSER_SRC_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED */ diff --git a/dist/Mesa/src/glsl/glcpp/glcpp-parse.y b/dist/Mesa/src/glsl/glcpp/glcpp-parse.y index ff5bdfe5d..98875837c 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp-parse.y +++ b/dist/Mesa/src/glsl/glcpp/glcpp-parse.y @@ -135,7 +135,7 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc); static void _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version, - const char *ident); + const char *ident, bool explicitly_set); static int glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser); @@ -194,12 +194,15 @@ line: control_line { ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n"); } -| HASH_LINE pp_tokens NEWLINE { +| HASH_LINE { + glcpp_parser_resolve_implicit_version(parser); + } pp_tokens NEWLINE { + if (parser->skip_stack == NULL || parser->skip_stack->type == SKIP_NO_SKIP) { _glcpp_parser_expand_and_lex_from (parser, - LINE_EXPANDED, $2); + LINE_EXPANDED, $3); } } | text_line { @@ -238,25 +241,35 @@ expanded_line: } ; -control_line: - HASH_DEFINE OBJ_IDENTIFIER replacement_list NEWLINE { - _define_object_macro (parser, & @2, $2, $3); +define: + OBJ_IDENTIFIER replacement_list NEWLINE { + _define_object_macro (parser, & @1, $1, $2); } -| HASH_DEFINE FUNC_IDENTIFIER '(' ')' replacement_list NEWLINE { - _define_function_macro (parser, & @2, $2, NULL, $5); +| FUNC_IDENTIFIER '(' ')' replacement_list NEWLINE { + _define_function_macro (parser, & @1, $1, NULL, $4); } -| HASH_DEFINE FUNC_IDENTIFIER '(' identifier_list ')' replacement_list NEWLINE { - _define_function_macro (parser, & @2, $2, $4, $6); +| FUNC_IDENTIFIER '(' identifier_list ')' replacement_list NEWLINE { + _define_function_macro (parser, & @1, $1, $3, $5); } -| HASH_UNDEF IDENTIFIER NEWLINE { - macro_t *macro = hash_table_find (parser->defines, $2); +; + +control_line: + HASH_DEFINE { + glcpp_parser_resolve_implicit_version(parser); + } define +| HASH_UNDEF { + glcpp_parser_resolve_implicit_version(parser); + } IDENTIFIER NEWLINE { + macro_t *macro = hash_table_find (parser->defines, $3); if (macro) { - hash_table_remove (parser->defines, $2); + hash_table_remove (parser->defines, $3); ralloc_free (macro); } - ralloc_free ($2); + ralloc_free ($3); } -| HASH_IF conditional_tokens NEWLINE { +| HASH_IF { + glcpp_parser_resolve_implicit_version(parser); + } conditional_tokens NEWLINE { /* Be careful to only evaluate the 'if' expression if * we are not skipping. When we are skipping, we * simply push a new 0-valued 'if' onto the skip @@ -268,7 +281,7 @@ control_line: parser->skip_stack->type == SKIP_NO_SKIP) { _glcpp_parser_expand_and_lex_from (parser, - IF_EXPANDED, $2); + IF_EXPANDED, $3); } else { @@ -286,15 +299,19 @@ control_line: } _glcpp_parser_skip_stack_push_if (parser, & @1, 0); } -| HASH_IFDEF IDENTIFIER junk NEWLINE { - macro_t *macro = hash_table_find (parser->defines, $2); - ralloc_free ($2); +| HASH_IFDEF { + glcpp_parser_resolve_implicit_version(parser); + } IDENTIFIER junk NEWLINE { + macro_t *macro = hash_table_find (parser->defines, $3); + ralloc_free ($3); _glcpp_parser_skip_stack_push_if (parser, & @1, macro != NULL); } -| HASH_IFNDEF IDENTIFIER junk NEWLINE { - macro_t *macro = hash_table_find (parser->defines, $2); - ralloc_free ($2); - _glcpp_parser_skip_stack_push_if (parser, & @1, macro == NULL); +| HASH_IFNDEF { + glcpp_parser_resolve_implicit_version(parser); + } IDENTIFIER junk NEWLINE { + macro_t *macro = hash_table_find (parser->defines, $3); + ralloc_free ($3); + _glcpp_parser_skip_stack_push_if (parser, & @2, macro == NULL); } | HASH_ELIF conditional_tokens NEWLINE { /* Be careful to only evaluate the 'elif' expression @@ -310,6 +327,11 @@ control_line: _glcpp_parser_expand_and_lex_from (parser, ELIF_EXPANDED, $2); } + else if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& @1, parser, "#elif after #else"); + } else { _glcpp_parser_skip_stack_change_if (parser, & @1, @@ -324,6 +346,11 @@ control_line: { glcpp_error(& @1, parser, "#elif with no expression"); } + else if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& @1, parser, "#elif after #else"); + } else { _glcpp_parser_skip_stack_change_if (parser, & @1, @@ -332,18 +359,36 @@ control_line: } } | HASH_ELSE { - _glcpp_parser_skip_stack_change_if (parser, & @1, "else", 1); + if (parser->skip_stack && + parser->skip_stack->has_else) + { + glcpp_error(& @1, parser, "multiple #else"); + } + else + { + _glcpp_parser_skip_stack_change_if (parser, & @1, "else", 1); + if (parser->skip_stack) + parser->skip_stack->has_else = true; + } } NEWLINE | HASH_ENDIF { _glcpp_parser_skip_stack_pop (parser, & @1); } NEWLINE | HASH_VERSION integer_constant NEWLINE { - _glcpp_parser_handle_version_declaration(parser, $2, NULL); + if (parser->version_resolved) { + glcpp_error(& @1, parser, "#version must appear on the first line"); + } + _glcpp_parser_handle_version_declaration(parser, $2, NULL, true); } | HASH_VERSION integer_constant IDENTIFIER NEWLINE { - _glcpp_parser_handle_version_declaration(parser, $2, $3); + if (parser->version_resolved) { + glcpp_error(& @1, parser, "#version must appear on the first line"); + } + _glcpp_parser_handle_version_declaration(parser, $2, $3, true); + } +| HASH NEWLINE { + glcpp_parser_resolve_implicit_version(parser); } -| HASH NEWLINE ; integer_constant: @@ -1148,10 +1193,9 @@ static void add_builtin_define(glcpp_parser_t *parser, } glcpp_parser_t * -glcpp_parser_create (const struct gl_extensions *extensions, int api) +glcpp_parser_create (const struct gl_extensions *extensions, gl_api api) { glcpp_parser_t *parser; - int language_version; parser = ralloc (NULL, glcpp_parser_t); @@ -1164,6 +1208,7 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) parser->newline_as_space = 0; parser->in_control_line = 0; parser->paren_count = 0; + parser->commented_newlines = 0; parser->skip_stack = NULL; @@ -1176,81 +1221,15 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) parser->info_log_length = 0; parser->error = 0; + parser->extensions = extensions; + parser->api = api; + parser->version_resolved = false; + parser->has_new_line_number = 0; parser->new_line_number = 1; parser->has_new_source_number = 0; parser->new_source_number = 0; - parser->is_gles = false; - - /* Add pre-defined macros. */ - if (api == API_OPENGLES2) { - parser->is_gles = true; - add_builtin_define(parser, "GL_ES", 1); - - if (extensions != NULL) { - if (extensions->OES_EGL_image_external) - add_builtin_define(parser, "GL_OES_EGL_image_external", 1); - } - } else { - add_builtin_define(parser, "GL_ARB_draw_buffers", 1); - add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); - - if (extensions != NULL) { - if (extensions->EXT_texture_array) { - add_builtin_define(parser, "GL_EXT_texture_array", 1); - } - - if (extensions->ARB_fragment_coord_conventions) - add_builtin_define(parser, "GL_ARB_fragment_coord_conventions", - 1); - - if (extensions->ARB_explicit_attrib_location) - add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); - - if (extensions->ARB_shader_texture_lod) - add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); - - if (extensions->ARB_draw_instanced) - add_builtin_define(parser, "GL_ARB_draw_instanced", 1); - - if (extensions->ARB_conservative_depth) { - add_builtin_define(parser, "GL_AMD_conservative_depth", 1); - add_builtin_define(parser, "GL_ARB_conservative_depth", 1); - } - - if (extensions->ARB_shader_bit_encoding) - add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1); - - if (extensions->ARB_uniform_buffer_object) - add_builtin_define(parser, "GL_ARB_uniform_buffer_object", 1); - - if (extensions->ARB_texture_cube_map_array) - add_builtin_define(parser, "GL_ARB_texture_cube_map_array", 1); - - if (extensions->ARB_shading_language_packing) - add_builtin_define(parser, "GL_ARB_shading_language_packing", 1); - - if (extensions->ARB_texture_multisample) - add_builtin_define(parser, "GL_ARB_texture_multisample", 1); - - if (extensions->ARB_texture_query_lod) - add_builtin_define(parser, "GL_ARB_texture_query_lod", 1); - - if (extensions->ARB_gpu_shader5) - add_builtin_define(parser, "GL_ARB_gpu_shader5", 1); - - if (extensions->AMD_vertex_shader_layer) - add_builtin_define(parser, "GL_AMD_vertex_shader_layer", 1); - - if (extensions->ARB_shading_language_420pack) - add_builtin_define(parser, "GL_ARB_shading_language_420pack", 1); - } - } - - language_version = 110; - add_builtin_define(parser, "__VERSION__", language_version); - return parser; } @@ -1791,11 +1770,27 @@ static void _check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc, const char *identifier) { - /* According to the GLSL specification, macro names starting with "__" - * or "GL_" are reserved for future use. So, don't allow them. + /* Section 3.3 (Preprocessor) of the GLSL 1.30 spec (and later) and + * the GLSL ES spec (all versions) say: + * + * "All macro names containing two consecutive underscores ( __ ) + * are reserved for future use as predefined macro names. All + * macro names prefixed with "GL_" ("GL" followed by a single + * underscore) are also reserved." + * + * The intention is that names containing __ are reserved for internal + * use by the implementation, and names prefixed with GL_ are reserved + * for use by Khronos. Since every extension adds a name prefixed + * with GL_ (i.e., the name of the extension), that should be an + * error. Names simply containing __ are dangerous to use, but should + * be allowed. + * + * A future version of the GLSL specification will clarify this. */ if (strstr(identifier, "__")) { - glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n"); + glcpp_warning(loc, parser, + "Macro names containing \"__\" are reserved " + "for use by the implementation.\n"); } if (strncmp(identifier, "GL_", 3) == 0) { glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n"); @@ -2009,6 +2004,7 @@ _glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc, node->type = SKIP_TO_ENDIF; } + node->has_else = false; node->next = parser->skip_stack; parser->skip_stack = node; } @@ -2047,24 +2043,116 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc) static void _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version, - const char *es_identifier) + const char *es_identifier, + bool explicitly_set) { - macro_t *macro = hash_table_find (parser->defines, "__VERSION__"); - if (macro) { - hash_table_remove (parser->defines, "__VERSION__"); - ralloc_free (macro); - } + const struct gl_extensions *extensions = parser->extensions; + + if (parser->version_resolved) + return; + + parser->version_resolved = true; + add_builtin_define (parser, "__VERSION__", version); - /* If we didn't have a GLES context to begin with, (indicated - * by parser->api), then the version declaration here might - * indicate GLES. */ - if (! parser->is_gles && - (version == 100 || - (es_identifier && (strcmp(es_identifier, "es") == 0)))) - { - parser->is_gles = true; - add_builtin_define (parser, "GL_ES", 1); + parser->is_gles = (version == 100) || + (es_identifier && + (strcmp(es_identifier, "es") == 0)); + + /* Add pre-defined macros. */ + if (parser->is_gles) { + add_builtin_define(parser, "GL_ES", 1); + add_builtin_define(parser, "GL_EXT_separate_shader_objects", 1); + + if (extensions != NULL) { + if (extensions->OES_EGL_image_external) + add_builtin_define(parser, "GL_OES_EGL_image_external", 1); + } + } else { + add_builtin_define(parser, "GL_ARB_draw_buffers", 1); + add_builtin_define(parser, "GL_ARB_separate_shader_objects", 1); + add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); + add_builtin_define(parser, "GL_AMD_shader_trinary_minmax", 1); + + + if (extensions != NULL) { + if (extensions->EXT_texture_array) + add_builtin_define(parser, "GL_EXT_texture_array", 1); + + if (extensions->ARB_arrays_of_arrays) + add_builtin_define(parser, "GL_ARB_arrays_of_arrays", 1); + + if (extensions->ARB_fragment_coord_conventions) + add_builtin_define(parser, "GL_ARB_fragment_coord_conventions", + 1); + + if (extensions->ARB_explicit_attrib_location) + add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); + + if (extensions->ARB_shader_texture_lod) + add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); + + if (extensions->ARB_draw_instanced) + add_builtin_define(parser, "GL_ARB_draw_instanced", 1); + + if (extensions->ARB_conservative_depth) { + add_builtin_define(parser, "GL_AMD_conservative_depth", 1); + add_builtin_define(parser, "GL_ARB_conservative_depth", 1); + } + + if (extensions->ARB_shader_bit_encoding) + add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1); + + if (extensions->ARB_uniform_buffer_object) + add_builtin_define(parser, "GL_ARB_uniform_buffer_object", 1); + + if (extensions->ARB_texture_cube_map_array) + add_builtin_define(parser, "GL_ARB_texture_cube_map_array", 1); + + if (extensions->ARB_shading_language_packing) + add_builtin_define(parser, "GL_ARB_shading_language_packing", 1); + + if (extensions->ARB_texture_multisample) + add_builtin_define(parser, "GL_ARB_texture_multisample", 1); + + if (extensions->ARB_texture_query_levels) + add_builtin_define(parser, "GL_ARB_texture_query_levels", 1); + + if (extensions->ARB_texture_query_lod) + add_builtin_define(parser, "GL_ARB_texture_query_lod", 1); + + if (extensions->ARB_gpu_shader5) + add_builtin_define(parser, "GL_ARB_gpu_shader5", 1); + + if (extensions->AMD_vertex_shader_layer) + add_builtin_define(parser, "GL_AMD_vertex_shader_layer", 1); + + if (extensions->ARB_shading_language_420pack) + add_builtin_define(parser, "GL_ARB_shading_language_420pack", 1); + + if (extensions->ARB_sample_shading) + add_builtin_define(parser, "GL_ARB_sample_shading", 1); + + if (extensions->ARB_texture_gather) + add_builtin_define(parser, "GL_ARB_texture_gather", 1); + + if (extensions->ARB_shader_atomic_counters) + add_builtin_define(parser, "GL_ARB_shader_atomic_counters", 1); + + if (extensions->ARB_viewport_array) + add_builtin_define(parser, "GL_ARB_viewport_array", 1); + + if (extensions->ARB_compute_shader) + add_builtin_define(parser, "GL_ARB_compute_shader", 1); + + if (extensions->ARB_shader_image_load_store) + add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1); + } + } + + if (extensions != NULL) { + if (extensions->EXT_shader_integer_mix) + add_builtin_define(parser, "GL_EXT_shader_integer_mix", 1); } if (version >= 150) @@ -2078,8 +2166,27 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (version >= 130 || parser->is_gles) add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); - ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, - "#version %" PRIiMAX "%s%s", version, - es_identifier ? " " : "", - es_identifier ? es_identifier : ""); + if (explicitly_set) { + ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, + "#version %" PRIiMAX "%s%s", version, + es_identifier ? " " : "", + es_identifier ? es_identifier : ""); + } +} + +/* GLSL version if no version is explicitly specified. */ +#define IMPLICIT_GLSL_VERSION 110 + +/* GLSL ES version if no version is explicitly specified. */ +#define IMPLICIT_GLSL_ES_VERSION 100 + +void +glcpp_parser_resolve_implicit_version(glcpp_parser_t *parser) +{ + int language_version = parser->api == API_OPENGLES2 ? + IMPLICIT_GLSL_ES_VERSION : + IMPLICIT_GLSL_VERSION; + + _glcpp_parser_handle_version_declaration(parser, language_version, + NULL, false); } diff --git a/dist/Mesa/src/glsl/glcpp/glcpp.c b/dist/Mesa/src/glsl/glcpp/glcpp.c index 6994d7bb9..07b1500b6 100644 --- a/dist/Mesa/src/glsl/glcpp/glcpp.c +++ b/dist/Mesa/src/glsl/glcpp/glcpp.c @@ -30,7 +30,7 @@ #include "main/mtypes.h" #include "main/shaderobj.h" -extern int yydebug; +extern int glcpp_parser_debug; void _mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr, diff --git a/dist/Mesa/src/glsl/glcpp/tests/063-comments.c.expected b/dist/Mesa/src/glsl/glcpp/tests/063-comments.c.expected index 73ca7071f..1965c9be0 100644 --- a/dist/Mesa/src/glsl/glcpp/tests/063-comments.c.expected +++ b/dist/Mesa/src/glsl/glcpp/tests/063-comments.c.expected @@ -5,16 +5,16 @@ f = g /h; l(); m = n + p; + - more code here - + are not treated like comments. diff --git a/dist/Mesa/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected b/dist/Mesa/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected index d8aa9f0a6..5ca42a983 100644 --- a/dist/Mesa/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected +++ b/dist/Mesa/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected @@ -1,8 +1,8 @@ -0:1(10): preprocessor error: Macro names containing "__" are reserved. +0:1(10): preprocessor warning: Macro names containing "__" are reserved for use by the implementation. 0:2(9): preprocessor error: Macro names starting with "GL_" are reserved. -0:3(9): preprocessor error: Macro names containing "__" are reserved. +0:3(9): preprocessor warning: Macro names containing "__" are reserved for use by the implementation. diff --git a/dist/Mesa/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected b/dist/Mesa/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected index 84fdc50c9..be20b7c89 100644 --- a/dist/Mesa/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected +++ b/dist/Mesa/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected @@ -1,4 +1,5 @@ 0:12(17): preprocessor error: division by 0 in preprocessor directive + @@ -9,7 +10,6 @@ - diff --git a/dist/Mesa/src/glsl/glsl_lexer.cpp b/dist/Mesa/src/glsl/glsl_lexer.cpp index a41913a78..230494fb6 100644 --- a/dist/Mesa/src/glsl/glsl_lexer.cpp +++ b/dist/Mesa/src/glsl/glsl_lexer.cpp @@ -9,7 +9,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -179,11 +179,17 @@ typedef void* yyscan_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -201,11 +207,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -223,7 +224,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -302,7 +303,7 @@ static void _mesa_glsl_lexer__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_ YY_BUFFER_STATE _mesa_glsl_lexer__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE _mesa_glsl_lexer__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *_mesa_glsl_lexer_alloc (yy_size_t ,yyscan_t yyscanner ); void *_mesa_glsl_lexer_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -334,7 +335,7 @@ void _mesa_glsl_lexer_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define _mesa_glsl_lexer_wrap(n) 1 +#define _mesa_glsl_lexer_wrap(yyscanner) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -358,8 +359,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 234 -#define YY_END_OF_BUFFER 235 +#define YY_NUM_RULES 246 +#define YY_END_OF_BUFFER 247 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -367,113 +368,119 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[960] = +static yyconst flex_int16_t yy_accept[1008] = { 0, - 0, 0, 16, 16, 0, 0, 235, 233, 1, 21, - 233, 233, 233, 233, 233, 233, 233, 233, 131, 129, - 233, 233, 233, 232, 233, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 233, 1, 233, 234, 16, - 20, 234, 19, 17, 18, 14, 13, 1, 113, 122, - 114, 125, 119, 108, 121, 109, 128, 133, 120, 134, - 131, 0, 0, 136, 131, 0, 129, 129, 117, 110, - 112, 111, 118, 232, 126, 116, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 30, 232, - - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 34, 232, 232, 61, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 127, 115, 1, 0, 0, 2, 0, 0, 0, 0, - 16, 15, 19, 18, 0, 133, 132, 0, 134, 0, - 135, 130, 123, 124, 232, 139, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 33, - - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 26, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 62, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 0, 0, - 0, 0, 15, 0, 133, 0, 132, 0, 134, 135, - 130, 232, 232, 232, 24, 232, 232, 186, 179, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 32, - 142, 232, 232, 232, 232, 68, 232, 232, 147, 161, - - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 158, 182, 49, 50, 51, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 145, 137, 232, 232, 27, 232, 232, 232, - 232, 232, 232, 232, 46, 47, 48, 106, 232, 232, - 232, 0, 0, 0, 0, 0, 132, 232, 232, 232, - 28, 37, 38, 39, 232, 140, 232, 232, 23, 232, - 232, 232, 232, 169, 170, 171, 232, 138, 232, 162, - 25, 172, 173, 174, 184, 166, 167, 168, 232, 232, - - 232, 63, 164, 232, 232, 232, 40, 41, 42, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 229, 232, 232, 232, 232, 232, 232, 232, 232, 159, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 141, 232, 232, 181, 43, 44, 45, 232, 232, - 31, 232, 0, 0, 0, 0, 189, 232, 232, 232, - 232, 187, 232, 232, 232, 160, 155, 192, 232, 232, - 232, 232, 232, 232, 150, 232, 232, 232, 107, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 232, 232, - 232, 232, 165, 146, 232, 232, 153, 232, 232, 232, - - 36, 232, 230, 178, 69, 154, 105, 232, 190, 148, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 0, - 0, 0, 0, 232, 232, 232, 232, 232, 149, 35, - 232, 232, 232, 232, 232, 232, 193, 194, 195, 232, - 232, 232, 232, 232, 183, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 143, 232, 232, - 232, 232, 232, 64, 232, 232, 65, 232, 232, 0, - 0, 0, 0, 0, 232, 232, 66, 223, 29, 156, - 197, 198, 199, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 151, 232, 232, 232, 225, - - 227, 224, 232, 232, 232, 232, 232, 232, 232, 232, - 144, 201, 202, 203, 232, 232, 163, 232, 152, 232, - 0, 0, 6, 0, 0, 0, 12, 3, 232, 22, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 196, - 157, 67, 232, 232, 232, 232, 232, 180, 232, 188, - 185, 218, 71, 72, 73, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 226, 0, - 0, 0, 0, 0, 0, 0, 232, 232, 232, 232, - 200, 232, 232, 232, 232, 232, 82, 83, 84, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - - 232, 232, 231, 232, 232, 232, 204, 88, 89, 90, - 232, 232, 4, 0, 5, 0, 0, 0, 0, 0, - 0, 228, 232, 232, 232, 232, 232, 232, 232, 215, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 94, 232, 232, 232, 232, 74, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 0, 0, 0, 0, - 232, 232, 216, 205, 232, 206, 232, 232, 232, 95, - 232, 232, 85, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 217, 232, 232, - 96, 232, 232, 91, 0, 0, 0, 207, 208, 232, - - 211, 232, 212, 232, 232, 232, 232, 232, 232, 70, - 232, 232, 232, 232, 175, 232, 176, 191, 232, 232, - 232, 209, 210, 232, 232, 232, 232, 232, 232, 0, - 0, 0, 232, 232, 232, 232, 232, 219, 221, 232, - 75, 232, 76, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 220, 222, 232, 0, 0, 0, 0, 232, - 232, 86, 87, 232, 232, 232, 77, 232, 232, 232, - 78, 232, 232, 232, 92, 93, 232, 232, 0, 0, - 0, 0, 232, 232, 232, 232, 232, 232, 97, 232, - 100, 232, 232, 232, 232, 0, 0, 0, 0, 232, - - 232, 98, 101, 232, 232, 232, 232, 79, 232, 99, - 102, 0, 0, 0, 7, 0, 0, 213, 214, 232, - 232, 232, 232, 104, 0, 0, 8, 0, 0, 232, - 232, 177, 232, 0, 0, 0, 80, 81, 232, 0, - 0, 0, 9, 232, 0, 0, 10, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 0 + 0, 0, 16, 16, 0, 0, 247, 245, 1, 21, + 245, 245, 245, 245, 245, 245, 245, 245, 174, 172, + 245, 245, 245, 244, 245, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 245, 1, 245, 246, 16, + 20, 246, 19, 17, 18, 14, 13, 1, 156, 165, + 157, 168, 162, 151, 164, 152, 171, 176, 163, 177, + 174, 0, 0, 179, 174, 0, 172, 172, 160, 153, + 155, 154, 161, 244, 169, 159, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 30, 244, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 34, 244, 244, 61, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 170, 158, 1, 0, 0, 2, 0, 0, 0, 0, + 16, 15, 19, 18, 0, 176, 175, 0, 177, 0, + 178, 173, 166, 167, 244, 182, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 33, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 26, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 62, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 0, 0, + 0, 0, 15, 0, 176, 0, 175, 0, 177, 178, + 173, 244, 244, 244, 24, 244, 244, 228, 221, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 32, + 185, 244, 244, 244, 244, 68, 244, 244, 190, 203, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 200, 224, 49, 50, 51, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 188, 180, 244, 244, 27, 244, 244, 244, + 244, 244, 244, 244, 46, 47, 48, 149, 244, 244, + 244, 0, 0, 0, 0, 0, 175, 244, 244, 244, + 28, 37, 38, 39, 244, 183, 244, 244, 23, 244, + 244, 244, 244, 211, 212, 213, 244, 181, 244, 204, + 25, 214, 215, 216, 226, 208, 209, 210, 244, 244, + + 244, 63, 206, 244, 244, 244, 40, 41, 42, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 241, 244, 244, 244, 244, 244, 244, 244, 244, 201, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 184, 244, 244, 223, 43, 44, 45, 244, 244, + 31, 244, 0, 0, 0, 0, 231, 244, 244, 244, + 244, 229, 244, 244, 244, 202, 197, 234, 244, 244, + 244, 244, 244, 244, 193, 244, 244, 244, 150, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 244, 244, + 244, 244, 207, 189, 244, 244, 195, 244, 244, 244, + + 36, 244, 242, 220, 69, 196, 148, 244, 232, 191, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 0, + 0, 0, 0, 244, 244, 244, 244, 244, 192, 35, + 244, 244, 244, 244, 244, 244, 105, 106, 107, 244, + 244, 244, 244, 244, 225, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 186, 244, 244, + 244, 244, 244, 64, 244, 244, 65, 244, 244, 0, + 0, 0, 0, 0, 244, 244, 66, 142, 29, 198, + 116, 117, 118, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 194, 244, 244, + + 244, 145, 240, 144, 244, 244, 244, 244, 244, 244, + 244, 244, 187, 127, 128, 129, 244, 244, 205, 244, + 143, 244, 0, 0, 6, 0, 0, 0, 12, 3, + 244, 22, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 114, 244, 244, 244, 109, 199, 67, 244, 244, + 244, 244, 244, 222, 244, 230, 227, 235, 71, 72, + 73, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 146, 0, 0, 0, + 0, 0, 0, 0, 244, 244, 244, 125, 244, 244, + 120, 244, 244, 244, 244, 244, 244, 244, 244, 82, + + 83, 84, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 243, 244, 244, 136, 244, + 244, 131, 88, 89, 90, 244, 244, 4, 0, 5, + 0, 0, 0, 0, 0, 0, 147, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 108, 244, 110, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 94, 244, 244, 244, 244, 74, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 0, 0, 0, 0, 244, 244, 244, 119, 121, 244, + 111, 244, 112, 244, 244, 244, 244, 244, 95, 244, + + 244, 85, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 130, 132, 244, + 244, 244, 96, 244, 244, 91, 0, 0, 0, 122, + 123, 244, 244, 244, 138, 244, 244, 139, 244, 244, + 244, 244, 244, 244, 244, 70, 244, 244, 244, 244, + 217, 244, 218, 233, 244, 244, 244, 133, 134, 244, + 244, 244, 244, 244, 244, 244, 244, 0, 0, 0, + 244, 244, 244, 244, 115, 113, 244, 244, 244, 236, + 238, 244, 75, 244, 76, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 237, 239, 244, 0, + + 0, 0, 0, 126, 124, 244, 244, 86, 87, 244, + 244, 244, 77, 244, 244, 244, 78, 244, 244, 244, + 137, 135, 92, 93, 244, 244, 0, 0, 0, 0, + 244, 244, 244, 244, 244, 244, 97, 244, 100, 244, + 244, 244, 244, 0, 0, 0, 0, 244, 244, 98, + 101, 244, 244, 244, 244, 79, 244, 99, 102, 0, + 0, 0, 7, 0, 0, 140, 141, 244, 244, 244, + 244, 104, 0, 0, 8, 0, 0, 244, 244, 219, + 244, 0, 0, 0, 80, 81, 244, 0, 0, 0, + 9, 244, 0, 0, 10, 103, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 11, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -519,227 +526,239 @@ static yyconst flex_int32_t yy_meta[71] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; -static yyconst flex_int16_t yy_base[970] = +static yyconst flex_int16_t yy_base[1018] = { 0, - 0, 69, 75, 145, 1329, 1328, 1330, 1333, 70, 1333, - 1304, 1303, 94, 1302, 91, 92, 90, 1301, 202, 256, - 89, 1300, 95, 0, 79, 68, 64, 79, 124, 76, - 131, 1265, 127, 141, 81, 88, 82, 1259, 136, 126, - 183, 177, 149, 168, 134, 180, 206, 251, 1333, 140, - 1333, 1307, 239, 1333, 0, 1333, 1333, 228, 1333, 1333, - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 231, 1333, 233, - 137, 307, 273, 1333, 1333, 0, 0, 1333, 1296, 1333, - 1333, 1333, 1295, 0, 1333, 1333, 1256, 1261, 115, 1258, - 1267, 1266, 1252, 1255, 1267, 244, 1261, 1248, 1245, 1259, - - 1245, 1242, 1242, 1248, 126, 180, 1242, 1253, 1238, 1244, - 1248, 1249, 0, 1240, 1251, 254, 1250, 1245, 1225, 143, - 1229, 1243, 1233, 188, 1226, 271, 1239, 1241, 285, 1220, - 1228, 1225, 1214, 1223, 223, 252, 1228, 1223, 1226, 1214, - 1217, 246, 246, 226, 1227, 1214, 1227, 83, 1220, 1219, - 1333, 1333, 329, 334, 340, 1333, 1204, 1217, 1208, 1219, - 342, 0, 333, 0, 346, 1333, 329, 390, 1333, 353, - 397, 281, 1333, 1333, 1214, 0, 1209, 1204, 1208, 1218, - 1215, 328, 1198, 1198, 1210, 1201, 278, 1212, 1209, 1209, - 1207, 1204, 1195, 1202, 1188, 1186, 1199, 1184, 1201, 0, - - 1198, 1185, 1193, 1190, 1194, 1195, 1188, 1185, 1173, 1172, - 1186, 1189, 1176, 1185, 1172, 1179, 1169, 362, 1175, 1178, - 1168, 1176, 1164, 1168, 1159, 1174, 1173, 1163, 1170, 325, - 1153, 1172, 1155, 1153, 1164, 1153, 1148, 1146, 1148, 1159, - 1144, 1146, 1143, 1155, 1154, 1157, 1138, 326, 1147, 1142, - 1140, 1150, 1128, 402, 1147, 1149, 1137, 1129, 1128, 1132, - 1144, 1127, 0, 414, 421, 438, 1333, 445, 456, 1333, - 1333, 1122, 1133, 1132, 0, 1129, 405, 0, 0, 1122, - 1120, 1120, 1121, 1116, 1125, 1113, 1131, 1119, 408, 0, - 0, 1113, 1124, 1123, 1123, 0, 1107, 426, 0, 0, - - 1109, 450, 1117, 1118, 1108, 1102, 1101, 1102, 1101, 1101, - 461, 1096, 0, 0, 1092, 1091, 1090, 1092, 1093, 1098, - 1092, 1088, 1102, 1097, 1097, 1095, 1094, 1087, 1081, 1083, - 1082, 1085, 1085, 1077, 1080, 1075, 1084, 1089, 1076, 1073, - 1086, 1076, 0, 0, 1083, 1079, 0, 1070, 1070, 1076, - 1066, 1074, 464, 1071, 0, 0, 0, 0, 1060, 1073, - 1072, 1071, 1070, 1067, 1055, 473, 480, 1067, 1068, 1068, - 0, 0, 0, 0, 1054, 0, 1063, 1053, 0, 1052, - 1053, 1047, 1058, 0, 0, 0, 1048, 0, 1044, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1055, 486, - - 1054, 0, 0, 1052, 1048, 1044, 0, 0, 0, 1036, - 467, 489, 498, 1041, 1037, 1043, 1033, 1031, 1045, 1029, - 0, 1029, 1043, 1031, 1027, 1034, 1028, 1040, 1035, 0, - 1033, 1030, 1034, 1017, 1015, 1018, 1025, 1031, 1026, 1025, - 1012, 0, 1014, 1015, 0, 0, 0, 0, 1012, 1016, - 0, 1009, 1009, 1064, 1008, 1011, 0, 1019, 998, 1008, - 1002, 0, 995, 995, 1009, 0, 1011, 0, 503, 1025, - 1024, 1023, 988, 987, 0, 1005, 1004, 999, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 987, 1001, - 987, 984, 0, 0, 990, 989, 0, 985, 993, 992, - - 0, 984, 976, 0, 0, 0, 0, 973, 0, 0, - 972, 984, 506, 976, 983, 982, 979, 973, 970, 965, - 524, 981, 966, 960, 960, 974, 958, 971, 0, 0, - 963, 988, 987, 986, 951, 950, 359, 365, 0, 963, - 966, 964, 952, 948, 0, 961, 958, 957, 946, 945, - 935, 953, 938, 941, 519, 946, 949, 0, 967, 966, - 965, 930, 929, 0, 944, 930, 0, 941, 933, 935, - 549, 555, 985, 928, 932, 935, 0, 0, 0, 0, - 956, 955, 0, 931, 934, 918, 926, 916, 924, 925, - 925, 924, 909, 561, 922, 0, 923, 911, 910, 0, - - 0, 0, 906, 936, 935, 934, 899, 898, 894, 902, - 0, 932, 931, 0, 907, 910, 0, 564, 0, 887, - 895, 582, 1333, 592, 0, 603, 594, 1333, 895, 0, - 891, 890, 900, 900, 887, 902, 885, 900, 895, 0, - 0, 0, 913, 912, 911, 876, 875, 0, 875, 0, - 0, 0, 500, 590, 899, 886, 889, 871, 884, 871, - 870, 880, 880, 898, 897, 896, 861, 860, 0, 865, - 628, 638, 446, 882, 872, 860, 856, 857, 856, 867, - 0, 870, 866, 868, 864, 850, 883, 526, 0, 859, - 862, 854, 845, 853, 843, 864, 853, 849, 851, 849, - - 849, 848, 0, 835, 834, 845, 0, 866, 600, 0, - 842, 845, 1333, 508, 1333, 648, 0, 659, 860, 843, - 825, 0, 842, 841, 824, 816, 824, 814, 822, 0, - 819, 818, 839, 828, 826, 826, 809, 812, 827, 810, - 843, 822, 823, 820, 817, 522, 804, 819, 818, 794, - 772, 771, 792, 781, 779, 779, 526, 794, 762, 772, - 755, 754, 0, 782, 754, 780, 752, 756, 755, 788, - 767, 764, 784, 761, 764, 760, 760, 743, 740, 754, - 10, 170, 176, 190, 209, 241, 247, 0, 326, 332, - 368, 350, 352, 425, 478, 468, 476, 0, 0, 502, - - 0, 503, 0, 511, 514, 499, 500, 525, 526, 0, - 520, 538, 539, 553, 576, 559, 0, 0, 571, 589, - 590, 0, 0, 592, 594, 582, 589, 602, 610, 670, - 680, 620, 629, 638, 616, 617, 625, 0, 0, 626, - 649, 624, 652, 647, 641, 628, 651, 649, 642, 631, - 632, 640, 0, 0, 641, 701, 702, 703, 637, 659, - 660, 0, 0, 664, 665, 660, 0, 661, 646, 670, - 0, 648, 658, 681, 0, 0, 674, 675, 663, 720, - 673, 675, 666, 667, 659, 660, 684, 685, 0, 684, - 694, 668, 704, 668, 669, 673, 689, 738, 740, 675, - - 677, 0, 0, 696, 697, 687, 695, 0, 711, 0, - 0, 706, 750, 751, 1333, 754, 753, 0, 0, 698, - 699, 693, 719, 0, 704, 764, 1333, 765, 718, 703, - 704, 0, 723, 719, 723, 773, 0, 0, 718, 733, - 778, 779, 1333, 716, 726, 783, 1333, 0, 723, 785, - 788, 789, 790, 739, 740, 796, 797, 1333, 1333, 835, - 840, 843, 846, 797, 798, 849, 853, 856, 858 + 0, 69, 75, 145, 1377, 1376, 1378, 1381, 70, 1381, + 1352, 1351, 94, 1350, 91, 92, 90, 1349, 202, 256, + 89, 1348, 95, 0, 79, 68, 64, 79, 124, 76, + 131, 1313, 127, 141, 81, 88, 82, 1307, 136, 126, + 183, 177, 149, 168, 134, 180, 206, 251, 1381, 140, + 1381, 1355, 239, 1381, 0, 1381, 1381, 228, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 231, 1381, 233, + 137, 307, 273, 1381, 1381, 0, 0, 1381, 1344, 1381, + 1381, 1381, 1343, 0, 1381, 1381, 1304, 1309, 115, 1306, + 1315, 1314, 1300, 1303, 1315, 244, 1309, 1296, 1293, 1307, + + 1293, 1290, 1290, 1296, 126, 180, 1290, 1301, 1286, 1292, + 1296, 1297, 0, 1288, 1299, 254, 1298, 1293, 1273, 143, + 1277, 1291, 1281, 188, 1274, 271, 1287, 1289, 285, 1268, + 1276, 1273, 1262, 1271, 223, 252, 1276, 1271, 1274, 1262, + 1265, 246, 246, 226, 1275, 1262, 1275, 83, 1268, 1267, + 1381, 1381, 329, 334, 340, 1381, 1252, 1265, 1256, 1267, + 342, 0, 333, 0, 346, 1381, 329, 390, 1381, 353, + 397, 281, 1381, 1381, 1262, 0, 1257, 1252, 1256, 1266, + 1263, 328, 1246, 1246, 1258, 1249, 278, 1260, 1257, 1257, + 1255, 1252, 1243, 1250, 1236, 1234, 1247, 1232, 1249, 0, + + 1246, 1233, 1241, 1238, 1242, 1243, 1236, 1233, 1221, 1220, + 1234, 1237, 1224, 1233, 1220, 1227, 1217, 362, 1223, 1226, + 1216, 1224, 1212, 1216, 1207, 1222, 1221, 1211, 1218, 325, + 1201, 1220, 1203, 1201, 1212, 1201, 1196, 1194, 1196, 1207, + 1192, 1194, 1191, 1203, 1202, 1205, 1186, 326, 1195, 1190, + 1188, 1198, 1176, 402, 1195, 1197, 1185, 1177, 1176, 1180, + 1192, 1175, 0, 414, 421, 438, 1381, 445, 456, 1381, + 1381, 1170, 1181, 1180, 0, 1177, 405, 0, 0, 1170, + 1168, 1168, 1169, 1164, 1173, 1161, 1179, 1167, 408, 0, + 0, 1161, 1172, 1171, 1171, 0, 1155, 426, 0, 0, + + 1157, 450, 1165, 1166, 1156, 1150, 1149, 1150, 1149, 1149, + 461, 1144, 0, 0, 1140, 1139, 1138, 1140, 1141, 1146, + 1140, 1136, 1150, 1145, 1145, 1143, 1142, 1135, 1129, 1131, + 1130, 1133, 1133, 1125, 1128, 1123, 1132, 1137, 1124, 1121, + 1134, 1124, 0, 0, 1131, 1127, 0, 1118, 1118, 1124, + 1114, 1122, 464, 1119, 0, 0, 0, 0, 1108, 1121, + 1120, 1119, 1118, 1115, 1103, 473, 480, 1115, 1116, 1116, + 0, 0, 0, 0, 1102, 0, 1111, 1101, 0, 1100, + 1101, 1095, 1106, 0, 0, 0, 1096, 0, 1092, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1103, 486, + + 1102, 0, 0, 1100, 1096, 1092, 0, 0, 0, 1084, + 467, 489, 498, 1089, 1085, 1091, 1081, 1079, 1093, 1077, + 0, 1077, 1091, 1079, 1075, 1082, 1076, 1088, 1083, 0, + 1081, 1078, 1082, 1065, 1063, 1066, 1073, 1079, 1074, 1073, + 1060, 0, 1062, 1063, 0, 0, 0, 0, 1060, 1064, + 0, 1057, 1057, 1112, 1056, 1059, 0, 1067, 1046, 1056, + 1050, 0, 1043, 1043, 1057, 0, 1059, 0, 503, 1073, + 1072, 1071, 1036, 1035, 0, 1053, 1052, 1047, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1035, 1049, + 1035, 1032, 0, 0, 1038, 1037, 0, 1033, 1041, 1040, + + 0, 1032, 1024, 0, 0, 0, 0, 1021, 0, 0, + 1020, 1032, 506, 1024, 1031, 1030, 1027, 1021, 1018, 1013, + 524, 1029, 1014, 1008, 1008, 1022, 1006, 1019, 0, 0, + 1011, 1036, 1035, 1034, 999, 998, 359, 500, 0, 1011, + 1014, 1012, 1000, 996, 0, 1009, 1006, 1005, 994, 993, + 983, 1001, 986, 989, 530, 994, 997, 0, 1015, 1014, + 1013, 978, 977, 0, 992, 978, 0, 989, 981, 983, + 548, 554, 1033, 976, 980, 983, 0, 0, 0, 0, + 1004, 550, 0, 980, 983, 967, 975, 965, 986, 975, + 971, 972, 972, 971, 956, 563, 969, 0, 970, 958, + + 957, 0, 0, 0, 953, 983, 982, 981, 946, 945, + 941, 949, 0, 979, 551, 0, 955, 958, 0, 566, + 0, 935, 943, 600, 1381, 607, 0, 627, 594, 1381, + 943, 0, 939, 938, 959, 948, 946, 946, 933, 948, + 931, 964, 943, 944, 939, 960, 0, 0, 956, 955, + 954, 919, 918, 0, 918, 0, 0, 0, 365, 623, + 942, 929, 932, 914, 927, 914, 913, 934, 923, 921, + 921, 939, 938, 937, 902, 901, 0, 906, 649, 655, + 446, 923, 913, 901, 897, 898, 897, 930, 909, 906, + 927, 908, 904, 906, 889, 886, 900, 886, 885, 918, + + 570, 0, 894, 897, 889, 880, 888, 878, 899, 888, + 884, 886, 884, 884, 883, 0, 870, 869, 902, 881, + 878, 899, 898, 651, 0, 874, 877, 1381, 508, 1381, + 677, 0, 683, 892, 875, 857, 0, 874, 873, 856, + 853, 854, 853, 845, 853, 843, 842, 0, 822, 0, + 819, 818, 817, 838, 827, 825, 825, 808, 810, 825, + 808, 841, 820, 821, 818, 815, 566, 802, 817, 816, + 798, 795, 796, 795, 792, 791, 812, 801, 23, 182, + 526, 204, 178, 214, 241, 247, 326, 0, 0, 332, + 356, 331, 362, 407, 447, 474, 472, 476, 525, 506, + + 505, 528, 511, 517, 515, 534, 537, 536, 552, 538, + 543, 546, 559, 554, 545, 546, 570, 0, 0, 571, + 573, 574, 609, 590, 589, 612, 605, 590, 597, 0, + 0, 610, 611, 608, 0, 611, 596, 0, 613, 637, + 638, 623, 625, 629, 631, 0, 638, 648, 640, 648, + 671, 652, 0, 0, 651, 668, 669, 0, 0, 670, + 672, 673, 674, 659, 658, 661, 662, 722, 723, 673, + 659, 660, 684, 685, 0, 0, 663, 665, 673, 0, + 0, 674, 697, 671, 699, 694, 688, 675, 697, 695, + 688, 677, 678, 679, 680, 688, 0, 0, 689, 749, + + 750, 751, 685, 0, 0, 707, 708, 0, 0, 712, + 713, 708, 0, 709, 694, 718, 0, 696, 706, 729, + 0, 0, 0, 0, 722, 723, 711, 768, 721, 723, + 714, 715, 707, 708, 732, 733, 0, 732, 742, 716, + 752, 716, 717, 721, 737, 786, 788, 723, 725, 0, + 0, 744, 745, 735, 743, 0, 759, 0, 0, 754, + 798, 799, 1381, 802, 801, 0, 0, 746, 747, 741, + 767, 0, 752, 812, 1381, 813, 766, 751, 752, 0, + 771, 767, 771, 821, 0, 0, 766, 781, 826, 827, + 1381, 764, 774, 831, 1381, 0, 771, 833, 836, 837, + + 838, 787, 788, 844, 845, 1381, 1381, 883, 888, 891, + 894, 845, 846, 897, 901, 904, 906 } ; -static yyconst flex_int16_t yy_def[970] = +static yyconst flex_int16_t yy_def[1018] = { 0, - 959, 1, 960, 960, 961, 961, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 962, 959, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 963, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 964, 959, 965, - 19, 959, 959, 959, 959, 966, 20, 959, 959, 959, - 959, 959, 959, 962, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 967, 959, 963, 959, 959, 965, 959, 959, 959, - 959, 966, 959, 959, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 959, 959, - 959, 959, 967, 959, 959, 959, 959, 959, 959, 959, - 959, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 959, 959, 959, 959, 959, 959, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 959, 959, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 959, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 959, 959, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 959, 959, 959, 959, 968, 959, 959, 959, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 968, 959, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 959, 959, 959, 959, 969, 959, 959, 959, - 959, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 969, 959, 959, 959, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 959, 959, 959, 962, 962, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 959, 959, - 959, 959, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 962, - - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 959, 959, 959, 959, 959, 959, 962, 962, 962, - 962, 962, 962, 962, 959, 959, 959, 959, 959, 962, - 962, 962, 962, 959, 959, 959, 962, 962, 962, 959, - 959, 959, 959, 962, 959, 959, 959, 962, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 0, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959 + 1007, 1, 1008, 1008, 1009, 1009, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1010, 1007, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1011, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1012, 1007, 1013, + 19, 1007, 1007, 1007, 1007, 1014, 20, 1007, 1007, 1007, + 1007, 1007, 1007, 1010, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1015, 1007, 1011, 1007, 1007, 1013, 1007, 1007, 1007, + 1007, 1014, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, + 1007, 1007, 1015, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1007, 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1016, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1016, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1007, 1017, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1017, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + + 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1007, 1007, 1007, 1010, 1010, 1010, 1007, 1007, 1007, + 1007, 1010, 1007, 1007, 1007, 1010, 1007, 1007, 1007, 1007, + + 1007, 1007, 1007, 1007, 1007, 1007, 0, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007 } ; -static yyconst flex_int16_t yy_nxt[1404] = +static yyconst flex_int16_t yy_nxt[1452] = { 0, 8, 9, 10, 9, 11, 8, 12, 13, 8, 8, 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, @@ -748,7 +767,7 @@ static yyconst flex_int16_t yy_nxt[1404] = 24, 24, 25, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 24, 24, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 24, 24, 24, 46, - 47, 58, 817, 58, 48, 49, 50, 51, 50, 49, + 47, 58, 825, 58, 48, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 49, 53, 53, 53, 53, 53, 53, 54, 49, 49, @@ -759,146 +778,151 @@ static yyconst flex_int16_t yy_nxt[1404] = 124, 161, 103, 161, 49, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 49, 53, 53, 53, 53, 53, 53, 54, 49, 49, - 49, 110, 97, 177, 129, 104, 98, 178, 959, 111, + 49, 110, 97, 177, 129, 104, 98, 178, 1007, 111, 126, 196, 99, 105, 130, 149, 106, 49, 100, 107, 113, 112, 197, 114, 150, 108, 127, 115, 116, 128, - 216, 142, 117, 959, 151, 118, 143, 153, 217, 58, + 216, 142, 117, 1007, 151, 118, 143, 153, 217, 58, 144, 154, 146, 145, 49, 70, 147, 71, 71, 71, 71, 71, 71, 72, 198, 138, 148, 131, 139, 58, - 818, 58, 73, 74, 132, 133, 819, 140, 199, 134, - 221, 820, 75, 76, 141, 135, 136, 222, 137, 152, + 826, 58, 73, 74, 132, 133, 827, 140, 199, 134, + 221, 828, 75, 76, 141, 135, 136, 222, 137, 152, 73, 74, 155, 156, 163, 163, 163, 163, 163, 163, - 163, 165, 166, 168, 169, 75, 821, 237, 76, 70, + 163, 165, 166, 168, 169, 75, 829, 237, 76, 70, 250, 77, 77, 77, 77, 77, 77, 77, 251, 165, 166, 168, 169, 238, 170, 170, 73, 74, 171, 171, 171, 171, 171, 171, 171, 185, 78, 239, 248, 157, - 186, 187, 246, 247, 73, 74, 158, 249, 822, 208, - 159, 240, 209, 210, 823, 160, 211, 224, 212, 78, + 186, 187, 246, 247, 73, 74, 158, 249, 830, 208, + 159, 240, 209, 210, 831, 160, 211, 224, 212, 78, 70, 271, 72, 72, 72, 72, 72, 72, 72, 229, 153, 225, 58, 226, 154, 155, 156, 73, 74, 284, 285, 155, 156, 161, 271, 161, 230, 231, 163, 163, 163, 163, 163, 163, 163, 73, 74, 264, 264, 266, 267, 265, 265, 265, 265, 265, 265, 265, 171, 171, 171, 171, 171, 171, 171, 348, 278, 266, 267, 315, - 316, 317, 157, 329, 349, 586, 824, 330, 157, 158, - 279, 588, 825, 159, 826, 158, 827, 587, 160, 159, + 316, 317, 157, 329, 349, 586, 832, 330, 157, 158, + 279, 706, 833, 159, 834, 158, 835, 587, 160, 159, - 828, 268, 268, 589, 160, 269, 269, 269, 269, 269, + 836, 268, 268, 707, 160, 269, 269, 269, 269, 269, 269, 269, 171, 171, 171, 171, 171, 171, 171, 355, 356, 357, 372, 373, 374, 384, 385, 386, 270, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 392, 393, 394, 270, 622, 623, 366, - 366, 829, 166, 367, 367, 367, 367, 367, 367, 367, + 265, 265, 265, 392, 393, 394, 270, 624, 625, 366, + 366, 837, 166, 367, 367, 367, 367, 367, 367, 367, 269, 269, 269, 269, 269, 269, 269, 396, 397, 398, 166, 269, 269, 269, 269, 269, 269, 269, 407, 408, 409, 446, 447, 448, 480, 481, 482, 169, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 470, 471, 472, 169, 483, 484, 485, 714, - 715, 267, 830, 473, 474, 486, 487, 488, 831, 532, - 533, 534, 559, 560, 561, 521, 693, 714, 715, 267, - 535, 536, 832, 562, 563, 604, 605, 606, 694, 571, - 572, 572, 572, 572, 572, 572, 607, 608, 783, 609, - 622, 623, 732, 833, 834, 835, 622, 623, 836, 837, - 784, 733, 838, 734, 624, 624, 624, 624, 624, 624, - 626, 626, 626, 626, 626, 626, 626, 643, 644, 645, - 664, 665, 666, 622, 623, 839, 840, 841, 646, 647, - 625, 667, 668, 622, 623, 627, 842, 671, 672, 672, - - 672, 672, 672, 672, 622, 623, 843, 624, 624, 624, - 624, 624, 624, 844, 845, 625, 695, 846, 626, 626, - 626, 626, 626, 626, 626, 696, 752, 697, 698, 714, - 715, 847, 674, 848, 849, 753, 850, 754, 851, 714, - 715, 675, 852, 716, 716, 716, 716, 716, 716, 714, - 715, 853, 676, 718, 718, 718, 718, 718, 718, 718, - 714, 715, 854, 716, 716, 716, 716, 716, 716, 717, - 855, 856, 859, 860, 718, 718, 718, 718, 718, 718, - 718, 857, 861, 862, 863, 864, 865, 866, 858, 867, - 868, 869, 870, 871, 717, 872, 873, 874, 875, 876, - - 877, 878, 856, 857, 880, 882, 883, 884, 885, 886, - 858, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 880, 897, 899, 900, 901, 902, 903, 904, 905, - 898, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 918, 916, 919, 920, 921, 922, 923, 915, 917, 924, - 925, 926, 914, 879, 928, 916, 930, 931, 932, 927, - 915, 881, 917, 933, 934, 926, 928, 935, 937, 938, - 939, 940, 941, 927, 942, 936, 944, 945, 881, 946, - 942, 948, 943, 949, 946, 950, 951, 947, 943, 951, - 953, 953, 947, 952, 955, 956, 952, 957, 957, 68, - - 167, 816, 815, 814, 813, 958, 958, 812, 811, 810, - 809, 929, 808, 807, 806, 805, 804, 803, 802, 801, - 800, 799, 798, 929, 797, 796, 795, 794, 793, 792, - 791, 790, 789, 954, 954, 55, 55, 55, 55, 55, - 56, 56, 56, 56, 56, 84, 84, 84, 164, 164, - 164, 172, 172, 263, 788, 263, 263, 263, 673, 673, - 757, 757, 787, 786, 785, 782, 781, 780, 779, 778, - 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, - 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, - 756, 755, 751, 750, 749, 748, 747, 746, 745, 744, - - 743, 742, 741, 740, 739, 738, 737, 736, 735, 731, - 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, - 720, 719, 713, 712, 711, 710, 709, 708, 707, 706, - 705, 704, 703, 702, 701, 700, 699, 692, 691, 690, - 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, - 679, 678, 677, 670, 669, 663, 662, 661, 660, 659, - 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 642, 641, 640, 639, 638, 637, 636, 635, 634, - 633, 632, 631, 630, 629, 628, 627, 621, 620, 619, - 618, 617, 616, 615, 614, 613, 612, 611, 610, 603, - + 367, 367, 470, 471, 472, 169, 483, 484, 485, 729, + 730, 267, 838, 473, 474, 486, 487, 488, 839, 532, + 533, 534, 559, 560, 561, 521, 588, 729, 730, 267, + 535, 536, 840, 562, 563, 589, 841, 590, 591, 571, + 572, 572, 572, 572, 572, 572, 606, 607, 608, 624, + 625, 842, 843, 844, 845, 624, 625, 609, 610, 846, + 611, 847, 848, 626, 626, 626, 626, 626, 626, 628, + 628, 628, 628, 628, 628, 628, 634, 667, 849, 649, + 650, 651, 672, 673, 674, 635, 668, 636, 669, 627, + 652, 653, 812, 675, 676, 629, 753, 850, 851, 852, + + 853, 624, 625, 854, 813, 754, 855, 755, 624, 625, + 856, 857, 858, 859, 627, 679, 680, 680, 680, 680, + 680, 680, 626, 626, 626, 626, 626, 626, 624, 625, + 860, 861, 682, 862, 863, 864, 865, 866, 867, 868, + 869, 683, 628, 628, 628, 628, 628, 628, 628, 708, + 729, 730, 684, 870, 871, 872, 729, 730, 709, 873, + 710, 711, 874, 875, 731, 731, 731, 731, 731, 731, + 733, 733, 733, 733, 733, 733, 733, 776, 729, 730, + 876, 877, 878, 879, 729, 730, 777, 880, 778, 881, + 732, 882, 731, 731, 731, 731, 731, 731, 733, 733, + + 733, 733, 733, 733, 733, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 732, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 903, 904, 905, 906, 907, + 908, 902, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 900, 901, 928, 930, 931, 932, 933, 934, 902, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 928, + 945, 947, 948, 949, 950, 951, 952, 953, 946, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 966, 964, + 967, 968, 969, 970, 971, 963, 965, 972, 973, 974, + + 962, 927, 976, 964, 978, 979, 980, 975, 963, 929, + 965, 981, 982, 974, 976, 983, 985, 986, 987, 988, + 989, 975, 990, 984, 992, 993, 929, 994, 990, 996, + 991, 997, 994, 998, 999, 995, 991, 999, 1001, 1001, + 995, 1000, 1003, 1004, 1000, 1005, 1005, 68, 167, 824, + 823, 822, 821, 1006, 1006, 820, 819, 818, 817, 977, + 816, 815, 814, 811, 810, 809, 808, 807, 806, 805, + 804, 977, 803, 802, 801, 800, 799, 798, 797, 796, + 795, 1002, 1002, 55, 55, 55, 55, 55, 56, 56, + 56, 56, 56, 84, 84, 84, 164, 164, 164, 172, + + 172, 263, 794, 263, 263, 263, 681, 681, 781, 781, + 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, + 783, 782, 780, 779, 775, 774, 773, 772, 771, 770, + 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, + 759, 758, 757, 756, 752, 751, 750, 749, 748, 747, + 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, + 736, 735, 734, 728, 727, 726, 725, 724, 723, 722, + 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, + 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, + 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, + + 685, 678, 677, 671, 670, 666, 665, 664, 663, 662, + 661, 660, 659, 658, 657, 656, 655, 654, 648, 647, + 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, + 633, 632, 631, 630, 629, 623, 622, 621, 620, 619, + 618, 617, 616, 615, 614, 613, 612, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, - 592, 591, 590, 585, 584, 583, 582, 581, 580, 579, - 578, 577, 576, 575, 574, 573, 570, 569, 568, 567, - 566, 565, 564, 558, 557, 556, 555, 554, 553, 552, - 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, - 541, 540, 539, 538, 537, 531, 530, 529, 528, 527, - 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, - 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, - 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, - 496, 495, 494, 493, 492, 491, 490, 489, 479, 478, - - 477, 476, 475, 469, 468, 467, 466, 465, 464, 463, - 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, - 452, 451, 450, 449, 445, 444, 443, 442, 441, 440, - 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, - 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, - 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, - 406, 405, 404, 403, 402, 401, 400, 399, 395, 391, - 390, 389, 388, 387, 383, 382, 381, 380, 379, 378, - 377, 376, 375, 371, 370, 369, 368, 365, 364, 363, - 362, 361, 360, 359, 358, 354, 353, 352, 351, 350, - - 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 332, 331, 328, 327, 326, - 325, 324, 323, 322, 321, 320, 319, 318, 314, 313, - 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, - 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, - 292, 291, 290, 289, 288, 287, 286, 283, 282, 281, - 280, 277, 276, 275, 274, 273, 272, 262, 261, 260, - 259, 258, 257, 254, 253, 252, 245, 244, 243, 242, - 241, 236, 235, 234, 233, 232, 228, 227, 223, 220, - 219, 218, 215, 214, 213, 207, 206, 205, 204, 203, - - 202, 201, 200, 195, 194, 193, 192, 191, 190, 189, - 188, 184, 183, 182, 181, 180, 179, 176, 175, 174, - 173, 162, 125, 109, 81, 69, 63, 60, 59, 959, - 57, 57, 7, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - - 959, 959, 959 + 592, 585, 584, 583, 582, 581, 580, 579, 578, 577, + 576, 575, 574, 573, 570, 569, 568, 567, 566, 565, + 564, 558, 557, 556, 555, 554, 553, 552, 551, 550, + 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, + + 539, 538, 537, 531, 530, 529, 528, 527, 526, 525, + 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, + 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, + 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, + 494, 493, 492, 491, 490, 489, 479, 478, 477, 476, + 475, 469, 468, 467, 466, 465, 464, 463, 462, 461, + 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, + 450, 449, 445, 444, 443, 442, 441, 440, 439, 438, + 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, + 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, + + 417, 416, 415, 414, 413, 412, 411, 410, 406, 405, + 404, 403, 402, 401, 400, 399, 395, 391, 390, 389, + 388, 387, 383, 382, 381, 380, 379, 378, 377, 376, + 375, 371, 370, 369, 368, 365, 364, 363, 362, 361, + 360, 359, 358, 354, 353, 352, 351, 350, 347, 346, + 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, + 335, 334, 333, 332, 331, 328, 327, 326, 325, 324, + 323, 322, 321, 320, 319, 318, 314, 313, 312, 311, + 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, + 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, + + 290, 289, 288, 287, 286, 283, 282, 281, 280, 277, + 276, 275, 274, 273, 272, 262, 261, 260, 259, 258, + 257, 254, 253, 252, 245, 244, 243, 242, 241, 236, + 235, 234, 233, 232, 228, 227, 223, 220, 219, 218, + 215, 214, 213, 207, 206, 205, 204, 203, 202, 201, + 200, 195, 194, 193, 192, 191, 190, 189, 188, 184, + 183, 182, 181, 180, 179, 176, 175, 174, 173, 162, + 125, 109, 81, 69, 63, 60, 59, 1007, 57, 57, + 7, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007 } ; -static yyconst flex_int16_t yy_chk[1404] = +static yyconst flex_int16_t yy_chk[1452] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -907,7 +931,7 @@ static yyconst flex_int16_t yy_chk[1404] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 9, 781, 9, 2, 3, 3, 3, 3, 3, + 2, 9, 779, 9, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -925,136 +949,141 @@ static yyconst flex_int16_t yy_chk[1404] = 120, 43, 34, 71, 46, 34, 43, 47, 120, 47, 43, 47, 44, 43, 4, 19, 44, 19, 19, 19, 19, 19, 19, 19, 106, 42, 44, 41, 42, 58, - 782, 58, 19, 19, 41, 41, 783, 42, 106, 41, - 124, 784, 19, 19, 42, 41, 41, 124, 41, 46, + 780, 58, 19, 19, 41, 41, 782, 42, 106, 41, + 124, 783, 19, 19, 42, 41, 41, 124, 41, 46, 19, 19, 48, 48, 53, 53, 53, 53, 53, 53, - 53, 68, 68, 70, 70, 19, 785, 135, 19, 20, + 53, 68, 68, 70, 70, 19, 784, 135, 19, 20, 144, 20, 20, 20, 20, 20, 20, 20, 144, 68, 68, 70, 70, 135, 73, 73, 20, 20, 73, 73, 73, 73, 73, 73, 73, 96, 20, 136, 143, 48, - 96, 96, 142, 142, 20, 20, 48, 143, 786, 116, - 48, 136, 116, 116, 787, 48, 116, 126, 116, 20, + 96, 96, 142, 142, 20, 20, 48, 143, 785, 116, + 48, 136, 116, 116, 786, 48, 116, 126, 116, 20, 72, 172, 72, 72, 72, 72, 72, 72, 72, 129, 153, 126, 153, 126, 153, 154, 154, 72, 72, 187, 187, 155, 155, 161, 172, 161, 129, 129, 163, 163, 163, 163, 163, 163, 163, 72, 72, 165, 165, 167, 167, 165, 165, 165, 165, 165, 165, 165, 170, 170, 170, 170, 170, 170, 170, 248, 182, 167, 167, 218, - 218, 218, 154, 230, 248, 537, 789, 230, 155, 154, - 182, 538, 790, 154, 791, 155, 792, 537, 154, 155, + 218, 218, 154, 230, 248, 537, 787, 230, 155, 154, + 182, 659, 790, 154, 791, 155, 792, 537, 154, 155, - 793, 168, 168, 538, 155, 168, 168, 168, 168, 168, + 793, 168, 168, 659, 155, 168, 168, 168, 168, 168, 168, 168, 171, 171, 171, 171, 171, 171, 171, 254, 254, 254, 277, 277, 277, 289, 289, 289, 171, 264, 264, 264, 264, 264, 264, 264, 265, 265, 265, 265, - 265, 265, 265, 298, 298, 298, 171, 673, 673, 266, + 265, 265, 265, 298, 298, 298, 171, 681, 681, 266, 266, 794, 265, 266, 266, 266, 266, 266, 266, 266, 268, 268, 268, 268, 268, 268, 268, 302, 302, 302, 265, 269, 269, 269, 269, 269, 269, 269, 311, 311, 311, 353, 353, 353, 411, 411, 411, 269, 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, 367, 367, - 367, 367, 400, 400, 400, 269, 412, 412, 412, 714, - 714, 367, 795, 400, 400, 413, 413, 413, 796, 469, - 469, 469, 513, 513, 513, 521, 653, 757, 757, 367, - 469, 469, 797, 513, 513, 555, 555, 555, 653, 521, - 521, 521, 521, 521, 521, 521, 555, 555, 746, 555, - 571, 571, 688, 800, 802, 804, 572, 572, 805, 806, - 746, 688, 807, 688, 571, 571, 571, 571, 571, 571, - 572, 572, 572, 572, 572, 572, 572, 594, 594, 594, - 618, 618, 618, 622, 622, 808, 809, 811, 594, 594, - 571, 618, 618, 624, 624, 627, 812, 622, 622, 622, - - 622, 622, 622, 622, 626, 626, 813, 624, 624, 624, - 624, 624, 624, 814, 815, 571, 654, 816, 626, 626, - 626, 626, 626, 626, 626, 654, 709, 654, 654, 671, - 671, 819, 627, 820, 821, 709, 824, 709, 825, 672, - 672, 627, 826, 671, 671, 671, 671, 671, 671, 716, - 716, 827, 627, 672, 672, 672, 672, 672, 672, 672, - 718, 718, 828, 716, 716, 716, 716, 716, 716, 671, - 829, 830, 832, 833, 718, 718, 718, 718, 718, 718, - 718, 831, 834, 835, 836, 837, 840, 841, 831, 842, - 843, 844, 845, 846, 671, 847, 848, 849, 850, 851, - - 852, 855, 856, 857, 858, 859, 860, 861, 864, 865, - 857, 866, 868, 869, 870, 872, 873, 874, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 881, 890, 891, 892, 893, 894, 895, 896, 897, 898, - 900, 899, 901, 904, 905, 906, 907, 898, 899, 909, - 912, 913, 914, 856, 917, 916, 920, 921, 922, 913, - 914, 858, 916, 923, 925, 926, 928, 929, 930, 931, - 933, 934, 935, 926, 936, 929, 939, 940, 880, 941, - 942, 944, 936, 945, 946, 949, 950, 941, 942, 951, - 952, 953, 946, 950, 954, 955, 951, 956, 957, 964, - - 965, 780, 779, 778, 777, 956, 957, 776, 775, 774, - 773, 917, 772, 771, 770, 769, 768, 767, 766, 765, - 764, 762, 761, 928, 760, 759, 758, 756, 755, 754, - 753, 752, 751, 952, 953, 960, 960, 960, 960, 960, - 961, 961, 961, 961, 961, 962, 962, 962, 963, 963, - 963, 966, 966, 967, 750, 967, 967, 967, 968, 968, - 969, 969, 749, 748, 747, 745, 744, 743, 742, 741, - 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, - 729, 728, 727, 726, 725, 724, 723, 721, 720, 719, - 712, 711, 708, 706, 705, 704, 702, 701, 700, 699, - - 698, 697, 696, 695, 694, 693, 692, 691, 690, 687, - 686, 685, 684, 683, 682, 680, 679, 678, 677, 676, - 675, 674, 670, 668, 667, 666, 665, 664, 663, 662, - 661, 660, 659, 658, 657, 656, 655, 649, 647, 646, - 645, 644, 643, 639, 638, 637, 636, 635, 634, 633, - 632, 631, 629, 621, 620, 616, 615, 613, 612, 610, - 609, 608, 607, 606, 605, 604, 603, 599, 598, 597, - 595, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 582, 581, 576, 575, 574, 573, 570, 569, 568, - 566, 565, 563, 562, 561, 560, 559, 557, 556, 554, - - 553, 552, 551, 550, 549, 548, 547, 546, 544, 543, - 542, 541, 540, 536, 535, 534, 533, 532, 531, 528, - 527, 526, 525, 524, 523, 522, 520, 519, 518, 517, - 516, 515, 514, 512, 511, 508, 503, 502, 500, 499, - 498, 496, 495, 492, 491, 490, 489, 478, 477, 476, - 474, 473, 472, 471, 470, 467, 465, 464, 463, 461, - 460, 459, 458, 456, 455, 454, 453, 452, 450, 449, - 444, 443, 441, 440, 439, 438, 437, 436, 435, 434, - 433, 432, 431, 429, 428, 427, 426, 425, 424, 423, - 422, 420, 419, 418, 417, 416, 415, 414, 410, 406, - - 405, 404, 401, 399, 389, 387, 383, 382, 381, 380, - 378, 377, 375, 370, 369, 368, 365, 364, 363, 362, - 361, 360, 359, 354, 352, 351, 350, 349, 348, 346, - 345, 342, 341, 340, 339, 338, 337, 336, 335, 334, - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 312, - 310, 309, 308, 307, 306, 305, 304, 303, 301, 297, - 295, 294, 293, 292, 288, 287, 286, 285, 284, 283, - 282, 281, 280, 276, 274, 273, 272, 262, 261, 260, - 259, 258, 257, 256, 255, 253, 252, 251, 250, 249, - - 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, - 237, 236, 235, 234, 233, 232, 231, 229, 228, 227, - 226, 225, 224, 223, 222, 221, 220, 219, 217, 216, - 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, - 205, 204, 203, 202, 201, 199, 198, 197, 196, 195, - 194, 193, 192, 191, 190, 189, 188, 186, 185, 184, - 183, 181, 180, 179, 178, 177, 175, 160, 159, 158, - 157, 150, 149, 147, 146, 145, 141, 140, 139, 138, - 137, 134, 133, 132, 131, 130, 128, 127, 125, 123, - 122, 121, 119, 118, 117, 115, 114, 112, 111, 110, - - 109, 108, 107, 104, 103, 102, 101, 100, 99, 98, - 97, 95, 94, 93, 92, 91, 90, 88, 87, 83, - 79, 52, 38, 32, 22, 18, 14, 12, 11, 7, - 6, 5, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - - 959, 959, 959 + 367, 367, 400, 400, 400, 269, 412, 412, 412, 729, + 729, 367, 795, 400, 400, 413, 413, 413, 796, 469, + 469, 469, 513, 513, 513, 521, 538, 781, 781, 367, + 469, 469, 797, 513, 513, 538, 798, 538, 538, 521, + 521, 521, 521, 521, 521, 521, 555, 555, 555, 571, + 571, 799, 800, 801, 802, 572, 572, 555, 555, 803, + 555, 804, 805, 571, 571, 571, 571, 571, 571, 572, + 572, 572, 572, 572, 572, 572, 582, 615, 806, 596, + 596, 596, 620, 620, 620, 582, 615, 582, 615, 571, + 596, 596, 767, 620, 620, 629, 701, 807, 808, 809, + + 810, 624, 624, 811, 767, 701, 812, 701, 626, 626, + 813, 814, 815, 816, 571, 624, 624, 624, 624, 624, + 624, 624, 626, 626, 626, 626, 626, 626, 628, 628, + 817, 820, 629, 821, 822, 823, 824, 825, 826, 827, + 828, 629, 628, 628, 628, 628, 628, 628, 628, 660, + 679, 679, 629, 829, 832, 833, 680, 680, 660, 834, + 660, 660, 836, 837, 679, 679, 679, 679, 679, 679, + 680, 680, 680, 680, 680, 680, 680, 724, 731, 731, + 839, 840, 841, 842, 733, 733, 724, 843, 724, 844, + 679, 845, 731, 731, 731, 731, 731, 731, 733, 733, + + 733, 733, 733, 733, 733, 847, 848, 849, 850, 851, + 852, 855, 856, 857, 860, 679, 861, 862, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 877, 869, 878, 879, 882, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 893, 894, 895, 896, 899, + 900, 901, 902, 903, 906, 907, 910, 911, 901, 912, + 914, 915, 916, 918, 919, 920, 925, 926, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 929, 938, + 939, 940, 941, 942, 943, 944, 945, 946, 948, 947, + 949, 952, 953, 954, 955, 946, 947, 957, 960, 961, + + 962, 900, 965, 964, 968, 969, 970, 961, 962, 902, + 964, 971, 973, 974, 976, 977, 978, 979, 981, 982, + 983, 974, 984, 977, 987, 988, 928, 989, 990, 992, + 984, 993, 994, 997, 998, 989, 990, 999, 1000, 1001, + 994, 998, 1002, 1003, 999, 1004, 1005, 1012, 1013, 778, + 777, 776, 775, 1004, 1005, 774, 773, 772, 771, 965, + 770, 769, 768, 766, 765, 764, 763, 762, 761, 760, + 759, 976, 758, 757, 756, 755, 754, 753, 752, 751, + 749, 1000, 1001, 1008, 1008, 1008, 1008, 1008, 1009, 1009, + 1009, 1009, 1009, 1010, 1010, 1010, 1011, 1011, 1011, 1014, + + 1014, 1015, 747, 1015, 1015, 1015, 1016, 1016, 1017, 1017, + 746, 745, 744, 743, 742, 741, 740, 739, 738, 736, + 735, 734, 727, 726, 723, 722, 721, 720, 719, 718, + 717, 715, 714, 713, 712, 711, 710, 709, 708, 707, + 706, 705, 704, 703, 700, 699, 698, 697, 696, 695, + 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, + 684, 683, 682, 678, 676, 675, 674, 673, 672, 671, + 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, + 655, 653, 652, 651, 650, 649, 646, 645, 644, 643, + 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, + + 631, 623, 622, 618, 617, 614, 612, 611, 610, 609, + 608, 607, 606, 605, 601, 600, 599, 597, 595, 594, + 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, + 581, 576, 575, 574, 573, 570, 569, 568, 566, 565, + 563, 562, 561, 560, 559, 557, 556, 554, 553, 552, + 551, 550, 549, 548, 547, 546, 544, 543, 542, 541, + 540, 536, 535, 534, 533, 532, 531, 528, 527, 526, + 525, 524, 523, 522, 520, 519, 518, 517, 516, 515, + 514, 512, 511, 508, 503, 502, 500, 499, 498, 496, + 495, 492, 491, 490, 489, 478, 477, 476, 474, 473, + + 472, 471, 470, 467, 465, 464, 463, 461, 460, 459, + 458, 456, 455, 454, 453, 452, 450, 449, 444, 443, + 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, + 431, 429, 428, 427, 426, 425, 424, 423, 422, 420, + 419, 418, 417, 416, 415, 414, 410, 406, 405, 404, + 401, 399, 389, 387, 383, 382, 381, 380, 378, 377, + 375, 370, 369, 368, 365, 364, 363, 362, 361, 360, + 359, 354, 352, 351, 350, 349, 348, 346, 345, 342, + 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, + + 321, 320, 319, 318, 317, 316, 315, 312, 310, 309, + 308, 307, 306, 305, 304, 303, 301, 297, 295, 294, + 293, 292, 288, 287, 286, 285, 284, 283, 282, 281, + 280, 276, 274, 273, 272, 262, 261, 260, 259, 258, + 257, 256, 255, 253, 252, 251, 250, 249, 247, 246, + 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, + 235, 234, 233, 232, 231, 229, 228, 227, 226, 225, + 224, 223, 222, 221, 220, 219, 217, 216, 215, 214, + 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, + 203, 202, 201, 199, 198, 197, 196, 195, 194, 193, + + 192, 191, 190, 189, 188, 186, 185, 184, 183, 181, + 180, 179, 178, 177, 175, 160, 159, 158, 157, 150, + 149, 147, 146, 145, 141, 140, 139, 138, 137, 134, + 133, 132, 131, 130, 128, 127, 125, 123, 122, 121, + 119, 118, 117, 115, 114, 112, 111, 110, 109, 108, + 107, 104, 103, 102, 101, 100, 99, 98, 97, 95, + 94, 93, 92, 91, 90, 88, 87, 83, 79, 52, + 38, 32, 22, 18, 14, 12, 11, 7, 6, 5, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007 } ; /* The intent behind this definition is that it'll catch @@ -1105,8 +1134,9 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); do { \ yylloc->source = 0; \ yylloc->first_column = yycolumn + 1; \ - yylloc->first_line = yylineno + 1; \ + yylloc->first_line = yylloc->last_line = yylineno + 1; \ yycolumn += yyleng; \ + yylloc->last_column = yycolumn + 1; \ } while(0); #define YY_USER_INIT yylineno = 0; yycolumn = 0; @@ -1144,7 +1174,7 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); } else if (yyextra->is_version(reserved_glsl, \ reserved_glsl_es)) { \ _mesa_glsl_error(yylloc, yyextra, \ - "Illegal use of reserved word `%s'", yytext); \ + "illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ } else { \ yylval->identifier = strdup(yytext); \ @@ -1160,7 +1190,7 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); do { \ if (yyextra->is_version(0, 300)) { \ _mesa_glsl_error(yylloc, yyextra, \ - "Illegal use of reserved word `%s'", yytext); \ + "illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ } else { \ return token; \ @@ -1191,10 +1221,10 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, /* Note that signed 0xffffffff is valid, not out of range! */ if (state->is_version(130, 300)) { _mesa_glsl_error(lloc, state, - "Literal value `%s' out of range", text); + "literal value `%s' out of range", text); } else { _mesa_glsl_warning(lloc, state, - "Literal value `%s' out of range", text); + "literal value `%s' out of range", text); } } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) { /* Tries to catch unintentionally providing a negative value. @@ -1202,7 +1232,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, * want to warn for INT_MAX. */ _mesa_glsl_warning(lloc, state, - "Signed literal value `%s' is interpreted as %d", + "signed literal value `%s' is interpreted as %d", text, lval->n); } return is_uint ? UINTCONSTANT : INTCONSTANT; @@ -1212,7 +1242,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base) -#line 1216 "glsl_lexer.cpp" +#line 1246 "glsl_lexer.cpp" #define INITIAL 0 #define PP 1 @@ -1241,8 +1271,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - int yy_n_chars; - int yyleng_r; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -1299,7 +1329,7 @@ FILE *_mesa_glsl_lexer_get_out (yyscan_t yyscanner ); void _mesa_glsl_lexer_set_out (FILE * out_str ,yyscan_t yyscanner ); -int _mesa_glsl_lexer_get_leng (yyscan_t yyscanner ); +yy_size_t _mesa_glsl_lexer_get_leng (yyscan_t yyscanner ); char *_mesa_glsl_lexer_get_text (yyscan_t yyscanner ); @@ -1463,11 +1493,6 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 164 "glsl_lexer.ll" - - -#line 1470 "glsl_lexer.cpp" - yylval = yylval_param; yylloc = yylloc_param; @@ -1498,6 +1523,12 @@ YY_DECL _mesa_glsl_lexer__load_buffer_state(yyscanner ); } + { +#line 165 "glsl_lexer.ll" + + +#line 1531 "glsl_lexer.cpp" + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; @@ -1515,7 +1546,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -1524,13 +1555,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 959 ); + while ( yy_current_state != 1007 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1552,7 +1583,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 166 "glsl_lexer.ll" +#line 167 "glsl_lexer.ll" ; YY_BREAK /* Preprocessor tokens. */ @@ -1561,17 +1592,17 @@ case 2: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 169 "glsl_lexer.ll" +#line 170 "glsl_lexer.ll" ; YY_BREAK case 3: YY_RULE_SETUP -#line 170 "glsl_lexer.ll" +#line 171 "glsl_lexer.ll" { BEGIN PP; return VERSION_TOK; } YY_BREAK case 4: YY_RULE_SETUP -#line 171 "glsl_lexer.ll" +#line 172 "glsl_lexer.ll" { BEGIN PP; return EXTENSION; } YY_BREAK case 5: @@ -1579,7 +1610,7 @@ case 5: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 172 "glsl_lexer.ll" +#line 173 "glsl_lexer.ll" { /* Eat characters until the first digit is * encountered @@ -1601,7 +1632,7 @@ case 6: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 187 "glsl_lexer.ll" +#line 188 "glsl_lexer.ll" { /* Eat characters until the first digit is * encountered @@ -1619,7 +1650,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 201 "glsl_lexer.ll" +#line 202 "glsl_lexer.ll" { BEGIN PP; return PRAGMA_DEBUG_ON; @@ -1627,7 +1658,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 205 "glsl_lexer.ll" +#line 206 "glsl_lexer.ll" { BEGIN PP; return PRAGMA_DEBUG_OFF; @@ -1635,7 +1666,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 209 "glsl_lexer.ll" +#line 210 "glsl_lexer.ll" { BEGIN PP; return PRAGMA_OPTIMIZE_ON; @@ -1643,7 +1674,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 213 "glsl_lexer.ll" +#line 214 "glsl_lexer.ll" { BEGIN PP; return PRAGMA_OPTIMIZE_OFF; @@ -1651,7 +1682,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 217 "glsl_lexer.ll" +#line 218 "glsl_lexer.ll" { BEGIN PP; return PRAGMA_INVARIANT_ALL; @@ -1659,38 +1690,38 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 221 "glsl_lexer.ll" +#line 222 "glsl_lexer.ll" { BEGIN PRAGMA; } YY_BREAK case 13: /* rule 13 can match eol */ YY_RULE_SETUP -#line 223 "glsl_lexer.ll" +#line 224 "glsl_lexer.ll" { BEGIN 0; yylineno++; yycolumn = 0; } YY_BREAK case 14: YY_RULE_SETUP -#line 224 "glsl_lexer.ll" +#line 225 "glsl_lexer.ll" { } YY_BREAK case 15: YY_RULE_SETUP -#line 226 "glsl_lexer.ll" +#line 227 "glsl_lexer.ll" { } YY_BREAK case 16: YY_RULE_SETUP -#line 227 "glsl_lexer.ll" +#line 228 "glsl_lexer.ll" { } YY_BREAK case 17: YY_RULE_SETUP -#line 228 "glsl_lexer.ll" +#line 229 "glsl_lexer.ll" return COLON; YY_BREAK case 18: YY_RULE_SETUP -#line 229 "glsl_lexer.ll" +#line 230 "glsl_lexer.ll" { yylval->identifier = strdup(yytext); return IDENTIFIER; @@ -1698,7 +1729,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 233 "glsl_lexer.ll" +#line 234 "glsl_lexer.ll" { yylval->n = strtol(yytext, NULL, 10); return INTCONSTANT; @@ -1707,431 +1738,431 @@ YY_RULE_SETUP case 20: /* rule 20 can match eol */ YY_RULE_SETUP -#line 237 "glsl_lexer.ll" +#line 238 "glsl_lexer.ll" { BEGIN 0; yylineno++; yycolumn = 0; return EOL; } YY_BREAK case 21: /* rule 21 can match eol */ YY_RULE_SETUP -#line 239 "glsl_lexer.ll" +#line 240 "glsl_lexer.ll" { yylineno++; yycolumn = 0; } YY_BREAK case 22: YY_RULE_SETUP -#line 241 "glsl_lexer.ll" +#line 242 "glsl_lexer.ll" DEPRECATED_ES_KEYWORD(ATTRIBUTE); YY_BREAK case 23: YY_RULE_SETUP -#line 242 "glsl_lexer.ll" +#line 243 "glsl_lexer.ll" return CONST_TOK; YY_BREAK case 24: YY_RULE_SETUP -#line 243 "glsl_lexer.ll" +#line 244 "glsl_lexer.ll" return BOOL_TOK; YY_BREAK case 25: YY_RULE_SETUP -#line 244 "glsl_lexer.ll" +#line 245 "glsl_lexer.ll" return FLOAT_TOK; YY_BREAK case 26: YY_RULE_SETUP -#line 245 "glsl_lexer.ll" +#line 246 "glsl_lexer.ll" return INT_TOK; YY_BREAK case 27: YY_RULE_SETUP -#line 246 "glsl_lexer.ll" +#line 247 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, UINT_TOK); YY_BREAK case 28: YY_RULE_SETUP -#line 248 "glsl_lexer.ll" +#line 249 "glsl_lexer.ll" return BREAK; YY_BREAK case 29: YY_RULE_SETUP -#line 249 "glsl_lexer.ll" +#line 250 "glsl_lexer.ll" return CONTINUE; YY_BREAK case 30: YY_RULE_SETUP -#line 250 "glsl_lexer.ll" +#line 251 "glsl_lexer.ll" return DO; YY_BREAK case 31: YY_RULE_SETUP -#line 251 "glsl_lexer.ll" +#line 252 "glsl_lexer.ll" return WHILE; YY_BREAK case 32: YY_RULE_SETUP -#line 252 "glsl_lexer.ll" +#line 253 "glsl_lexer.ll" return ELSE; YY_BREAK case 33: YY_RULE_SETUP -#line 253 "glsl_lexer.ll" +#line 254 "glsl_lexer.ll" return FOR; YY_BREAK case 34: YY_RULE_SETUP -#line 254 "glsl_lexer.ll" +#line 255 "glsl_lexer.ll" return IF; YY_BREAK case 35: YY_RULE_SETUP -#line 255 "glsl_lexer.ll" +#line 256 "glsl_lexer.ll" return DISCARD; YY_BREAK case 36: YY_RULE_SETUP -#line 256 "glsl_lexer.ll" +#line 257 "glsl_lexer.ll" return RETURN; YY_BREAK case 37: YY_RULE_SETUP -#line 258 "glsl_lexer.ll" +#line 259 "glsl_lexer.ll" return BVEC2; YY_BREAK case 38: YY_RULE_SETUP -#line 259 "glsl_lexer.ll" +#line 260 "glsl_lexer.ll" return BVEC3; YY_BREAK case 39: YY_RULE_SETUP -#line 260 "glsl_lexer.ll" +#line 261 "glsl_lexer.ll" return BVEC4; YY_BREAK case 40: YY_RULE_SETUP -#line 261 "glsl_lexer.ll" +#line 262 "glsl_lexer.ll" return IVEC2; YY_BREAK case 41: YY_RULE_SETUP -#line 262 "glsl_lexer.ll" +#line 263 "glsl_lexer.ll" return IVEC3; YY_BREAK case 42: YY_RULE_SETUP -#line 263 "glsl_lexer.ll" +#line 264 "glsl_lexer.ll" return IVEC4; YY_BREAK case 43: YY_RULE_SETUP -#line 264 "glsl_lexer.ll" +#line 265 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, UVEC2); YY_BREAK case 44: YY_RULE_SETUP -#line 265 "glsl_lexer.ll" +#line 266 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, UVEC3); YY_BREAK case 45: YY_RULE_SETUP -#line 266 "glsl_lexer.ll" +#line 267 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, UVEC4); YY_BREAK case 46: YY_RULE_SETUP -#line 267 "glsl_lexer.ll" +#line 268 "glsl_lexer.ll" return VEC2; YY_BREAK case 47: YY_RULE_SETUP -#line 268 "glsl_lexer.ll" +#line 269 "glsl_lexer.ll" return VEC3; YY_BREAK case 48: YY_RULE_SETUP -#line 269 "glsl_lexer.ll" +#line 270 "glsl_lexer.ll" return VEC4; YY_BREAK case 49: YY_RULE_SETUP -#line 270 "glsl_lexer.ll" +#line 271 "glsl_lexer.ll" return MAT2X2; YY_BREAK case 50: YY_RULE_SETUP -#line 271 "glsl_lexer.ll" +#line 272 "glsl_lexer.ll" return MAT3X3; YY_BREAK case 51: YY_RULE_SETUP -#line 272 "glsl_lexer.ll" +#line 273 "glsl_lexer.ll" return MAT4X4; YY_BREAK case 52: YY_RULE_SETUP -#line 273 "glsl_lexer.ll" +#line 274 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT2X2); YY_BREAK case 53: YY_RULE_SETUP -#line 274 "glsl_lexer.ll" +#line 275 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT2X3); YY_BREAK case 54: YY_RULE_SETUP -#line 275 "glsl_lexer.ll" +#line 276 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT2X4); YY_BREAK case 55: YY_RULE_SETUP -#line 276 "glsl_lexer.ll" +#line 277 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT3X2); YY_BREAK case 56: YY_RULE_SETUP -#line 277 "glsl_lexer.ll" +#line 278 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT3X3); YY_BREAK case 57: YY_RULE_SETUP -#line 278 "glsl_lexer.ll" +#line 279 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT3X4); YY_BREAK case 58: YY_RULE_SETUP -#line 279 "glsl_lexer.ll" +#line 280 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT4X2); YY_BREAK case 59: YY_RULE_SETUP -#line 280 "glsl_lexer.ll" +#line 281 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT4X3); YY_BREAK case 60: YY_RULE_SETUP -#line 281 "glsl_lexer.ll" +#line 282 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, MAT4X4); YY_BREAK case 61: YY_RULE_SETUP -#line 283 "glsl_lexer.ll" +#line 284 "glsl_lexer.ll" return IN_TOK; YY_BREAK case 62: YY_RULE_SETUP -#line 284 "glsl_lexer.ll" +#line 285 "glsl_lexer.ll" return OUT_TOK; YY_BREAK case 63: YY_RULE_SETUP -#line 285 "glsl_lexer.ll" +#line 286 "glsl_lexer.ll" return INOUT_TOK; YY_BREAK case 64: YY_RULE_SETUP -#line 286 "glsl_lexer.ll" +#line 287 "glsl_lexer.ll" return UNIFORM; YY_BREAK case 65: YY_RULE_SETUP -#line 287 "glsl_lexer.ll" +#line 288 "glsl_lexer.ll" DEPRECATED_ES_KEYWORD(VARYING); YY_BREAK case 66: YY_RULE_SETUP -#line 288 "glsl_lexer.ll" +#line 289 "glsl_lexer.ll" KEYWORD(120, 300, 120, 300, CENTROID); YY_BREAK case 67: YY_RULE_SETUP -#line 289 "glsl_lexer.ll" +#line 290 "glsl_lexer.ll" KEYWORD(120, 100, 120, 100, INVARIANT); YY_BREAK case 68: YY_RULE_SETUP -#line 290 "glsl_lexer.ll" +#line 291 "glsl_lexer.ll" KEYWORD(130, 100, 130, 300, FLAT); YY_BREAK case 69: YY_RULE_SETUP -#line 291 "glsl_lexer.ll" +#line 292 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, SMOOTH); YY_BREAK case 70: YY_RULE_SETUP -#line 292 "glsl_lexer.ll" +#line 293 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, NOPERSPECTIVE); YY_BREAK case 71: YY_RULE_SETUP -#line 294 "glsl_lexer.ll" +#line 295 "glsl_lexer.ll" DEPRECATED_ES_KEYWORD(SAMPLER1D); YY_BREAK case 72: YY_RULE_SETUP -#line 295 "glsl_lexer.ll" +#line 296 "glsl_lexer.ll" return SAMPLER2D; YY_BREAK case 73: YY_RULE_SETUP -#line 296 "glsl_lexer.ll" +#line 297 "glsl_lexer.ll" return SAMPLER3D; YY_BREAK case 74: YY_RULE_SETUP -#line 297 "glsl_lexer.ll" +#line 298 "glsl_lexer.ll" return SAMPLERCUBE; YY_BREAK case 75: YY_RULE_SETUP -#line 298 "glsl_lexer.ll" +#line 299 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, SAMPLER1DARRAY); YY_BREAK case 76: YY_RULE_SETUP -#line 299 "glsl_lexer.ll" +#line 300 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, SAMPLER2DARRAY); YY_BREAK case 77: YY_RULE_SETUP -#line 300 "glsl_lexer.ll" +#line 301 "glsl_lexer.ll" DEPRECATED_ES_KEYWORD(SAMPLER1DSHADOW); YY_BREAK case 78: YY_RULE_SETUP -#line 301 "glsl_lexer.ll" +#line 302 "glsl_lexer.ll" return SAMPLER2DSHADOW; YY_BREAK case 79: YY_RULE_SETUP -#line 302 "glsl_lexer.ll" +#line 303 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, SAMPLERCUBESHADOW); YY_BREAK case 80: YY_RULE_SETUP -#line 303 "glsl_lexer.ll" +#line 304 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, SAMPLER1DARRAYSHADOW); YY_BREAK case 81: YY_RULE_SETUP -#line 304 "glsl_lexer.ll" +#line 305 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, SAMPLER2DARRAYSHADOW); YY_BREAK case 82: YY_RULE_SETUP -#line 305 "glsl_lexer.ll" +#line 306 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, ISAMPLER1D); YY_BREAK case 83: YY_RULE_SETUP -#line 306 "glsl_lexer.ll" +#line 307 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, ISAMPLER2D); YY_BREAK case 84: YY_RULE_SETUP -#line 307 "glsl_lexer.ll" +#line 308 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, ISAMPLER3D); YY_BREAK case 85: YY_RULE_SETUP -#line 308 "glsl_lexer.ll" +#line 309 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, ISAMPLERCUBE); YY_BREAK case 86: YY_RULE_SETUP -#line 309 "glsl_lexer.ll" +#line 310 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, ISAMPLER1DARRAY); YY_BREAK case 87: YY_RULE_SETUP -#line 310 "glsl_lexer.ll" +#line 311 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, ISAMPLER2DARRAY); YY_BREAK case 88: YY_RULE_SETUP -#line 311 "glsl_lexer.ll" +#line 312 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, USAMPLER1D); YY_BREAK case 89: YY_RULE_SETUP -#line 312 "glsl_lexer.ll" +#line 313 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, USAMPLER2D); YY_BREAK case 90: YY_RULE_SETUP -#line 313 "glsl_lexer.ll" +#line 314 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, USAMPLER3D); YY_BREAK case 91: YY_RULE_SETUP -#line 314 "glsl_lexer.ll" +#line 315 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, USAMPLERCUBE); YY_BREAK case 92: YY_RULE_SETUP -#line 315 "glsl_lexer.ll" +#line 316 "glsl_lexer.ll" KEYWORD(130, 300, 130, 0, USAMPLER1DARRAY); YY_BREAK case 93: YY_RULE_SETUP -#line 316 "glsl_lexer.ll" +#line 317 "glsl_lexer.ll" KEYWORD(130, 300, 130, 300, USAMPLER2DARRAY); YY_BREAK /* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */ /* these are reserved but not defined in GLSL 3.00 */ case 94: YY_RULE_SETUP -#line 320 "glsl_lexer.ll" +#line 321 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, SAMPLER2DMS); YY_BREAK case 95: YY_RULE_SETUP -#line 321 "glsl_lexer.ll" +#line 322 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMS); YY_BREAK case 96: YY_RULE_SETUP -#line 322 "glsl_lexer.ll" +#line 323 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, USAMPLER2DMS); YY_BREAK case 97: YY_RULE_SETUP -#line 323 "glsl_lexer.ll" +#line 324 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, SAMPLER2DMSARRAY); YY_BREAK case 98: YY_RULE_SETUP -#line 324 "glsl_lexer.ll" +#line 325 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMSARRAY); YY_BREAK case 99: YY_RULE_SETUP -#line 325 "glsl_lexer.ll" +#line 326 "glsl_lexer.ll" KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, USAMPLER2DMSARRAY); YY_BREAK /* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */ case 100: YY_RULE_SETUP -#line 328 "glsl_lexer.ll" +#line 329 "glsl_lexer.ll" KEYWORD_WITH_ALT(400, 0, 400, 0, yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAY); YY_BREAK case 101: YY_RULE_SETUP -#line 329 "glsl_lexer.ll" +#line 330 "glsl_lexer.ll" KEYWORD_WITH_ALT(400, 0, 400, 0, yyextra->ARB_texture_cube_map_array_enable, ISAMPLERCUBEARRAY); YY_BREAK case 102: YY_RULE_SETUP -#line 330 "glsl_lexer.ll" +#line 331 "glsl_lexer.ll" KEYWORD_WITH_ALT(400, 0, 400, 0, yyextra->ARB_texture_cube_map_array_enable, USAMPLERCUBEARRAY); YY_BREAK case 103: YY_RULE_SETUP -#line 331 "glsl_lexer.ll" +#line 332 "glsl_lexer.ll" KEYWORD_WITH_ALT(400, 0, 400, 0, yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAYSHADOW); YY_BREAK case 104: YY_RULE_SETUP -#line 333 "glsl_lexer.ll" +#line 334 "glsl_lexer.ll" { if (yyextra->OES_EGL_image_external_enable) return SAMPLEREXTERNALOES; @@ -2139,689 +2170,752 @@ YY_RULE_SETUP return IDENTIFIER; } YY_BREAK +/* keywords available with ARB_shader_image_load_store */ case 105: YY_RULE_SETUP -#line 341 "glsl_lexer.ll" -return STRUCT; +#line 342 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D); YY_BREAK case 106: YY_RULE_SETUP -#line 342 "glsl_lexer.ll" -return VOID_TOK; +#line 343 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D); YY_BREAK case 107: YY_RULE_SETUP #line 344 "glsl_lexer.ll" -{ - if ((yyextra->is_version(140, 300)) - || yyextra->AMD_conservative_depth_enable - || yyextra->ARB_conservative_depth_enable - || yyextra->ARB_explicit_attrib_location_enable - || yyextra->ARB_uniform_buffer_object_enable - || yyextra->ARB_fragment_coord_conventions_enable - || yyextra->ARB_shading_language_420pack_enable) { - return LAYOUT_TOK; - } else { - yylval->identifier = strdup(yytext); - return classify_identifier(yyextra, yytext); - } - } +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D); YY_BREAK case 108: YY_RULE_SETUP -#line 359 "glsl_lexer.ll" -return INC_OP; +#line 345 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT); YY_BREAK case 109: YY_RULE_SETUP -#line 360 "glsl_lexer.ll" -return DEC_OP; +#line 346 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE); YY_BREAK case 110: YY_RULE_SETUP -#line 361 "glsl_lexer.ll" -return LE_OP; +#line 347 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER); YY_BREAK case 111: YY_RULE_SETUP -#line 362 "glsl_lexer.ll" -return GE_OP; +#line 348 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); YY_BREAK case 112: YY_RULE_SETUP -#line 363 "glsl_lexer.ll" -return EQ_OP; +#line 349 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); YY_BREAK case 113: YY_RULE_SETUP -#line 364 "glsl_lexer.ll" -return NE_OP; +#line 350 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); YY_BREAK case 114: YY_RULE_SETUP -#line 365 "glsl_lexer.ll" -return AND_OP; +#line 351 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); YY_BREAK case 115: YY_RULE_SETUP -#line 366 "glsl_lexer.ll" -return OR_OP; +#line 352 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); YY_BREAK case 116: YY_RULE_SETUP -#line 367 "glsl_lexer.ll" -return XOR_OP; +#line 353 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); YY_BREAK case 117: YY_RULE_SETUP -#line 368 "glsl_lexer.ll" -return LEFT_OP; +#line 354 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D); YY_BREAK case 118: YY_RULE_SETUP -#line 369 "glsl_lexer.ll" -return RIGHT_OP; +#line 355 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D); YY_BREAK case 119: YY_RULE_SETUP -#line 371 "glsl_lexer.ll" -return MUL_ASSIGN; +#line 356 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT); YY_BREAK case 120: YY_RULE_SETUP -#line 372 "glsl_lexer.ll" -return DIV_ASSIGN; +#line 357 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE); YY_BREAK case 121: YY_RULE_SETUP -#line 373 "glsl_lexer.ll" -return ADD_ASSIGN; +#line 358 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER); YY_BREAK case 122: YY_RULE_SETUP -#line 374 "glsl_lexer.ll" -return MOD_ASSIGN; +#line 359 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); YY_BREAK case 123: YY_RULE_SETUP -#line 375 "glsl_lexer.ll" -return LEFT_ASSIGN; +#line 360 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); YY_BREAK case 124: YY_RULE_SETUP -#line 376 "glsl_lexer.ll" -return RIGHT_ASSIGN; +#line 361 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); YY_BREAK case 125: YY_RULE_SETUP -#line 377 "glsl_lexer.ll" -return AND_ASSIGN; +#line 362 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); YY_BREAK case 126: YY_RULE_SETUP -#line 378 "glsl_lexer.ll" -return XOR_ASSIGN; +#line 363 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); YY_BREAK case 127: YY_RULE_SETUP -#line 379 "glsl_lexer.ll" -return OR_ASSIGN; +#line 364 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); YY_BREAK case 128: YY_RULE_SETUP -#line 380 "glsl_lexer.ll" -return SUB_ASSIGN; +#line 365 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D); YY_BREAK case 129: YY_RULE_SETUP -#line 382 "glsl_lexer.ll" -{ - return LITERAL_INTEGER(10); - } +#line 366 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D); YY_BREAK case 130: YY_RULE_SETUP -#line 385 "glsl_lexer.ll" -{ - return LITERAL_INTEGER(16); - } +#line 367 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT); YY_BREAK case 131: YY_RULE_SETUP -#line 388 "glsl_lexer.ll" -{ - return LITERAL_INTEGER(8); - } +#line 368 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE); YY_BREAK case 132: YY_RULE_SETUP -#line 392 "glsl_lexer.ll" -{ - yylval->real = glsl_strtof(yytext, NULL); - return FLOATCONSTANT; - } +#line 369 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER); YY_BREAK case 133: YY_RULE_SETUP -#line 396 "glsl_lexer.ll" -{ - yylval->real = glsl_strtof(yytext, NULL); - return FLOATCONSTANT; - } +#line 370 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); YY_BREAK case 134: YY_RULE_SETUP -#line 400 "glsl_lexer.ll" -{ - yylval->real = glsl_strtof(yytext, NULL); - return FLOATCONSTANT; - } +#line 371 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); YY_BREAK case 135: YY_RULE_SETUP -#line 404 "glsl_lexer.ll" -{ - yylval->real = glsl_strtof(yytext, NULL); - return FLOATCONSTANT; - } +#line 372 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); YY_BREAK case 136: YY_RULE_SETUP -#line 408 "glsl_lexer.ll" -{ - yylval->real = glsl_strtof(yytext, NULL); - return FLOATCONSTANT; - } +#line 373 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); YY_BREAK case 137: YY_RULE_SETUP -#line 413 "glsl_lexer.ll" -{ - yylval->n = 1; - return BOOLCONSTANT; - } +#line 374 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); YY_BREAK case 138: YY_RULE_SETUP -#line 417 "glsl_lexer.ll" -{ - yylval->n = 0; - return BOOLCONSTANT; - } +#line 375 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); YY_BREAK -/* Reserved words in GLSL 1.10. */ case 139: YY_RULE_SETUP -#line 424 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, ASM); +#line 376 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); YY_BREAK case 140: YY_RULE_SETUP -#line 425 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, CLASS); +#line 377 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); YY_BREAK case 141: YY_RULE_SETUP -#line 426 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, UNION); +#line 378 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); YY_BREAK case 142: YY_RULE_SETUP -#line 427 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, ENUM); +#line 380 "glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT); YY_BREAK case 143: YY_RULE_SETUP -#line 428 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, TYPEDEF); +#line 381 "glsl_lexer.ll" +KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE); YY_BREAK case 144: YY_RULE_SETUP -#line 429 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, TEMPLATE); +#line 382 "glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT); YY_BREAK case 145: YY_RULE_SETUP -#line 430 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, THIS); +#line 383 "glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY); YY_BREAK case 146: YY_RULE_SETUP -#line 431 "glsl_lexer.ll" -KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); +#line 384 "glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY); YY_BREAK case 147: YY_RULE_SETUP -#line 432 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, GOTO); +#line 386 "glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); YY_BREAK case 148: YY_RULE_SETUP -#line 433 "glsl_lexer.ll" -KEYWORD(110, 100, 130, 300, SWITCH); +#line 388 "glsl_lexer.ll" +return STRUCT; YY_BREAK case 149: YY_RULE_SETUP -#line 434 "glsl_lexer.ll" -KEYWORD(110, 100, 130, 300, DEFAULT); +#line 389 "glsl_lexer.ll" +return VOID_TOK; YY_BREAK case 150: YY_RULE_SETUP -#line 435 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INLINE_TOK); +#line 391 "glsl_lexer.ll" +{ + if ((yyextra->is_version(140, 300)) + || yyextra->AMD_conservative_depth_enable + || yyextra->ARB_conservative_depth_enable + || yyextra->ARB_explicit_attrib_location_enable + || yyextra->has_separate_shader_objects() + || yyextra->ARB_uniform_buffer_object_enable + || yyextra->ARB_fragment_coord_conventions_enable + || yyextra->ARB_shading_language_420pack_enable + || yyextra->ARB_compute_shader_enable) { + return LAYOUT_TOK; + } else { + yylval->identifier = strdup(yytext); + return classify_identifier(yyextra, yytext); + } + } YY_BREAK case 151: YY_RULE_SETUP -#line 436 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, NOINLINE); +#line 408 "glsl_lexer.ll" +return INC_OP; YY_BREAK case 152: YY_RULE_SETUP -#line 437 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, VOLATILE); +#line 409 "glsl_lexer.ll" +return DEC_OP; YY_BREAK case 153: YY_RULE_SETUP -#line 438 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, PUBLIC_TOK); +#line 410 "glsl_lexer.ll" +return LE_OP; YY_BREAK case 154: YY_RULE_SETUP -#line 439 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, STATIC); +#line 411 "glsl_lexer.ll" +return GE_OP; YY_BREAK case 155: YY_RULE_SETUP -#line 440 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, EXTERN); +#line 412 "glsl_lexer.ll" +return EQ_OP; YY_BREAK case 156: YY_RULE_SETUP -#line 441 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, EXTERNAL); +#line 413 "glsl_lexer.ll" +return NE_OP; YY_BREAK case 157: YY_RULE_SETUP -#line 442 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INTERFACE); +#line 414 "glsl_lexer.ll" +return AND_OP; YY_BREAK case 158: YY_RULE_SETUP -#line 443 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, LONG_TOK); +#line 415 "glsl_lexer.ll" +return OR_OP; YY_BREAK case 159: YY_RULE_SETUP -#line 444 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SHORT_TOK); +#line 416 "glsl_lexer.ll" +return XOR_OP; YY_BREAK case 160: YY_RULE_SETUP -#line 445 "glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DOUBLE_TOK); +#line 417 "glsl_lexer.ll" +return LEFT_OP; YY_BREAK case 161: YY_RULE_SETUP -#line 446 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HALF); +#line 418 "glsl_lexer.ll" +return RIGHT_OP; YY_BREAK case 162: YY_RULE_SETUP -#line 447 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FIXED_TOK); +#line 420 "glsl_lexer.ll" +return MUL_ASSIGN; YY_BREAK case 163: YY_RULE_SETUP -#line 448 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, UNSIGNED); +#line 421 "glsl_lexer.ll" +return DIV_ASSIGN; YY_BREAK case 164: YY_RULE_SETUP -#line 449 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INPUT_TOK); +#line 422 "glsl_lexer.ll" +return ADD_ASSIGN; YY_BREAK case 165: YY_RULE_SETUP -#line 450 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, OUTPUT); +#line 423 "glsl_lexer.ll" +return MOD_ASSIGN; YY_BREAK case 166: YY_RULE_SETUP -#line 451 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC2); +#line 424 "glsl_lexer.ll" +return LEFT_ASSIGN; YY_BREAK case 167: YY_RULE_SETUP -#line 452 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC3); +#line 425 "glsl_lexer.ll" +return RIGHT_ASSIGN; YY_BREAK case 168: YY_RULE_SETUP -#line 453 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC4); +#line 426 "glsl_lexer.ll" +return AND_ASSIGN; YY_BREAK case 169: YY_RULE_SETUP -#line 454 "glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC2); +#line 427 "glsl_lexer.ll" +return XOR_ASSIGN; YY_BREAK case 170: YY_RULE_SETUP -#line 455 "glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC3); +#line 428 "glsl_lexer.ll" +return OR_ASSIGN; YY_BREAK case 171: YY_RULE_SETUP -#line 456 "glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC4); +#line 429 "glsl_lexer.ll" +return SUB_ASSIGN; YY_BREAK case 172: YY_RULE_SETUP -#line 457 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC2); +#line 431 "glsl_lexer.ll" +{ + return LITERAL_INTEGER(10); + } YY_BREAK case 173: YY_RULE_SETUP -#line 458 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC3); +#line 434 "glsl_lexer.ll" +{ + return LITERAL_INTEGER(16); + } YY_BREAK case 174: YY_RULE_SETUP -#line 459 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC4); +#line 437 "glsl_lexer.ll" +{ + return LITERAL_INTEGER(8); + } YY_BREAK case 175: YY_RULE_SETUP -#line 460 "glsl_lexer.ll" -DEPRECATED_ES_KEYWORD(SAMPLER2DRECT); +#line 441 "glsl_lexer.ll" +{ + yylval->real = glsl_strtof(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 176: YY_RULE_SETUP -#line 461 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SAMPLER3DRECT); +#line 445 "glsl_lexer.ll" +{ + yylval->real = glsl_strtof(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 177: YY_RULE_SETUP -#line 462 "glsl_lexer.ll" -DEPRECATED_ES_KEYWORD(SAMPLER2DRECTSHADOW); +#line 449 "glsl_lexer.ll" +{ + yylval->real = glsl_strtof(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 178: YY_RULE_SETUP -#line 463 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SIZEOF); +#line 453 "glsl_lexer.ll" +{ + yylval->real = glsl_strtof(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 179: YY_RULE_SETUP -#line 464 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, CAST); +#line 457 "glsl_lexer.ll" +{ + yylval->real = glsl_strtof(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 180: YY_RULE_SETUP -#line 465 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, NAMESPACE); +#line 462 "glsl_lexer.ll" +{ + yylval->n = 1; + return BOOLCONSTANT; + } YY_BREAK case 181: YY_RULE_SETUP #line 466 "glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, USING); +{ + yylval->n = 0; + return BOOLCONSTANT; + } YY_BREAK -/* Additional reserved words in GLSL 1.20. */ +/* Reserved words in GLSL 1.10. */ case 182: YY_RULE_SETUP -#line 469 "glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, LOWP); +#line 473 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, ASM); YY_BREAK case 183: YY_RULE_SETUP -#line 470 "glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, MEDIUMP); +#line 474 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, CLASS); YY_BREAK case 184: YY_RULE_SETUP -#line 471 "glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, HIGHP); +#line 475 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, UNION); YY_BREAK case 185: YY_RULE_SETUP -#line 472 "glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, PRECISION); +#line 476 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, ENUM); YY_BREAK -/* Additional reserved words in GLSL 1.30. */ case 186: YY_RULE_SETUP -#line 475 "glsl_lexer.ll" -KEYWORD(130, 300, 130, 300, CASE); +#line 477 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, TYPEDEF); YY_BREAK case 187: YY_RULE_SETUP -#line 476 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, COMMON); +#line 478 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, TEMPLATE); YY_BREAK case 188: YY_RULE_SETUP -#line 477 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, PARTITION); +#line 479 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, THIS); YY_BREAK case 189: YY_RULE_SETUP -#line 478 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, ACTIVE); +#line 480 "glsl_lexer.ll" +KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); YY_BREAK case 190: YY_RULE_SETUP -#line 479 "glsl_lexer.ll" -KEYWORD(130, 100, 0, 0, SUPERP); +#line 481 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, GOTO); YY_BREAK case 191: YY_RULE_SETUP -#line 480 "glsl_lexer.ll" -KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); +#line 482 "glsl_lexer.ll" +KEYWORD(110, 100, 130, 300, SWITCH); YY_BREAK case 192: YY_RULE_SETUP -#line 481 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, FILTER); +#line 483 "glsl_lexer.ll" +KEYWORD(110, 100, 130, 300, DEFAULT); YY_BREAK case 193: YY_RULE_SETUP -#line 482 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1D); +#line 484 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, INLINE_TOK); YY_BREAK case 194: YY_RULE_SETUP -#line 483 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2D); +#line 485 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, NOINLINE); YY_BREAK case 195: YY_RULE_SETUP -#line 484 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE3D); +#line 486 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, PUBLIC_TOK); YY_BREAK case 196: YY_RULE_SETUP -#line 485 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGECUBE); +#line 487 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, STATIC); YY_BREAK case 197: YY_RULE_SETUP -#line 486 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE1D); +#line 488 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, EXTERN); YY_BREAK case 198: YY_RULE_SETUP -#line 487 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE2D); +#line 489 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, EXTERNAL); YY_BREAK case 199: YY_RULE_SETUP -#line 488 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE3D); +#line 490 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, INTERFACE); YY_BREAK case 200: YY_RULE_SETUP -#line 489 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGECUBE); +#line 491 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, LONG_TOK); YY_BREAK case 201: YY_RULE_SETUP -#line 490 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE1D); +#line 492 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, SHORT_TOK); YY_BREAK case 202: YY_RULE_SETUP -#line 491 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE2D); +#line 493 "glsl_lexer.ll" +KEYWORD(110, 100, 400, 0, DOUBLE_TOK); YY_BREAK case 203: YY_RULE_SETUP -#line 492 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE3D); +#line 494 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, HALF); YY_BREAK case 204: YY_RULE_SETUP -#line 493 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGECUBE); +#line 495 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, FIXED_TOK); YY_BREAK case 205: YY_RULE_SETUP -#line 494 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DARRAY); +#line 496 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, UNSIGNED); YY_BREAK case 206: YY_RULE_SETUP -#line 495 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DARRAY); +#line 497 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, INPUT_TOK); YY_BREAK case 207: YY_RULE_SETUP -#line 496 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY); +#line 498 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, OUTPUT); YY_BREAK case 208: YY_RULE_SETUP -#line 497 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY); +#line 499 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, HVEC2); YY_BREAK case 209: YY_RULE_SETUP -#line 498 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY); +#line 500 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, HVEC3); YY_BREAK case 210: YY_RULE_SETUP -#line 499 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY); +#line 501 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, HVEC4); YY_BREAK case 211: YY_RULE_SETUP -#line 500 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); +#line 502 "glsl_lexer.ll" +KEYWORD(110, 100, 400, 0, DVEC2); YY_BREAK case 212: YY_RULE_SETUP -#line 501 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); +#line 503 "glsl_lexer.ll" +KEYWORD(110, 100, 400, 0, DVEC3); YY_BREAK case 213: YY_RULE_SETUP -#line 502 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); +#line 504 "glsl_lexer.ll" +KEYWORD(110, 100, 400, 0, DVEC4); YY_BREAK case 214: YY_RULE_SETUP -#line 503 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); +#line 505 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, FVEC2); YY_BREAK case 215: YY_RULE_SETUP -#line 504 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGEBUFFER); +#line 506 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, FVEC3); YY_BREAK case 216: YY_RULE_SETUP -#line 505 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGEBUFFER); +#line 507 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, FVEC4); YY_BREAK case 217: YY_RULE_SETUP -#line 506 "glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGEBUFFER); +#line 508 "glsl_lexer.ll" +DEPRECATED_ES_KEYWORD(SAMPLER2DRECT); YY_BREAK case 218: YY_RULE_SETUP -#line 507 "glsl_lexer.ll" -KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); +#line 509 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, SAMPLER3DRECT); YY_BREAK -/* Additional reserved words in GLSL 1.40 */ case 219: YY_RULE_SETUP #line 510 "glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, ISAMPLER2DRECT); +DEPRECATED_ES_KEYWORD(SAMPLER2DRECTSHADOW); YY_BREAK case 220: YY_RULE_SETUP #line 511 "glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, USAMPLER2DRECT); +KEYWORD(110, 100, 0, 0, SIZEOF); YY_BREAK case 221: YY_RULE_SETUP #line 512 "glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); +KEYWORD(110, 100, 0, 0, CAST); YY_BREAK case 222: YY_RULE_SETUP #line 513 "glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); +KEYWORD(110, 100, 0, 0, NAMESPACE); YY_BREAK -/* Additional reserved words in GLSL ES 3.00 */ case 223: YY_RULE_SETUP -#line 516 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, COHERENT); +#line 514 "glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, USING); YY_BREAK +/* Additional reserved words in GLSL 1.20. */ case 224: YY_RULE_SETUP #line 517 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, RESTRICT); +KEYWORD(120, 100, 130, 100, LOWP); YY_BREAK case 225: YY_RULE_SETUP #line 518 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, READONLY); +KEYWORD(120, 100, 130, 100, MEDIUMP); YY_BREAK case 226: YY_RULE_SETUP #line 519 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, WRITEONLY); +KEYWORD(120, 100, 130, 100, HIGHP); YY_BREAK case 227: YY_RULE_SETUP #line 520 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, RESOURCE); +KEYWORD(120, 100, 130, 100, PRECISION); YY_BREAK +/* Additional reserved words in GLSL 1.30. */ case 228: YY_RULE_SETUP -#line 521 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, ATOMIC_UINT); +#line 523 "glsl_lexer.ll" +KEYWORD(130, 300, 130, 300, CASE); YY_BREAK case 229: YY_RULE_SETUP -#line 522 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, PATCH); +#line 524 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, COMMON); YY_BREAK case 230: YY_RULE_SETUP -#line 523 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, SAMPLE); +#line 525 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, PARTITION); YY_BREAK case 231: YY_RULE_SETUP -#line 524 "glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, SUBROUTINE); +#line 526 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, ACTIVE); YY_BREAK case 232: YY_RULE_SETUP #line 527 "glsl_lexer.ll" +KEYWORD(130, 100, 0, 0, SUPERP); + YY_BREAK +case 233: +YY_RULE_SETUP +#line 528 "glsl_lexer.ll" +KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); + YY_BREAK +case 234: +YY_RULE_SETUP +#line 529 "glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, FILTER); + YY_BREAK +case 235: +YY_RULE_SETUP +#line 530 "glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); + YY_BREAK +/* Additional reserved words in GLSL 1.40 */ +case 236: +YY_RULE_SETUP +#line 533 "glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, ISAMPLER2DRECT); + YY_BREAK +case 237: +YY_RULE_SETUP +#line 534 "glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, USAMPLER2DRECT); + YY_BREAK +case 238: +YY_RULE_SETUP +#line 535 "glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); + YY_BREAK +case 239: +YY_RULE_SETUP +#line 536 "glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); + YY_BREAK +/* Additional reserved words in GLSL ES 3.00 */ +case 240: +YY_RULE_SETUP +#line 539 "glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, RESOURCE); + YY_BREAK +case 241: +YY_RULE_SETUP +#line 540 "glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, PATCH); + YY_BREAK +case 242: +YY_RULE_SETUP +#line 541 "glsl_lexer.ll" +KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); + YY_BREAK +case 243: +YY_RULE_SETUP +#line 542 "glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, SUBROUTINE); + YY_BREAK +case 244: +YY_RULE_SETUP +#line 545 "glsl_lexer.ll" { struct _mesa_glsl_parse_state *state = yyextra; void *ctx = state; @@ -2829,17 +2923,17 @@ YY_RULE_SETUP return classify_identifier(state, yytext); } YY_BREAK -case 233: +case 245: YY_RULE_SETUP -#line 534 "glsl_lexer.ll" +#line 552 "glsl_lexer.ll" { return yytext[0]; } YY_BREAK -case 234: +case 246: YY_RULE_SETUP -#line 536 "glsl_lexer.ll" +#line 554 "glsl_lexer.ll" ECHO; YY_BREAK -#line 2843 "glsl_lexer.cpp" +#line 2937 "glsl_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(PP): case YY_STATE_EOF(PRAGMA): @@ -2973,6 +3067,7 @@ case YY_STATE_EOF(PRAGMA): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of _mesa_glsl_lexer_lex */ /* yy_get_next_buffer - try to read in a new buffer @@ -3029,21 +3124,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3074,7 +3169,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); + yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } @@ -3137,7 +3232,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3166,12 +3261,13 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 959); + yy_is_jam = (yy_current_state == 1007); + (void)yyg; return yy_is_jam ? 0 : yy_current_state; } @@ -3200,7 +3296,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -3482,7 +3578,7 @@ void _mesa_glsl_lexer_pop_buffer_state (yyscan_t yyscanner) */ static void _mesa_glsl_lexer_ensure_buffer_stack (yyscan_t yyscanner) { - int num_to_alloc; + yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -3580,12 +3676,12 @@ YY_BUFFER_STATE _mesa_glsl_lexer__scan_string (yyconst char * yystr , yyscan_t y * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -3695,7 +3791,7 @@ FILE *_mesa_glsl_lexer_get_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int _mesa_glsl_lexer_get_leng (yyscan_t yyscanner) +yy_size_t _mesa_glsl_lexer_get_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -3731,7 +3827,7 @@ void _mesa_glsl_lexer_set_lineno (int line_number , yyscan_t yyscanner) /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "_mesa_glsl_lexer_set_lineno called with no buffer" , yyscanner); + YY_FATAL_ERROR( "_mesa_glsl_lexer_set_lineno called with no buffer" ); yylineno = line_number; } @@ -3746,7 +3842,7 @@ void _mesa_glsl_lexer_set_column (int column_no , yyscan_t yyscanner) /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "_mesa_glsl_lexer_set_column called with no buffer" , yyscanner); + YY_FATAL_ERROR( "_mesa_glsl_lexer_set_column called with no buffer" ); yycolumn = column_no; } @@ -3982,7 +4078,7 @@ void _mesa_glsl_lexer_free (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 536 "glsl_lexer.ll" +#line 553 "glsl_lexer.ll" diff --git a/dist/Mesa/src/glsl/glsl_lexer.ll b/dist/Mesa/src/glsl/glsl_lexer.ll index 3340c230b..760235127 100644 --- a/dist/Mesa/src/glsl/glsl_lexer.ll +++ b/dist/Mesa/src/glsl/glsl_lexer.ll @@ -38,8 +38,9 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); do { \ yylloc->source = 0; \ yylloc->first_column = yycolumn + 1; \ - yylloc->first_line = yylineno + 1; \ + yylloc->first_line = yylloc->last_line = yylineno + 1; \ yycolumn += yyleng; \ + yylloc->last_column = yycolumn + 1; \ } while(0); #define YY_USER_INIT yylineno = 0; yycolumn = 0; @@ -77,7 +78,7 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); } else if (yyextra->is_version(reserved_glsl, \ reserved_glsl_es)) { \ _mesa_glsl_error(yylloc, yyextra, \ - "Illegal use of reserved word `%s'", yytext); \ + "illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ } else { \ yylval->identifier = strdup(yytext); \ @@ -93,7 +94,7 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *); do { \ if (yyextra->is_version(0, 300)) { \ _mesa_glsl_error(yylloc, yyextra, \ - "Illegal use of reserved word `%s'", yytext); \ + "illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ } else { \ return token; \ @@ -124,10 +125,10 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, /* Note that signed 0xffffffff is valid, not out of range! */ if (state->is_version(130, 300)) { _mesa_glsl_error(lloc, state, - "Literal value `%s' out of range", text); + "literal value `%s' out of range", text); } else { _mesa_glsl_warning(lloc, state, - "Literal value `%s' out of range", text); + "literal value `%s' out of range", text); } } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) { /* Tries to catch unintentionally providing a negative value. @@ -135,7 +136,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, * want to warn for INT_MAX. */ _mesa_glsl_warning(lloc, state, - "Signed literal value `%s' is interpreted as %d", + "signed literal value `%s' is interpreted as %d", text, lval->n); } return is_uint ? UINTCONSTANT : INTCONSTANT; @@ -337,6 +338,52 @@ samplerExternalOES { return IDENTIFIER; } + /* keywords available with ARB_shader_image_load_store */ +image1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D); +image2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D); +image3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D); +image2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT); +imageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE); +imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER); +image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); +image2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); +imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); +image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); +image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); +iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); +iimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D); +iimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D); +iimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT); +iimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE); +iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER); +iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); +iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); +iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); +iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); +iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); +uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); +uimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D); +uimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D); +uimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT); +uimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE); +uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER); +uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); +uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); +uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); +uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); +uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); +image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); +image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); +image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); +image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); + +coherent KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT); +volatile KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE); +restrict KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT); +readonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY); +writeonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY); + +atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); struct return STRUCT; void return VOID_TOK; @@ -346,9 +393,11 @@ layout { || yyextra->AMD_conservative_depth_enable || yyextra->ARB_conservative_depth_enable || yyextra->ARB_explicit_attrib_location_enable + || yyextra->has_separate_shader_objects() || yyextra->ARB_uniform_buffer_object_enable || yyextra->ARB_fragment_coord_conventions_enable - || yyextra->ARB_shading_language_420pack_enable) { + || yyextra->ARB_shading_language_420pack_enable + || yyextra->ARB_compute_shader_enable) { return LAYOUT_TOK; } else { yylval->identifier = strdup(yytext); @@ -434,7 +483,6 @@ switch KEYWORD(110, 100, 130, 300, SWITCH); default KEYWORD(110, 100, 130, 300, DEFAULT); inline KEYWORD(110, 100, 0, 0, INLINE_TOK); noinline KEYWORD(110, 100, 0, 0, NOINLINE); -volatile KEYWORD(110, 100, 0, 0, VOLATILE); public KEYWORD(110, 100, 0, 0, PUBLIC_TOK); static KEYWORD(110, 100, 0, 0, STATIC); extern KEYWORD(110, 100, 0, 0, EXTERN); @@ -479,31 +527,6 @@ active KEYWORD(130, 300, 0, 0, ACTIVE); superp KEYWORD(130, 100, 0, 0, SUPERP); samplerBuffer KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); filter KEYWORD(130, 300, 0, 0, FILTER); -image1D KEYWORD(130, 300, 0, 0, IMAGE1D); -image2D KEYWORD(130, 300, 0, 0, IMAGE2D); -image3D KEYWORD(130, 300, 0, 0, IMAGE3D); -imageCube KEYWORD(130, 300, 0, 0, IMAGECUBE); -iimage1D KEYWORD(130, 300, 0, 0, IIMAGE1D); -iimage2D KEYWORD(130, 300, 0, 0, IIMAGE2D); -iimage3D KEYWORD(130, 300, 0, 0, IIMAGE3D); -iimageCube KEYWORD(130, 300, 0, 0, IIMAGECUBE); -uimage1D KEYWORD(130, 300, 0, 0, UIMAGE1D); -uimage2D KEYWORD(130, 300, 0, 0, UIMAGE2D); -uimage3D KEYWORD(130, 300, 0, 0, UIMAGE3D); -uimageCube KEYWORD(130, 300, 0, 0, UIMAGECUBE); -image1DArray KEYWORD(130, 300, 0, 0, IMAGE1DARRAY); -image2DArray KEYWORD(130, 300, 0, 0, IMAGE2DARRAY); -iimage1DArray KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY); -iimage2DArray KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY); -uimage1DArray KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY); -uimage2DArray KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY); -image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); -image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); -image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); -image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); -imageBuffer KEYWORD(130, 300, 0, 0, IMAGEBUFFER); -iimageBuffer KEYWORD(130, 300, 0, 0, IIMAGEBUFFER); -uimageBuffer KEYWORD(130, 300, 0, 0, UIMAGEBUFFER); row_major KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); /* Additional reserved words in GLSL 1.40 */ @@ -513,14 +536,9 @@ isamplerBuffer KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); /* Additional reserved words in GLSL ES 3.00 */ -coherent KEYWORD(0, 300, 0, 0, COHERENT); -restrict KEYWORD(0, 300, 0, 0, RESTRICT); -readonly KEYWORD(0, 300, 0, 0, READONLY); -writeonly KEYWORD(0, 300, 0, 0, WRITEONLY); resource KEYWORD(0, 300, 0, 0, RESOURCE); -atomic_uint KEYWORD(0, 300, 0, 0, ATOMIC_UINT); patch KEYWORD(0, 300, 0, 0, PATCH); -sample KEYWORD(0, 300, 0, 0, SAMPLE); +sample KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); subroutine KEYWORD(0, 300, 0, 0, SUBROUTINE); diff --git a/dist/Mesa/src/glsl/glsl_parser.cpp b/dist/Mesa/src/glsl/glsl_parser.cpp index 1ec6ae00f..940c82c0e 100644 --- a/dist/Mesa/src/glsl/glsl_parser.cpp +++ b/dist/Mesa/src/glsl/glsl_parser.cpp @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7.12-4996" +#define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -63,15 +63,12 @@ #define yyparse _mesa_glsl_parse #define yylex _mesa_glsl_lex #define yyerror _mesa_glsl_error -#define yylval _mesa_glsl_lval -#define yychar _mesa_glsl_char #define yydebug _mesa_glsl_debug #define yynerrs _mesa_glsl_nerrs -#define yylloc _mesa_glsl_lloc + /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 1 "glsl_parser.yy" +#line 1 "glsl_parser.yy" /* yacc.c:339 */ /* * Copyright © 2008, 2009 Intel Corporation @@ -118,14 +115,39 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) return _mesa_glsl_lexer_lex(val, loc, state->scanner); } -/* Line 371 of yacc.c */ -#line 123 "glsl_parser.cpp" +static bool match_layout_qualifier(const char *s1, const char *s2, + _mesa_glsl_parse_state *state) +{ + /* From the GLSL 1.50 spec, section 4.3.8 (Layout Qualifiers): + * + * "The tokens in any layout-qualifier-id-list ... are not case + * sensitive, unless explicitly noted otherwise." + * + * The text "unless explicitly noted otherwise" appears to be + * vacuous--no desktop GLSL spec (up through GLSL 4.40) notes + * otherwise. + * + * However, the GLSL ES 3.00 spec says, in section 4.3.8 (Layout + * Qualifiers): + * + * "As for other identifiers, they are case sensitive." + * + * So we need to do a case-sensitive or a case-insensitive match, + * depending on whether we are compiling for GLSL ES. + */ + if (state->es_shader) + return strcmp(s1, s2); + else + return strcasecmp(s1, s2); +} + +#line 145 "glsl_parser.cpp" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -141,7 +163,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) by #include "glsl_parser.h". */ #ifndef YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED # define YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -149,239 +171,250 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) extern int _mesa_glsl_debug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - ATTRIBUTE = 258, - CONST_TOK = 259, - BOOL_TOK = 260, - FLOAT_TOK = 261, - INT_TOK = 262, - UINT_TOK = 263, - BREAK = 264, - CONTINUE = 265, - DO = 266, - ELSE = 267, - FOR = 268, - IF = 269, - DISCARD = 270, - RETURN = 271, - SWITCH = 272, - CASE = 273, - DEFAULT = 274, - BVEC2 = 275, - BVEC3 = 276, - BVEC4 = 277, - IVEC2 = 278, - IVEC3 = 279, - IVEC4 = 280, - UVEC2 = 281, - UVEC3 = 282, - UVEC4 = 283, - VEC2 = 284, - VEC3 = 285, - VEC4 = 286, - CENTROID = 287, - IN_TOK = 288, - OUT_TOK = 289, - INOUT_TOK = 290, - UNIFORM = 291, - VARYING = 292, - NOPERSPECTIVE = 293, - FLAT = 294, - SMOOTH = 295, - MAT2X2 = 296, - MAT2X3 = 297, - MAT2X4 = 298, - MAT3X2 = 299, - MAT3X3 = 300, - MAT3X4 = 301, - MAT4X2 = 302, - MAT4X3 = 303, - MAT4X4 = 304, - SAMPLER1D = 305, - SAMPLER2D = 306, - SAMPLER3D = 307, - SAMPLERCUBE = 308, - SAMPLER1DSHADOW = 309, - SAMPLER2DSHADOW = 310, - SAMPLERCUBESHADOW = 311, - SAMPLER1DARRAY = 312, - SAMPLER2DARRAY = 313, - SAMPLER1DARRAYSHADOW = 314, - SAMPLER2DARRAYSHADOW = 315, - SAMPLERCUBEARRAY = 316, - SAMPLERCUBEARRAYSHADOW = 317, - ISAMPLER1D = 318, - ISAMPLER2D = 319, - ISAMPLER3D = 320, - ISAMPLERCUBE = 321, - ISAMPLER1DARRAY = 322, - ISAMPLER2DARRAY = 323, - ISAMPLERCUBEARRAY = 324, - USAMPLER1D = 325, - USAMPLER2D = 326, - USAMPLER3D = 327, - USAMPLERCUBE = 328, - USAMPLER1DARRAY = 329, - USAMPLER2DARRAY = 330, - USAMPLERCUBEARRAY = 331, - SAMPLER2DRECT = 332, - ISAMPLER2DRECT = 333, - USAMPLER2DRECT = 334, - SAMPLER2DRECTSHADOW = 335, - SAMPLERBUFFER = 336, - ISAMPLERBUFFER = 337, - USAMPLERBUFFER = 338, - SAMPLER2DMS = 339, - ISAMPLER2DMS = 340, - USAMPLER2DMS = 341, - SAMPLER2DMSARRAY = 342, - ISAMPLER2DMSARRAY = 343, - USAMPLER2DMSARRAY = 344, - SAMPLEREXTERNALOES = 345, - STRUCT = 346, - VOID_TOK = 347, - WHILE = 348, - IDENTIFIER = 349, - TYPE_IDENTIFIER = 350, - NEW_IDENTIFIER = 351, - FLOATCONSTANT = 352, - INTCONSTANT = 353, - UINTCONSTANT = 354, - BOOLCONSTANT = 355, - FIELD_SELECTION = 356, - LEFT_OP = 357, - RIGHT_OP = 358, - INC_OP = 359, - DEC_OP = 360, - LE_OP = 361, - GE_OP = 362, - EQ_OP = 363, - NE_OP = 364, - AND_OP = 365, - OR_OP = 366, - XOR_OP = 367, - MUL_ASSIGN = 368, - DIV_ASSIGN = 369, - ADD_ASSIGN = 370, - MOD_ASSIGN = 371, - LEFT_ASSIGN = 372, - RIGHT_ASSIGN = 373, - AND_ASSIGN = 374, - XOR_ASSIGN = 375, - OR_ASSIGN = 376, - SUB_ASSIGN = 377, - INVARIANT = 378, - LOWP = 379, - MEDIUMP = 380, - HIGHP = 381, - SUPERP = 382, - PRECISION = 383, - VERSION_TOK = 384, - EXTENSION = 385, - LINE = 386, - COLON = 387, - EOL = 388, - INTERFACE = 389, - OUTPUT = 390, - PRAGMA_DEBUG_ON = 391, - PRAGMA_DEBUG_OFF = 392, - PRAGMA_OPTIMIZE_ON = 393, - PRAGMA_OPTIMIZE_OFF = 394, - PRAGMA_INVARIANT_ALL = 395, - LAYOUT_TOK = 396, - ASM = 397, - CLASS = 398, - UNION = 399, - ENUM = 400, - TYPEDEF = 401, - TEMPLATE = 402, - THIS = 403, - PACKED_TOK = 404, - GOTO = 405, - INLINE_TOK = 406, - NOINLINE = 407, - VOLATILE = 408, - PUBLIC_TOK = 409, - STATIC = 410, - EXTERN = 411, - EXTERNAL = 412, - LONG_TOK = 413, - SHORT_TOK = 414, - DOUBLE_TOK = 415, - HALF = 416, - FIXED_TOK = 417, - UNSIGNED = 418, - INPUT_TOK = 419, - OUPTUT = 420, - HVEC2 = 421, - HVEC3 = 422, - HVEC4 = 423, - DVEC2 = 424, - DVEC3 = 425, - DVEC4 = 426, - FVEC2 = 427, - FVEC3 = 428, - FVEC4 = 429, - SAMPLER3DRECT = 430, - SIZEOF = 431, - CAST = 432, - NAMESPACE = 433, - USING = 434, - COHERENT = 435, - RESTRICT = 436, - READONLY = 437, - WRITEONLY = 438, - RESOURCE = 439, - ATOMIC_UINT = 440, - PATCH = 441, - SAMPLE = 442, - SUBROUTINE = 443, - ERROR_TOK = 444, - COMMON = 445, - PARTITION = 446, - ACTIVE = 447, - FILTER = 448, - IMAGE1D = 449, - IMAGE2D = 450, - IMAGE3D = 451, - IMAGECUBE = 452, - IMAGE1DARRAY = 453, - IMAGE2DARRAY = 454, - IIMAGE1D = 455, - IIMAGE2D = 456, - IIMAGE3D = 457, - IIMAGECUBE = 458, - IIMAGE1DARRAY = 459, - IIMAGE2DARRAY = 460, - UIMAGE1D = 461, - UIMAGE2D = 462, - UIMAGE3D = 463, - UIMAGECUBE = 464, - UIMAGE1DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGE1DSHADOW = 467, - IMAGE2DSHADOW = 468, - IMAGEBUFFER = 469, - IIMAGEBUFFER = 470, - UIMAGEBUFFER = 471, - IMAGE1DARRAYSHADOW = 472, - IMAGE2DARRAYSHADOW = 473, - ROW_MAJOR = 474, - THEN = 475 - }; + enum yytokentype + { + ATTRIBUTE = 258, + CONST_TOK = 259, + BOOL_TOK = 260, + FLOAT_TOK = 261, + INT_TOK = 262, + UINT_TOK = 263, + BREAK = 264, + CONTINUE = 265, + DO = 266, + ELSE = 267, + FOR = 268, + IF = 269, + DISCARD = 270, + RETURN = 271, + SWITCH = 272, + CASE = 273, + DEFAULT = 274, + BVEC2 = 275, + BVEC3 = 276, + BVEC4 = 277, + IVEC2 = 278, + IVEC3 = 279, + IVEC4 = 280, + UVEC2 = 281, + UVEC3 = 282, + UVEC4 = 283, + VEC2 = 284, + VEC3 = 285, + VEC4 = 286, + CENTROID = 287, + IN_TOK = 288, + OUT_TOK = 289, + INOUT_TOK = 290, + UNIFORM = 291, + VARYING = 292, + NOPERSPECTIVE = 293, + FLAT = 294, + SMOOTH = 295, + MAT2X2 = 296, + MAT2X3 = 297, + MAT2X4 = 298, + MAT3X2 = 299, + MAT3X3 = 300, + MAT3X4 = 301, + MAT4X2 = 302, + MAT4X3 = 303, + MAT4X4 = 304, + SAMPLER1D = 305, + SAMPLER2D = 306, + SAMPLER3D = 307, + SAMPLERCUBE = 308, + SAMPLER1DSHADOW = 309, + SAMPLER2DSHADOW = 310, + SAMPLERCUBESHADOW = 311, + SAMPLER1DARRAY = 312, + SAMPLER2DARRAY = 313, + SAMPLER1DARRAYSHADOW = 314, + SAMPLER2DARRAYSHADOW = 315, + SAMPLERCUBEARRAY = 316, + SAMPLERCUBEARRAYSHADOW = 317, + ISAMPLER1D = 318, + ISAMPLER2D = 319, + ISAMPLER3D = 320, + ISAMPLERCUBE = 321, + ISAMPLER1DARRAY = 322, + ISAMPLER2DARRAY = 323, + ISAMPLERCUBEARRAY = 324, + USAMPLER1D = 325, + USAMPLER2D = 326, + USAMPLER3D = 327, + USAMPLERCUBE = 328, + USAMPLER1DARRAY = 329, + USAMPLER2DARRAY = 330, + USAMPLERCUBEARRAY = 331, + SAMPLER2DRECT = 332, + ISAMPLER2DRECT = 333, + USAMPLER2DRECT = 334, + SAMPLER2DRECTSHADOW = 335, + SAMPLERBUFFER = 336, + ISAMPLERBUFFER = 337, + USAMPLERBUFFER = 338, + SAMPLER2DMS = 339, + ISAMPLER2DMS = 340, + USAMPLER2DMS = 341, + SAMPLER2DMSARRAY = 342, + ISAMPLER2DMSARRAY = 343, + USAMPLER2DMSARRAY = 344, + SAMPLEREXTERNALOES = 345, + IMAGE1D = 346, + IMAGE2D = 347, + IMAGE3D = 348, + IMAGE2DRECT = 349, + IMAGECUBE = 350, + IMAGEBUFFER = 351, + IMAGE1DARRAY = 352, + IMAGE2DARRAY = 353, + IMAGECUBEARRAY = 354, + IMAGE2DMS = 355, + IMAGE2DMSARRAY = 356, + IIMAGE1D = 357, + IIMAGE2D = 358, + IIMAGE3D = 359, + IIMAGE2DRECT = 360, + IIMAGECUBE = 361, + IIMAGEBUFFER = 362, + IIMAGE1DARRAY = 363, + IIMAGE2DARRAY = 364, + IIMAGECUBEARRAY = 365, + IIMAGE2DMS = 366, + IIMAGE2DMSARRAY = 367, + UIMAGE1D = 368, + UIMAGE2D = 369, + UIMAGE3D = 370, + UIMAGE2DRECT = 371, + UIMAGECUBE = 372, + UIMAGEBUFFER = 373, + UIMAGE1DARRAY = 374, + UIMAGE2DARRAY = 375, + UIMAGECUBEARRAY = 376, + UIMAGE2DMS = 377, + UIMAGE2DMSARRAY = 378, + IMAGE1DSHADOW = 379, + IMAGE2DSHADOW = 380, + IMAGE1DARRAYSHADOW = 381, + IMAGE2DARRAYSHADOW = 382, + COHERENT = 383, + VOLATILE = 384, + RESTRICT = 385, + READONLY = 386, + WRITEONLY = 387, + ATOMIC_UINT = 388, + STRUCT = 389, + VOID_TOK = 390, + WHILE = 391, + IDENTIFIER = 392, + TYPE_IDENTIFIER = 393, + NEW_IDENTIFIER = 394, + FLOATCONSTANT = 395, + INTCONSTANT = 396, + UINTCONSTANT = 397, + BOOLCONSTANT = 398, + FIELD_SELECTION = 399, + LEFT_OP = 400, + RIGHT_OP = 401, + INC_OP = 402, + DEC_OP = 403, + LE_OP = 404, + GE_OP = 405, + EQ_OP = 406, + NE_OP = 407, + AND_OP = 408, + OR_OP = 409, + XOR_OP = 410, + MUL_ASSIGN = 411, + DIV_ASSIGN = 412, + ADD_ASSIGN = 413, + MOD_ASSIGN = 414, + LEFT_ASSIGN = 415, + RIGHT_ASSIGN = 416, + AND_ASSIGN = 417, + XOR_ASSIGN = 418, + OR_ASSIGN = 419, + SUB_ASSIGN = 420, + INVARIANT = 421, + LOWP = 422, + MEDIUMP = 423, + HIGHP = 424, + SUPERP = 425, + PRECISION = 426, + VERSION_TOK = 427, + EXTENSION = 428, + LINE = 429, + COLON = 430, + EOL = 431, + INTERFACE = 432, + OUTPUT = 433, + PRAGMA_DEBUG_ON = 434, + PRAGMA_DEBUG_OFF = 435, + PRAGMA_OPTIMIZE_ON = 436, + PRAGMA_OPTIMIZE_OFF = 437, + PRAGMA_INVARIANT_ALL = 438, + LAYOUT_TOK = 439, + ASM = 440, + CLASS = 441, + UNION = 442, + ENUM = 443, + TYPEDEF = 444, + TEMPLATE = 445, + THIS = 446, + PACKED_TOK = 447, + GOTO = 448, + INLINE_TOK = 449, + NOINLINE = 450, + PUBLIC_TOK = 451, + STATIC = 452, + EXTERN = 453, + EXTERNAL = 454, + LONG_TOK = 455, + SHORT_TOK = 456, + DOUBLE_TOK = 457, + HALF = 458, + FIXED_TOK = 459, + UNSIGNED = 460, + INPUT_TOK = 461, + OUPTUT = 462, + HVEC2 = 463, + HVEC3 = 464, + HVEC4 = 465, + DVEC2 = 466, + DVEC3 = 467, + DVEC4 = 468, + FVEC2 = 469, + FVEC3 = 470, + FVEC4 = 471, + SAMPLER3DRECT = 472, + SIZEOF = 473, + CAST = 474, + NAMESPACE = 475, + USING = 476, + RESOURCE = 477, + PATCH = 478, + SAMPLE = 479, + SUBROUTINE = 480, + ERROR_TOK = 481, + COMMON = 482, + PARTITION = 483, + ACTIVE = 484, + FILTER = 485, + ROW_MAJOR = 486, + THEN = 487 + }; #endif - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE +typedef union YYSTYPE YYSTYPE; +union YYSTYPE { -/* Line 387 of yacc.c */ -#line 65 "glsl_parser.yy" +#line 91 "glsl_parser.yy" /* yacc.c:355 */ int n; float real; @@ -391,6 +424,7 @@ typedef union YYSTYPE ast_node *node; ast_type_specifier *type_specifier; + ast_array_specifier *array_specifier; ast_fully_specified_type *fully_specified_type; ast_function *function; ast_parameter_declarator *parameter_declarator; @@ -417,49 +451,35 @@ typedef union YYSTYPE ast_node *else_statement; } selection_rest_statement; - -/* Line 387 of yacc.c */ -#line 423 "glsl_parser.cpp" -} YYSTYPE; +#line 455 "glsl_parser.cpp" /* yacc.c:355 */ +}; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int _mesa_glsl_parse (void *YYPARSE_PARAM); -#else -int _mesa_glsl_parse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus + int _mesa_glsl_parse (struct _mesa_glsl_parse_state *state); -#else -int _mesa_glsl_parse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 463 "glsl_parser.cpp" +#line 483 "glsl_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -473,11 +493,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -497,8 +514,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -520,11 +536,30 @@ typedef short int yytype_int16; # endif #endif -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -535,24 +570,25 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -571,8 +607,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -584,8 +619,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -601,7 +636,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -609,15 +644,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -627,8 +660,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -654,16 +687,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -682,7 +715,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -690,40 +723,42 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3639 +#define YYLAST 5407 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 245 +#define YYNTOKENS 257 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 107 +#define YYNNTS 108 /* YYNRULES -- Number of rules. */ -#define YYNRULES 340 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 500 +#define YYNRULES 380 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 532 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 475 +#define YYMAXUTOK 487 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 229, 2, 2, 2, 233, 236, 2, - 221, 222, 231, 227, 226, 228, 225, 232, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 240, 242, - 234, 241, 235, 239, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 241, 2, 2, 2, 245, 248, 2, + 233, 234, 243, 239, 238, 240, 237, 244, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 252, 254, + 246, 253, 247, 251, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 223, 2, 224, 237, 2, 2, 2, 2, 2, + 2, 235, 2, 236, 249, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 243, 238, 244, 230, 2, 2, 2, + 2, 2, 2, 255, 250, 256, 242, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -758,190 +793,53 @@ static const yytype_uint8 yytranslate[] = 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220 + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 4, 9, 10, 14, 19, 22, 25, - 28, 31, 34, 35, 38, 40, 42, 44, 50, 52, - 55, 57, 59, 61, 63, 65, 67, 69, 73, 75, - 80, 82, 86, 89, 92, 94, 96, 98, 102, 105, - 108, 111, 113, 116, 120, 123, 125, 127, 129, 132, - 135, 138, 140, 143, 147, 150, 152, 155, 158, 161, - 163, 165, 167, 169, 171, 175, 179, 183, 185, 189, - 193, 195, 199, 203, 205, 209, 213, 217, 221, 223, - 227, 231, 233, 237, 239, 243, 245, 249, 251, 255, - 257, 261, 263, 267, 269, 275, 277, 281, 283, 285, - 287, 289, 291, 293, 295, 297, 299, 301, 303, 305, - 309, 311, 314, 317, 322, 324, 327, 329, 331, 334, - 338, 342, 345, 351, 354, 357, 358, 361, 364, 367, - 369, 371, 373, 375, 377, 381, 387, 394, 402, 411, - 417, 419, 422, 427, 433, 440, 448, 453, 456, 458, - 461, 466, 468, 472, 474, 476, 478, 482, 484, 486, - 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, - 509, 512, 515, 518, 521, 524, 526, 528, 530, 532, - 534, 536, 538, 540, 544, 549, 551, 553, 555, 557, - 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, - 579, 581, 583, 585, 587, 589, 591, 593, 595, 597, - 599, 601, 603, 605, 607, 609, 611, 613, 615, 617, - 619, 621, 623, 625, 627, 629, 631, 633, 635, 637, - 639, 641, 643, 645, 647, 649, 651, 653, 655, 657, - 659, 661, 663, 665, 667, 669, 671, 673, 675, 677, - 679, 681, 683, 685, 687, 689, 691, 693, 695, 701, - 706, 708, 711, 715, 717, 721, 723, 728, 730, 734, - 739, 741, 745, 747, 749, 751, 753, 755, 757, 759, - 761, 763, 766, 767, 772, 774, 776, 779, 783, 785, - 788, 790, 793, 799, 803, 805, 807, 812, 818, 821, - 825, 829, 832, 834, 837, 840, 843, 845, 848, 854, - 862, 869, 871, 873, 875, 876, 879, 883, 886, 889, - 892, 896, 899, 901, 903, 905, 907, 910, 912, 915, - 923, 925, 927, 929, 930, 932, 937, 941, 943, 946, - 950 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 246, 0, -1, -1, 248, 250, 247, 253, -1, -1, - 129, 98, 133, -1, 129, 98, 251, 133, -1, 136, - 133, -1, 137, 133, -1, 138, 133, -1, 139, 133, - -1, 140, 133, -1, -1, 250, 252, -1, 94, -1, - 95, -1, 96, -1, 130, 251, 132, 251, 133, -1, - 343, -1, 253, 343, -1, 94, -1, 96, -1, 254, - -1, 98, -1, 99, -1, 97, -1, 100, -1, 221, - 285, 222, -1, 255, -1, 256, 223, 257, 224, -1, - 258, -1, 256, 225, 251, -1, 256, 104, -1, 256, - 105, -1, 285, -1, 259, -1, 260, -1, 256, 225, - 265, -1, 262, 222, -1, 261, 222, -1, 263, 92, - -1, 263, -1, 263, 283, -1, 262, 226, 283, -1, - 264, 221, -1, 309, -1, 254, -1, 101, -1, 267, - 222, -1, 266, 222, -1, 268, 92, -1, 268, -1, - 268, 283, -1, 267, 226, 283, -1, 254, 221, -1, - 256, -1, 104, 269, -1, 105, 269, -1, 270, 269, - -1, 227, -1, 228, -1, 229, -1, 230, -1, 269, - -1, 271, 231, 269, -1, 271, 232, 269, -1, 271, - 233, 269, -1, 271, -1, 272, 227, 271, -1, 272, - 228, 271, -1, 272, -1, 273, 102, 272, -1, 273, - 103, 272, -1, 273, -1, 274, 234, 273, -1, 274, - 235, 273, -1, 274, 106, 273, -1, 274, 107, 273, - -1, 274, -1, 275, 108, 274, -1, 275, 109, 274, - -1, 275, -1, 276, 236, 275, -1, 276, -1, 277, - 237, 276, -1, 277, -1, 278, 238, 277, -1, 278, - -1, 279, 110, 278, -1, 279, -1, 280, 112, 279, - -1, 280, -1, 281, 111, 280, -1, 281, -1, 281, - 239, 285, 240, 283, -1, 282, -1, 269, 284, 283, - -1, 241, -1, 113, -1, 114, -1, 116, -1, 115, - -1, 122, -1, 117, -1, 118, -1, 119, -1, 120, - -1, 121, -1, 283, -1, 285, 226, 283, -1, 282, - -1, 288, 242, -1, 297, 242, -1, 128, 312, 309, - 242, -1, 345, -1, 289, 222, -1, 291, -1, 290, - -1, 291, 293, -1, 290, 226, 293, -1, 299, 254, - 221, -1, 309, 251, -1, 309, 251, 223, 286, 224, - -1, 294, 292, -1, 294, 296, -1, -1, 4, 294, - -1, 295, 294, -1, 312, 294, -1, 33, -1, 34, - -1, 35, -1, 309, -1, 298, -1, 297, 226, 251, - -1, 297, 226, 251, 223, 224, -1, 297, 226, 251, - 223, 286, 224, -1, 297, 226, 251, 223, 224, 241, - 318, -1, 297, 226, 251, 223, 286, 224, 241, 318, - -1, 297, 226, 251, 241, 318, -1, 299, -1, 299, - 251, -1, 299, 251, 223, 224, -1, 299, 251, 223, - 286, 224, -1, 299, 251, 223, 224, 241, 318, -1, - 299, 251, 223, 286, 224, 241, 318, -1, 299, 251, - 241, 318, -1, 123, 254, -1, 309, -1, 306, 309, - -1, 141, 221, 301, 222, -1, 303, -1, 301, 226, - 303, -1, 98, -1, 99, -1, 251, -1, 251, 241, - 302, -1, 304, -1, 219, -1, 149, -1, 40, -1, - 39, -1, 38, -1, 123, -1, 307, -1, 308, -1, - 305, -1, 300, -1, 312, -1, 123, 306, -1, 305, - 306, -1, 300, 306, -1, 307, 306, -1, 308, 306, - -1, 312, 306, -1, 32, -1, 4, -1, 3, -1, - 37, -1, 33, -1, 34, -1, 36, -1, 310, -1, - 310, 223, 224, -1, 310, 223, 286, 224, -1, 311, - -1, 313, -1, 95, -1, 92, -1, 6, -1, 7, - -1, 8, -1, 5, -1, 29, -1, 30, -1, 31, - -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, - -1, 25, -1, 26, -1, 27, -1, 28, -1, 41, - -1, 42, -1, 43, -1, 44, -1, 45, -1, 46, - -1, 47, -1, 48, -1, 49, -1, 50, -1, 51, - -1, 77, -1, 52, -1, 53, -1, 90, -1, 54, - -1, 55, -1, 80, -1, 56, -1, 57, -1, 58, - -1, 59, -1, 60, -1, 81, -1, 61, -1, 62, - -1, 63, -1, 64, -1, 78, -1, 65, -1, 66, - -1, 67, -1, 68, -1, 82, -1, 69, -1, 70, - -1, 71, -1, 79, -1, 72, -1, 73, -1, 74, - -1, 75, -1, 83, -1, 76, -1, 84, -1, 85, - -1, 86, -1, 87, -1, 88, -1, 89, -1, 126, - -1, 125, -1, 124, -1, 91, 251, 243, 314, 244, - -1, 91, 243, 314, 244, -1, 315, -1, 314, 315, - -1, 299, 316, 242, -1, 317, -1, 316, 226, 317, - -1, 251, -1, 251, 223, 286, 224, -1, 283, -1, - 243, 319, 244, -1, 243, 319, 226, 244, -1, 318, - -1, 319, 226, 318, -1, 287, -1, 323, -1, 322, - -1, 320, -1, 328, -1, 329, -1, 332, -1, 338, - -1, 342, -1, 243, 244, -1, -1, 243, 324, 327, - 244, -1, 326, -1, 322, -1, 243, 244, -1, 243, - 327, 244, -1, 321, -1, 327, 321, -1, 242, -1, - 285, 242, -1, 14, 221, 285, 222, 330, -1, 321, - 12, 321, -1, 321, -1, 285, -1, 299, 251, 241, - 318, -1, 17, 221, 285, 222, 333, -1, 243, 244, - -1, 243, 337, 244, -1, 18, 285, 240, -1, 19, - 240, -1, 334, -1, 335, 334, -1, 335, 321, -1, - 336, 321, -1, 336, -1, 337, 336, -1, 93, 221, - 331, 222, 325, -1, 11, 321, 93, 221, 285, 222, - 242, -1, 13, 221, 339, 341, 222, 325, -1, 328, - -1, 320, -1, 331, -1, -1, 340, 242, -1, 340, - 242, 285, -1, 10, 242, -1, 9, 242, -1, 16, - 242, -1, 16, 285, 242, -1, 15, 242, -1, 344, - -1, 287, -1, 249, -1, 351, -1, 288, 326, -1, - 346, -1, 300, 346, -1, 347, 96, 243, 349, 244, - 348, 242, -1, 33, -1, 34, -1, 36, -1, -1, - 96, -1, 96, 223, 286, 224, -1, 96, 223, 224, - -1, 350, -1, 350, 349, -1, 299, 316, 242, -1, - 300, 36, 242, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 263, 263, 262, 274, 276, 283, 293, 294, 295, - 296, 297, 310, 312, 316, 317, 318, 322, 331, 339, - 350, 351, 355, 362, 369, 376, 383, 390, 397, 398, - 404, 408, 415, 421, 430, 434, 438, 439, 448, 449, - 453, 454, 458, 464, 476, 480, 486, 493, 503, 504, - 508, 509, 513, 519, 531, 542, 543, 549, 555, 565, - 566, 567, 568, 572, 573, 579, 585, 594, 595, 601, - 610, 611, 617, 626, 627, 633, 639, 645, 654, 655, - 661, 670, 671, 680, 681, 690, 691, 700, 701, 710, - 711, 720, 721, 730, 731, 740, 741, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 764, 768, - 784, 788, 793, 797, 802, 809, 813, 814, 818, 823, - 831, 845, 855, 870, 875, 888, 891, 899, 911, 924, - 929, 934, 943, 947, 948, 958, 968, 978, 993, 1008, - 1026, 1033, 1042, 1051, 1060, 1074, 1088, 1100, 1114, 1121, - 1132, 1139, 1140, 1150, 1151, 1155, 1231, 1280, 1302, 1307, - 1315, 1320, 1325, 1334, 1339, 1340, 1341, 1342, 1343, 1361, - 1374, 1402, 1425, 1440, 1460, 1474, 1482, 1487, 1492, 1497, - 1502, 1507, 1515, 1516, 1522, 1531, 1537, 1543, 1552, 1553, - 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, - 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, - 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, - 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, - 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, - 1614, 1615, 1616, 1617, 1618, 1622, 1627, 1632, 1640, 1648, - 1657, 1662, 1670, 1689, 1694, 1702, 1708, 1717, 1718, 1722, - 1729, 1736, 1743, 1749, 1750, 1754, 1755, 1756, 1757, 1758, - 1759, 1763, 1770, 1769, 1783, 1784, 1788, 1794, 1803, 1813, - 1825, 1831, 1840, 1849, 1854, 1862, 1866, 1884, 1892, 1897, - 1905, 1910, 1918, 1926, 1934, 1942, 1950, 1958, 1966, 1973, - 1980, 1990, 1991, 1995, 1997, 2003, 2008, 2017, 2023, 2029, - 2035, 2041, 2050, 2051, 2052, 2053, 2057, 2071, 2075, 2086, - 2183, 2188, 2193, 2202, 2206, 2211, 2216, 2227, 2232, 2240, - 2264 + 0, 295, 295, 294, 306, 308, 315, 325, 326, 327, + 328, 329, 342, 344, 348, 349, 350, 354, 363, 371, + 382, 383, 387, 394, 401, 408, 415, 422, 429, 430, + 436, 440, 447, 453, 462, 466, 470, 471, 480, 481, + 485, 486, 490, 496, 508, 512, 518, 526, 537, 538, + 542, 543, 547, 553, 565, 577, 578, 584, 590, 600, + 601, 602, 603, 607, 608, 614, 620, 629, 630, 636, + 645, 646, 652, 661, 662, 668, 674, 680, 689, 690, + 696, 705, 706, 715, 716, 725, 726, 735, 736, 745, + 746, 755, 756, 765, 766, 775, 776, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 799, 803, + 819, 823, 828, 832, 837, 844, 848, 849, 853, 858, + 866, 880, 890, 904, 909, 923, 926, 934, 946, 959, + 964, 969, 978, 982, 983, 993, 1003, 1013, 1027, 1034, + 1044, 1054, 1064, 1074, 1089, 1096, 1107, 1114, 1115, 1125, + 1126, 1130, 1315, 1438, 1464, 1469, 1477, 1482, 1487, 1496, + 1501, 1502, 1503, 1504, 1505, 1523, 1536, 1564, 1587, 1602, + 1622, 1636, 1641, 1649, 1654, 1659, 1664, 1669, 1674, 1679, + 1684, 1689, 1695, 1700, 1708, 1714, 1720, 1734, 1749, 1750, + 1758, 1764, 1770, 1779, 1780, 1781, 1782, 1783, 1784, 1785, + 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, + 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, + 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, + 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, + 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, + 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, + 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, + 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, + 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, + 1876, 1877, 1878, 1879, 1883, 1888, 1893, 1901, 1908, 1917, + 1922, 1930, 1949, 1954, 1962, 1968, 1977, 1978, 1982, 1989, + 1996, 2003, 2009, 2010, 2014, 2015, 2016, 2017, 2018, 2019, + 2023, 2030, 2029, 2043, 2044, 2048, 2054, 2063, 2073, 2085, + 2091, 2100, 2109, 2114, 2122, 2126, 2144, 2152, 2157, 2165, + 2170, 2178, 2186, 2194, 2202, 2210, 2218, 2226, 2233, 2240, + 2250, 2251, 2255, 2257, 2263, 2268, 2277, 2283, 2289, 2295, + 2301, 2310, 2311, 2312, 2313, 2317, 2331, 2335, 2346, 2443, + 2448, 2453, 2462, 2466, 2472, 2481, 2486, 2494, 2518, 2526, + 2534 }; #endif @@ -968,31 +866,34 @@ static const char *const yytname[] = "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", - "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "STRUCT", "VOID_TOK", "WHILE", - "IDENTIFIER", "TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", - "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", - "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", - "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", - "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", - "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "LOWP", "MEDIUMP", - "HIGHP", "SUPERP", "PRECISION", "VERSION_TOK", "EXTENSION", "LINE", - "COLON", "EOL", "INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON", - "PRAGMA_DEBUG_OFF", "PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF", - "PRAGMA_INVARIANT_ALL", "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", - "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK", - "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL", - "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", "HALF", "FIXED_TOK", "UNSIGNED", - "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3", - "DVEC4", "FVEC2", "FVEC3", "FVEC4", "SAMPLER3DRECT", "SIZEOF", "CAST", - "NAMESPACE", "USING", "COHERENT", "RESTRICT", "READONLY", "WRITEONLY", - "RESOURCE", "ATOMIC_UINT", "PATCH", "SAMPLE", "SUBROUTINE", "ERROR_TOK", - "COMMON", "PARTITION", "ACTIVE", "FILTER", "IMAGE1D", "IMAGE2D", - "IMAGE3D", "IMAGECUBE", "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D", - "IIMAGE2D", "IIMAGE3D", "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY", - "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY", - "UIMAGE2DARRAY", "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER", - "IIMAGEBUFFER", "UIMAGEBUFFER", "IMAGE1DARRAYSHADOW", - "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "THEN", "'('", "')'", "'['", "']'", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "IMAGE1D", "IMAGE2D", + "IMAGE3D", "IMAGE2DRECT", "IMAGECUBE", "IMAGEBUFFER", "IMAGE1DARRAY", + "IMAGE2DARRAY", "IMAGECUBEARRAY", "IMAGE2DMS", "IMAGE2DMSARRAY", + "IIMAGE1D", "IIMAGE2D", "IIMAGE3D", "IIMAGE2DRECT", "IIMAGECUBE", + "IIMAGEBUFFER", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "IIMAGECUBEARRAY", + "IIMAGE2DMS", "IIMAGE2DMSARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", + "UIMAGE2DRECT", "UIMAGECUBE", "UIMAGEBUFFER", "UIMAGE1DARRAY", + "UIMAGE2DARRAY", "UIMAGECUBEARRAY", "UIMAGE2DMS", "UIMAGE2DMSARRAY", + "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGE1DARRAYSHADOW", + "IMAGE2DARRAYSHADOW", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "ATOMIC_UINT", "STRUCT", "VOID_TOK", "WHILE", "IDENTIFIER", + "TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", "INTCONSTANT", + "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", + "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", + "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "LOWP", "MEDIUMP", "HIGHP", + "SUPERP", "PRECISION", "VERSION_TOK", "EXTENSION", "LINE", "COLON", + "EOL", "INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF", + "PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL", + "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", + "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK", "NOINLINE", "PUBLIC_TOK", + "STATIC", "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", + "HALF", "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3", + "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4", + "SAMPLER3DRECT", "SIZEOF", "CAST", "NAMESPACE", "USING", "RESOURCE", + "PATCH", "SAMPLE", "SUBROUTINE", "ERROR_TOK", "COMMON", "PARTITION", + "ACTIVE", "FILTER", "ROW_MAJOR", "THEN", "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept", "translation_unit", "$@1", "version_statement", @@ -1020,7 +921,7 @@ static const char *const yytname[] = "integer_constant", "layout_qualifier_id", "interface_block_layout_qualifier", "interpolation_qualifier", "type_qualifier", "auxiliary_storage_qualifier", "storage_qualifier", - "type_specifier", "type_specifier_nonarray", + "array_specifier", "type_specifier", "type_specifier_nonarray", "basic_type_specifier_nonarray", "precision_qualifier", "struct_specifier", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", @@ -1034,13 +935,13 @@ static const char *const yytname[] = "conditionopt", "for_rest_statement", "jump_statement", "external_declaration", "function_definition", "interface_block", "basic_interface_block", "interface_qualifier", "instance_name_opt", - "member_list", "member_declaration", "layout_defaults", YY_NULL + "member_list", "member_declaration", "layout_defaults", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1065,405 +966,383 @@ static const yytype_uint16 yytoknum[] = 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 40, 41, 91, 93, 46, 44, 43, 45, 33, - 126, 42, 47, 37, 60, 62, 38, 94, 124, 63, - 58, 61, 59, 123, 125 + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 40, 41, 91, 93, 46, 44, 43, + 45, 33, 126, 42, 47, 37, 60, 62, 38, 94, + 124, 63, 58, 61, 59, 123, 125 }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 245, 247, 246, 248, 248, 248, 249, 249, 249, - 249, 249, 250, 250, 251, 251, 251, 252, 253, 253, - 254, 254, 255, 255, 255, 255, 255, 255, 256, 256, - 256, 256, 256, 256, 257, 258, 259, 259, 260, 260, - 261, 261, 262, 262, 263, 264, 264, 264, 265, 265, - 266, 266, 267, 267, 268, 269, 269, 269, 269, 270, - 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, - 273, 273, 273, 274, 274, 274, 274, 274, 275, 275, - 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, - 280, 281, 281, 282, 282, 283, 283, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 286, 287, 287, 287, 287, 288, 289, 289, 290, 290, - 291, 292, 292, 293, 293, 294, 294, 294, 294, 295, - 295, 295, 296, 297, 297, 297, 297, 297, 297, 297, - 298, 298, 298, 298, 298, 298, 298, 298, 299, 299, - 300, 301, 301, 302, 302, 303, 303, 303, 304, 304, - 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 307, 308, 308, 308, 308, - 308, 308, 309, 309, 309, 310, 310, 310, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 312, 312, 312, 313, 313, - 314, 314, 315, 316, 316, 317, 317, 318, 318, 318, - 319, 319, 320, 321, 321, 322, 322, 322, 322, 322, - 322, 323, 324, 323, 325, 325, 326, 326, 327, 327, - 328, 328, 329, 330, 330, 331, 331, 332, 333, 333, - 334, 334, 335, 335, 336, 336, 337, 337, 338, 338, - 338, 339, 339, 340, 340, 341, 341, 342, 342, 342, - 342, 342, 343, 343, 343, 343, 344, 345, 345, 346, - 347, 347, 347, 348, 348, 348, 348, 349, 349, 350, - 351 -}; +#define YYPACT_NINF -393 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-393))) + +#define YYTABLE_NINF -372 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 2, 0, 4, 0, 3, 4, 2, 2, 2, - 2, 2, 0, 2, 1, 1, 1, 5, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, - 1, 3, 2, 2, 1, 1, 1, 3, 2, 2, - 2, 1, 2, 3, 2, 1, 1, 1, 2, 2, - 2, 1, 2, 3, 2, 1, 2, 2, 2, 1, - 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, - 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 2, 2, 4, 1, 2, 1, 1, 2, 3, - 3, 2, 5, 2, 2, 0, 2, 2, 2, 1, - 1, 1, 1, 1, 3, 5, 6, 7, 8, 5, - 1, 2, 4, 5, 6, 7, 4, 2, 1, 2, - 4, 1, 3, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, - 1, 2, 3, 1, 3, 1, 4, 1, 3, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 4, 1, 1, 2, 3, 1, 2, - 1, 2, 5, 3, 1, 1, 4, 5, 2, 3, - 3, 2, 1, 2, 2, 2, 1, 2, 5, 7, - 6, 1, 1, 1, 0, 2, 3, 2, 2, 2, - 3, 2, 1, 1, 1, 1, 2, 1, 2, 7, - 1, 1, 1, 0, 1, 4, 3, 1, 2, 3, - 3 + -85, -88, 33, -393, -94, -393, -133, -393, -393, -393, + -393, -80, -75, 4754, -393, -393, -67, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, 12, 19, 36, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -115, -393, -393, 261, -393, -393, -393, 41, + -64, -48, 24, 29, 37, -51, -393, -393, 4754, -393, + -132, -41, -23, 1, -147, -393, 86, 35, 5064, 5269, + 5064, 5064, -393, -6, -393, 5064, -393, -393, -393, -393, + -393, 88, -393, -75, 4943, -24, -393, -393, -393, -393, + -393, 5064, -393, 5064, -393, 5269, -393, -393, -393, -393, + -393, -83, -393, -393, 517, -393, -393, 17, 17, -393, + -393, -393, -393, 5269, 17, 17, -75, -393, 10, 27, + -204, 38, -125, -121, -113, -393, -393, -393, -393, -393, + -393, 3639, 15, -393, 2, 69, -75, 1265, -393, 4943, + 22, -393, -393, 13, -148, -393, -393, 23, 25, 1999, + 45, 50, 31, 3176, 53, 54, -393, -393, -393, -393, + -393, 4085, 4085, 4085, -393, -393, -393, -393, -393, 34, + -393, 56, -393, -101, -393, -393, -393, 57, -145, 4308, + 63, 181, 4085, -3, -96, 42, -108, 66, 55, 60, + 52, 151, 152, -126, -393, -393, -140, -393, 59, 5083, + 77, -393, -393, -393, -393, 771, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -75, -393, -393, -187, 2953, + -175, -393, -393, -393, -393, -393, -393, -393, 75, -393, + 3862, 4943, -393, -6, -138, -393, -393, -393, 1502, -393, + 79, -393, -83, -393, -393, 176, 2492, 4085, -393, -393, + -127, 4085, 3416, -393, -393, -117, -393, 1999, -393, -393, + 4085, 86, -393, -393, 4085, 80, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, 4085, + -393, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, + 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, + 4085, 4085, -393, -393, -393, -6, 2953, -159, 2953, -393, + -393, 2953, -393, -393, 81, -75, 62, 4943, 15, -75, + -393, -393, -393, -393, -393, -393, 83, -393, -393, 3416, + -89, -393, -58, 82, -75, 85, -393, 1025, 90, 82, + -393, 89, -393, 87, -40, 4531, -393, -393, -393, -393, + -393, -3, -3, -96, -96, 42, 42, 42, 42, -108, + -108, 66, 55, 60, 52, 151, 152, -173, -393, 15, + -393, 2953, -393, -161, -393, -393, -112, 185, -393, -393, + 4085, -393, 73, 94, 1999, 76, 95, 2252, -393, -393, + -393, -393, -393, 4085, 96, -393, 4085, -393, 2730, -393, + -393, -6, 93, -39, 4085, 2252, 321, -393, -10, -393, + 2953, -393, -393, -393, -393, -393, -393, -393, 15, -393, + 98, 82, -393, 1999, 4085, 97, -393, -393, 1746, 1999, + -8, -393, -393, -393, -139, -393, -393, -393, -393, -393, + 1999, -393 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { 4, 0, 0, 12, 0, 1, 2, 14, 15, 16, - 5, 0, 0, 0, 13, 6, 0, 177, 176, 192, - 189, 190, 191, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 193, 194, 195, 175, 179, 180, 181, 178, - 162, 161, 160, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 217, 218, 220, 221, 223, 224, - 225, 226, 227, 229, 230, 231, 232, 234, 235, 236, - 237, 239, 240, 241, 243, 244, 245, 246, 248, 216, - 233, 242, 222, 228, 238, 247, 249, 250, 251, 252, - 253, 254, 219, 0, 188, 187, 163, 257, 256, 255, - 0, 0, 0, 0, 0, 0, 0, 324, 3, 323, - 0, 0, 117, 125, 0, 133, 140, 167, 166, 0, - 164, 165, 148, 182, 185, 168, 186, 18, 322, 114, - 327, 0, 325, 0, 0, 0, 179, 180, 181, 20, - 21, 163, 147, 167, 169, 0, 7, 8, 9, 10, - 11, 0, 19, 111, 0, 326, 115, 125, 125, 129, + 5, 0, 0, 0, 13, 6, 0, 174, 173, 197, + 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 198, 199, 200, 171, 176, 177, 178, 175, + 158, 157, 156, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 222, 223, 225, 226, 228, 229, + 230, 231, 232, 234, 235, 236, 237, 239, 240, 241, + 242, 244, 245, 246, 248, 249, 250, 251, 253, 221, + 238, 247, 227, 233, 243, 252, 254, 255, 256, 257, + 258, 259, 224, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 179, 180, 181, 182, + 183, 293, 0, 193, 192, 159, 296, 295, 294, 0, + 0, 0, 0, 0, 0, 0, 172, 363, 3, 362, + 0, 0, 117, 125, 0, 133, 138, 163, 162, 0, + 160, 161, 144, 188, 190, 164, 191, 18, 361, 114, + 366, 0, 364, 0, 0, 0, 176, 177, 178, 20, + 21, 159, 143, 163, 165, 0, 7, 8, 9, 10, + 11, 0, 19, 111, 0, 365, 115, 125, 125, 129, 130, 131, 118, 0, 125, 125, 0, 112, 14, 16, - 141, 0, 181, 171, 328, 170, 149, 172, 173, 0, - 174, 0, 0, 0, 0, 260, 0, 0, 159, 158, - 155, 0, 151, 157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 23, 24, 26, 47, 0, 0, - 0, 59, 60, 61, 62, 290, 282, 286, 22, 28, - 55, 30, 35, 36, 0, 0, 41, 0, 63, 0, - 67, 70, 73, 78, 81, 83, 85, 87, 89, 91, - 93, 95, 108, 0, 272, 0, 167, 148, 275, 288, - 274, 273, 0, 276, 277, 278, 279, 280, 119, 126, - 123, 124, 132, 127, 128, 134, 0, 0, 120, 340, - 183, 63, 110, 0, 45, 0, 17, 265, 0, 263, - 259, 261, 0, 113, 0, 150, 0, 318, 317, 0, - 0, 0, 321, 319, 0, 0, 0, 56, 57, 0, - 281, 0, 32, 33, 0, 0, 39, 38, 0, 188, - 42, 44, 98, 99, 101, 100, 103, 104, 105, 106, - 107, 102, 97, 0, 58, 0, 0, 0, 0, 0, + 139, 0, 176, 177, 178, 167, 367, 166, 145, 168, + 169, 0, 189, 170, 0, 0, 0, 0, 299, 0, + 0, 155, 154, 151, 0, 147, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 23, 24, 26, + 47, 0, 0, 0, 59, 60, 61, 62, 329, 321, + 325, 22, 28, 55, 30, 35, 36, 0, 0, 41, + 0, 63, 0, 67, 70, 73, 78, 81, 83, 85, + 87, 89, 91, 93, 95, 108, 0, 311, 0, 163, + 144, 314, 327, 313, 312, 0, 315, 316, 317, 318, + 319, 119, 126, 123, 124, 132, 127, 128, 134, 0, + 140, 120, 379, 380, 378, 184, 63, 110, 0, 45, + 0, 0, 17, 304, 0, 302, 298, 300, 0, 113, + 0, 146, 0, 357, 356, 0, 0, 0, 360, 358, + 0, 0, 0, 56, 57, 0, 320, 0, 32, 33, + 0, 0, 39, 38, 0, 193, 42, 44, 98, 99, + 101, 100, 103, 104, 105, 106, 107, 102, 97, 0, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 291, 287, 289, 121, - 0, 0, 142, 0, 0, 267, 146, 184, 0, 0, - 337, 0, 0, 262, 258, 153, 154, 156, 152, 0, - 312, 311, 314, 0, 320, 0, 295, 0, 0, 27, - 0, 0, 34, 31, 0, 37, 0, 0, 51, 43, - 96, 64, 65, 66, 68, 69, 71, 72, 76, 77, - 74, 75, 79, 80, 82, 84, 86, 88, 90, 92, - 0, 109, 0, 135, 0, 139, 0, 143, 270, 0, - 0, 333, 338, 0, 264, 0, 313, 0, 0, 0, - 0, 0, 0, 283, 29, 54, 49, 48, 0, 188, - 52, 0, 0, 0, 136, 144, 0, 0, 268, 339, - 334, 0, 266, 0, 315, 0, 294, 292, 0, 297, - 0, 285, 308, 284, 53, 94, 122, 137, 0, 145, - 269, 271, 0, 329, 0, 316, 310, 0, 0, 0, - 298, 302, 0, 306, 0, 296, 138, 336, 0, 309, - 293, 0, 301, 304, 303, 305, 299, 307, 335, 300 + 0, 0, 330, 326, 328, 121, 0, 135, 0, 306, + 142, 0, 185, 186, 0, 0, 0, 375, 305, 0, + 301, 297, 149, 150, 152, 148, 0, 351, 350, 353, + 0, 359, 0, 334, 0, 0, 27, 0, 0, 34, + 31, 0, 37, 0, 0, 51, 43, 96, 64, 65, + 66, 68, 69, 71, 72, 76, 77, 74, 75, 79, + 80, 82, 84, 86, 88, 90, 92, 0, 109, 122, + 137, 0, 309, 0, 141, 187, 0, 372, 376, 303, + 0, 352, 0, 0, 0, 0, 0, 0, 322, 29, + 54, 49, 48, 0, 193, 52, 0, 136, 0, 307, + 377, 373, 0, 0, 354, 0, 333, 331, 0, 336, + 0, 324, 347, 323, 53, 94, 308, 310, 374, 368, + 0, 355, 349, 0, 0, 0, 337, 341, 0, 345, + 0, 335, 348, 332, 0, 340, 343, 342, 344, 338, + 346, 339 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 2, 13, 3, 107, 6, 277, 14, 108, 218, - 219, 220, 381, 221, 222, 223, 224, 225, 226, 227, - 385, 386, 387, 388, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 323, - 243, 273, 244, 245, 111, 112, 113, 260, 162, 163, - 164, 261, 114, 115, 116, 143, 191, 367, 192, 193, - 118, 119, 120, 121, 274, 123, 124, 125, 126, 184, - 185, 278, 279, 356, 419, 248, 249, 250, 251, 301, - 462, 463, 252, 253, 254, 457, 378, 255, 459, 481, - 482, 483, 484, 256, 372, 427, 428, 257, 127, 128, - 129, 130, 131, 451, 359, 360, 132 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -401 -static const yytype_int16 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -110, -39, 82, -401, -21, -401, -22, -401, -401, -401, - -401, -23, -5, 3372, -401, -401, -16, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, 23, 34, 50, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -71, -401, -401, 289, -401, -401, -401, - 134, 5, 15, 36, 41, 43, -43, -401, 3372, -401, - -61, -38, -36, 2, -197, -401, 170, 215, 312, 835, - 312, 312, -401, -6, -401, 312, -401, -401, -401, -401, - -401, 129, -401, -5, 3498, -10, -401, -401, -401, -401, - -401, 312, -401, 312, -401, 835, -401, -401, -401, -401, - -401, -42, -401, -401, 484, -401, -401, 37, 37, -401, - -401, -401, -401, 835, 37, 37, -5, -401, 6, 7, - -190, 9, -95, -401, -401, -401, -401, -401, -401, 2511, - -401, -3, 105, -5, 1095, -401, 3498, 3, -401, -401, - 26, -142, -401, -401, 8, 14, 1589, 47, 49, 29, - 2393, 55, 59, -401, -401, -401, -401, -401, 1939, 1939, - 1939, -401, -401, -401, -401, -401, 0, -401, 60, -401, - -83, -401, -401, -401, 62, -121, 3144, 65, 360, 1939, - 42, -171, 57, -80, 56, 53, 58, 40, 188, 187, - -81, -401, -401, -165, -401, 63, 583, 80, -401, -401, - -401, -401, 726, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -5, -401, -401, -177, 2832, 2285, -401, -401, - -401, -401, -401, 83, -401, 3498, -401, 81, -159, -401, - -401, -401, 1219, -401, 94, -401, -42, -401, -401, 216, - 2058, 1939, -401, -401, -157, 1939, 2621, -401, -401, -113, - -401, 1589, -401, -401, 1939, 170, -401, -401, 1939, 86, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, 1939, -401, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, -401, -401, -401, 87, - 2933, 2285, 71, 89, 2285, -401, -401, -401, -5, 70, - 3498, 1939, -5, -401, -401, -401, -401, -401, -401, 97, - -401, -401, 2621, -104, -401, -97, 93, -5, 98, -401, - 968, 100, 93, -401, 110, -401, 111, -91, 3254, -401, - -401, -401, -401, -401, 42, 42, -171, -171, 57, 57, - 57, 57, -80, -80, 56, 53, 58, 40, 188, 187, - -178, -401, 1939, 91, 112, -401, 2285, 102, -401, -176, - -150, 238, -401, 130, -401, 1939, -401, 113, 131, 1589, - 92, 116, 1830, -401, -401, -401, -401, -401, 1939, 136, - -401, 1939, 137, 2285, 119, -401, 2285, 2167, -401, -401, - 139, 121, -401, -69, 1939, 1830, 352, -401, -15, -401, - 2285, -401, -401, -401, -401, -401, -401, -401, 2285, -401, - -401, -401, 3043, -401, 124, 93, -401, 1589, 1939, 128, - -401, -401, 1348, 1589, -7, -401, -401, -401, 146, -401, - -401, -140, -401, -401, -401, -401, -401, 1589, -401, -401 + -393, -393, -393, -393, -393, -393, 0, -393, -393, -119, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -14, -393, -141, -124, -111, -110, + -49, -35, -33, -32, -34, -12, -393, -196, -239, -393, + -240, 61, 6, 7, -393, -393, -393, -393, 159, -27, + -393, -393, -393, -393, -168, -11, -393, -393, 44, -393, + -393, -77, -393, -393, -203, -13, -393, -393, 58, -393, + 149, -210, -26, -29, -369, -393, 46, -238, -392, -393, + -393, -109, 233, 40, 48, -393, -393, -31, -393, -393, + -123, -393, -135, -393, -393, -393, -393, -393, -393, 248, + -393, -393, -142, -393, -393, -5, -393, -393 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -401, -401, -401, -401, -401, -401, 1, -401, -401, -82, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -130, -401, -114, -109, -146, -101, - 33, 38, 32, 35, 44, 30, -401, -170, -51, -401, - -193, -246, 25, 31, -401, -401, -401, -401, 222, -77, - -401, -401, -401, -401, -126, -11, -401, -401, 103, -401, - -401, -78, -401, -401, -13, -401, -401, 217, -401, 194, - -168, 39, 22, -323, -401, 101, -186, -400, -401, -401, - -67, 283, 99, 104, -401, -401, 27, -401, -401, -84, - -401, -79, -401, -401, -401, -401, -401, -401, 293, -401, - -401, -102, -401, -401, 46, -401, -401 + -1, 2, 13, 3, 147, 6, 323, 14, 148, 261, + 262, 263, 428, 264, 265, 266, 267, 268, 269, 270, + 432, 433, 434, 435, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 369, + 286, 318, 287, 288, 151, 152, 153, 303, 202, 203, + 204, 304, 154, 155, 156, 183, 234, 414, 235, 236, + 158, 159, 160, 161, 222, 319, 163, 164, 165, 166, + 227, 228, 324, 325, 400, 463, 291, 292, 293, 294, + 347, 502, 503, 295, 296, 297, 497, 425, 298, 499, + 517, 518, 519, 520, 299, 419, 472, 473, 300, 167, + 168, 169, 170, 171, 492, 406, 407, 172 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -333 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 122, -332, 117, 478, 479, 11, 158, 294, 183, 272, - 289, 478, 479, 16, 142, 174, 281, 299, 144, 1, - 353, 302, 303, 7, 8, 9, 332, 333, 415, 166, - 343, 418, 461, 266, 171, 159, 160, 161, 109, 173, - 175, 158, 177, 178, 110, 167, 350, 180, 345, 271, - 447, 267, 7, 8, 9, 461, 328, 329, 183, 4, - 183, 345, 441, 144, 351, 173, 348, 362, 448, 345, - 159, 160, 161, 7, 8, 9, 362, 346, 297, 298, - 285, 259, 5, 363, 286, 374, 345, 263, 264, 7, - 8, 9, 449, 445, 135, 122, 272, 117, 373, 324, - 499, 307, 375, 376, 414, 308, 176, 188, 12, 379, - 15, 382, 10, 345, 281, 423, 133, 170, 429, -330, - 467, 122, 345, 469, 471, 430, 97, 98, 99, 345, - -331, 437, 187, 109, 182, 438, 271, 485, 146, 110, - 304, 247, 305, 246, 174, 486, -332, 269, 147, 358, - 262, 410, 190, 474, 334, 335, 183, 345, 344, 330, - 331, 97, 98, 99, 336, 337, 442, 265, 173, 148, - 377, 122, 134, 122, 149, 310, 150, 189, 151, 376, - 272, 153, 154, 247, 156, 246, 398, 399, 400, 401, - 157, 272, 365, 366, 348, 391, 392, 393, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 394, 395, 355, 179, 17, 18, - 271, 396, 397, 384, -116, 181, 488, -20, -21, 480, - 268, 271, 453, 186, 358, 402, 403, 496, 276, 247, - 275, 246, 272, 456, 300, 283, 377, 35, 36, 37, - 287, 172, 39, 40, 41, 42, 288, 389, 97, 98, - 99, 475, 122, 349, 168, 8, 169, 284, 290, 122, - 291, 292, 390, 325, 326, 327, 295, 247, 340, 246, - 296, -46, 271, 247, 306, 491, 311, 190, 247, 338, - 246, 490, 17, 18, 411, 339, 493, 495, 341, 342, - 355, -45, 272, 355, 361, 153, 383, 357, -40, 369, - 412, 495, 416, 417, 421, 17, 18, 145, 425, 345, - 432, 35, 136, 137, 434, 138, 39, 40, 41, 42, - 165, 435, 443, 436, 450, 458, 444, 440, 141, 97, - 98, 99, 271, 446, 35, 136, 137, 122, 138, 39, - 40, 41, 42, 455, 452, 454, 106, 460, -50, 247, - 468, 466, 472, 473, 477, 355, 489, 247, 492, 246, - 498, 404, 406, 409, 165, 165, 407, 405, 431, 258, - 282, 165, 165, 139, 424, 140, 408, 464, 476, 368, - 465, 370, 355, 155, 371, 355, 355, 420, 494, 426, - 380, 152, 0, 0, 0, 497, 422, 0, 0, 355, - 0, 0, 141, 97, 98, 99, 247, 355, 246, 247, - 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 141, 97, 98, 99, 0, - 0, 0, 247, 0, 246, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 247, 0, 246, 0, 0, 247, - 247, 246, 246, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 247, 0, 246, 17, 18, 19, - 20, 21, 22, 194, 195, 196, 0, 197, 198, 199, - 200, 201, 0, 0, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 202, 139, 95, - 140, 203, 204, 205, 206, 207, 17, 18, 208, 209, + 162, 335, 157, 340, 11, 198, 226, 310, 514, 515, + 514, 515, 16, 345, -369, 216, 182, 327, -370, 149, + 150, 198, 7, 8, 9, 317, -371, 460, 389, 462, + 356, 221, 464, 5, 199, 200, 201, 211, 17, 18, + 12, 378, 379, 7, 8, 9, 348, 349, 221, 309, + 199, 200, 201, 4, 7, 8, 9, 394, 184, 226, + 320, 226, 7, 8, 9, 391, 396, 35, 212, 213, + 399, 214, 39, 40, 41, 42, 320, 488, 401, 486, + 215, 217, 10, 219, 220, 501, 331, 1, 223, 353, + 332, 206, 487, 354, 461, 489, 15, 420, 391, 391, + 409, 422, 423, 501, 184, 397, 215, 207, 173, 231, + 429, 391, 186, 531, 392, 436, 410, 426, 327, 507, + 408, 391, 193, 194, 317, 390, 409, 421, 187, 312, + 437, 521, 175, 313, 350, 162, 351, 157, 380, 381, + 174, 314, 490, 374, 375, 474, 218, 216, 232, 391, + 457, -369, 458, 405, 149, 150, 210, 399, -370, 399, + 226, 162, 399, 126, 127, 128, 129, 130, 136, 137, + 138, 302, 230, 225, 424, -371, 475, 306, 307, 423, + 391, 290, 191, 289, 136, 137, 138, 376, 377, 394, + 305, 233, 459, 196, 482, 510, 485, 185, 483, 391, + 188, 181, 136, 137, 138, 189, 308, 316, 136, 137, + 138, 205, 215, 190, 162, 197, 162, 382, 383, 145, + 412, 413, 399, 208, 8, 209, 290, 224, 289, 221, + 493, 229, 431, 441, 442, -116, 496, 343, 344, 405, + 371, 372, 373, -20, 504, 322, 516, 505, 529, 399, + 320, 424, 443, 444, 511, 205, 205, 321, 370, 146, + -21, 399, 205, 205, 17, 18, 330, 445, 446, 447, + 448, 311, 449, 450, 524, 523, 329, 333, 336, 334, + 526, 528, 290, 337, 289, 338, 341, 342, 508, -46, + 346, 352, 528, 35, 176, 177, 357, 178, 39, 40, + 41, 42, 386, 384, 387, 395, 316, 388, 162, 385, + -45, 402, 416, 193, -40, 162, 470, 465, 467, 477, + 391, 481, 480, 290, 491, 289, 479, 494, 495, 290, + -50, 498, 233, 513, 290, 451, 289, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 509, 500, 525, + 452, 430, 522, 453, 455, 454, 301, 438, 439, 440, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 415, 456, 328, 466, + 469, 404, 417, 195, 418, 530, 512, 427, 471, 126, + 127, 128, 129, 130, 162, 527, 192, 0, 179, 0, + 180, 0, 468, 0, 0, 0, 290, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 289, 0, 0, 0, + 0, 0, 0, 0, 476, 0, 0, 181, 136, 137, + 138, 0, 0, 0, 368, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 290, 0, 289, 290, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 96, 97, 98, - 99, 0, 100, 0, 0, 35, 36, 37, 0, 38, - 39, 40, 41, 42, 0, 106, 0, 0, 0, 0, + 0, 0, 290, 0, 289, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 289, 0, 0, 290, 290, 289, 289, 0, + 0, 0, 0, 0, 0, 0, 0, 290, 0, 289, + 17, 18, 19, 20, 21, 22, 237, 238, 239, 0, + 240, 241, 242, 243, 244, 0, 0, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 245, 179, 134, 180, 246, 247, 248, + 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 136, 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 253, 0, 0, 0, 0, 0, 254, 255, 256, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 259, 260, 17, 18, 19, 20, 21, 22, + 237, 238, 239, 0, 240, 241, 242, 243, 244, 0, + 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 245, 179, 134, + 180, 246, 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 210, 141, 97, 98, 99, - 0, 211, 212, 213, 214, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 0, 215, 216, 217, 17, - 18, 19, 20, 21, 22, 194, 195, 196, 0, 197, - 198, 199, 200, 201, 0, 0, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 202, - 139, 95, 140, 203, 204, 205, 206, 207, 0, 0, - 208, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 96, - 97, 98, 99, 0, 100, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 106, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, + 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 138, 0, 139, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 254, 255, 256, 257, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 258, 259, 393, 17, 18, + 19, 20, 21, 22, 237, 238, 239, 0, 240, 241, + 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, - 0, 0, 0, 211, 212, 213, 214, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 215, 216, - 347, 17, 18, 19, 20, 21, 22, 194, 195, 196, - 0, 197, 198, 199, 200, 201, 0, 0, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 202, 139, 95, 140, 203, 204, 205, 206, 207, - 0, 0, 208, 209, 0, 0, 0, 0, 0, 0, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 245, 179, 134, 180, 246, 247, 248, 249, 250, + 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 136, 137, 138, 0, 139, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 0, 100, 0, 17, 18, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 106, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 136, 137, - 0, 138, 39, 40, 41, 42, 43, 44, 45, 46, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, + 0, 0, 0, 0, 254, 255, 256, 257, 17, 18, + 19, 20, 21, 22, 0, 0, 0, 0, 0, 258, + 259, 478, 0, 0, 0, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 176, 177, + 0, 178, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 0, 210, - 95, 0, 0, 0, 0, 211, 212, 213, 214, 0, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 181, 136, 137, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 216, 433, 0, 0, 0, 0, 0, 141, 97, - 98, 99, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 0, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 136, 137, 0, 138, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, - 0, 0, 141, 97, 98, 99, 0, 0, 0, 0, - 0, 17, 18, 19, 20, 21, 22, 194, 195, 196, - 106, 197, 198, 199, 200, 201, 478, 479, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 202, 139, 95, 140, 203, 204, 205, 206, 207, - 0, 0, 208, 209, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 0, 100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 176, 177, 0, 178, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 136, + 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 18, 19, 20, 21, 22, 237, 238, 239, 411, 240, + 241, 242, 243, 244, 514, 515, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 245, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, - 0, 0, 0, 0, 0, 211, 212, 213, 214, 0, + 0, 0, 135, 136, 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 216, 17, 18, 19, 20, 21, 22, 194, 195, - 196, 0, 197, 198, 199, 200, 201, 0, 0, 23, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 258, 259, 17, 18, 19, 20, 21, 22, 237, 238, + 239, 0, 240, 241, 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, @@ -1471,372 +1350,543 @@ static const yytype_int16 yytable[] = 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 202, 139, 95, 140, 203, 204, 205, 206, - 207, 0, 0, 208, 209, 0, 0, 0, 0, 0, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 245, 179, 134, 180, 246, + 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 99, 0, 100, 0, 0, + 0, 0, 0, 0, 0, 135, 136, 137, 138, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, + 0, 0, 253, 0, 0, 0, 0, 0, 254, 255, + 256, 257, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 258, 259, 17, 18, 19, 20, 21, + 22, 237, 238, 239, 0, 240, 241, 242, 243, 244, + 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 245, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 254, 255, 256, 257, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 0, 0, 258, 194, 0, 0, + 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 210, 0, 0, 0, 0, 0, 211, 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 215, 216, 17, 18, 19, 20, 21, 22, 194, - 195, 196, 0, 197, 198, 199, 200, 201, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 254, 255, 256, 257, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 202, 139, 95, 140, 203, 204, 205, - 206, 207, 0, 0, 208, 209, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, - 0, 0, 0, 96, 97, 98, 99, 0, 100, 23, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 133, 0, 179, 134, 180, + 246, 247, 248, 249, 250, 0, 0, 251, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, + 21, 22, 0, 253, 0, 0, 0, 0, 0, 254, + 255, 256, 257, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 398, 506, 0, 0, 0, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 133, 0, + 179, 134, 180, 246, 247, 248, 249, 250, 0, 0, + 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 0, 253, 0, 0, 0, + 0, 0, 254, 255, 256, 257, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 398, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 133, 0, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 17, + 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, + 339, 0, 0, 0, 0, 0, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 176, + 177, 0, 178, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 0, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 181, 136, 137, 138, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 0, 0, 0, 19, 20, 21, 22, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 106, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 0, 139, 95, 140, 203, 204, 205, 206, - 207, 0, 0, 208, 209, 0, 0, 0, 0, 0, - 0, 210, 0, 0, 0, 0, 0, 211, 212, 213, - 214, 17, 18, 19, 20, 21, 22, 0, 0, 0, - 0, 0, 215, 154, 0, 0, 0, 0, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 0, 139, 95, 140, 203, 204, 205, 206, 207, - 210, 0, 208, 209, 0, 0, 211, 212, 213, 214, - 0, 0, 19, 20, 21, 22, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 0, 100, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 106, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 0, 139, 95, 140, 203, 204, 205, 206, 207, 0, - 0, 208, 209, 0, 0, 0, 0, 0, 0, 210, - 0, 0, 0, 0, 0, 211, 212, 213, 214, 0, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 0, 0, 23, 24, 25, 26, 27, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 133, 0, 179, 134, 180, 246, + 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, + 22, 0, 253, 0, 0, 315, 0, 0, 254, 255, + 256, 257, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, 133, 0, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 20, 21, 22, 0, 253, 0, 0, 403, 0, + 0, 254, 255, 256, 257, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 0, 139, - 95, 140, 203, 204, 205, 206, 207, 0, 210, 208, - 209, 0, 0, 0, 211, 212, 213, 214, 19, 20, - 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 354, 470, 0, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 0, 139, 95, 140, - 203, 204, 205, 206, 207, 0, 0, 208, 209, 0, - 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, - 0, 0, 211, 212, 213, 214, 19, 20, 21, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 354, 0, - 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 133, 0, 179, 134, 180, 246, 247, 248, 249, 250, + 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 20, 21, 22, 0, 253, 0, + 0, 0, 0, 0, 254, 255, 256, 257, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 132, 355, 0, 179, 134, 180, 246, 247, + 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, + 0, 253, 0, 0, 0, 0, 0, 254, 255, 256, + 257, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 0, 139, 95, 140, 203, 204, - 205, 206, 207, 0, 210, 208, 209, 0, 0, 0, - 211, 212, 213, 214, 17, 18, 19, 20, 21, 22, - 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, - 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 136, 137, 0, 138, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 0, 139, 95, 140, 203, 204, - 205, 206, 207, 0, 0, 208, 209, 0, 0, 0, - 0, 0, 210, 0, 0, 270, 0, 0, 211, 212, - 213, 214, 0, 0, 141, 97, 98, 99, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 132, 484, 0, 179, 134, + 180, 246, 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, - 22, 0, 210, 0, 0, 0, 0, 0, 211, 212, - 213, 214, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 0, 139, 95, 140, 203, - 204, 205, 206, 207, 0, 0, 208, 209, 19, 20, + 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, + 20, 21, 22, 0, 253, 0, 0, 0, 0, 0, + 254, 255, 256, 257, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 137, 138, 0, 139, 0, 0, 0, 0, + 0, 0, 0, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 0, 139, 95, 140, - 203, 204, 205, 206, 207, 0, 0, 208, 209, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, - 21, 22, 0, 210, 0, 0, 352, 0, 0, 211, - 212, 213, 214, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 30, 31, 32, 33, 34, 35, 176, 177, 146, 178, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 0, 139, 95, 140, - 203, 204, 205, 206, 207, 0, 0, 208, 209, 19, - 20, 21, 22, 0, 210, 0, 0, 413, 0, 0, - 211, 212, 213, 214, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 309, 0, 139, 95, - 140, 203, 204, 205, 206, 207, 0, 0, 208, 209, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 20, 21, 22, 0, 210, 0, 0, 487, 0, 0, - 211, 212, 213, 214, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 439, 0, 139, 95, - 140, 203, 204, 205, 206, 207, 0, 0, 208, 209, - 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 17, 18, 19, 20, 21, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 99, 0, - 100, 17, 18, 19, 20, 21, 22, 0, 101, 102, - 103, 104, 105, 106, 0, 0, 0, 0, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 136, 137, 0, 138, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 17, 18, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 0, + 0, 134, 0, 0, 0, 0, 17, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 176, 177, 0, + 178, 39, 40, 41, 42, 0, 0, 0, 0, 181, + 136, 137, 138, 0, 0, 35, 36, 37, 0, 38, + 39, 40, 41, 42, 0, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 141, 97, 98, 99, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106 + 0, 126, 127, 128, 129, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 181, 136, 137, 138, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 145, 181, + 136, 137, 138, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 0, 0, 0, 0, 0, 0, 146, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 133, 0, 0, 134 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-401))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 13, 96, 13, 18, 19, 4, 4, 200, 134, 179, - 196, 18, 19, 12, 96, 117, 184, 210, 96, 129, - 266, 104, 105, 94, 95, 96, 106, 107, 351, 226, - 111, 354, 432, 223, 116, 33, 34, 35, 13, 117, - 118, 4, 120, 121, 13, 242, 223, 125, 226, 179, - 226, 241, 94, 95, 96, 455, 227, 228, 184, 98, - 186, 226, 240, 141, 241, 143, 252, 226, 244, 226, - 33, 34, 35, 94, 95, 96, 226, 242, 208, 209, - 222, 158, 0, 242, 226, 242, 226, 164, 165, 94, - 95, 96, 242, 416, 93, 108, 266, 108, 291, 229, - 240, 222, 295, 296, 350, 226, 119, 149, 130, 222, - 133, 304, 133, 226, 282, 361, 132, 116, 222, 96, - 443, 134, 226, 446, 447, 222, 124, 125, 126, 226, - 96, 222, 145, 108, 133, 226, 266, 460, 133, 108, - 223, 154, 225, 154, 246, 468, 96, 242, 133, 275, - 163, 344, 151, 222, 234, 235, 282, 226, 239, 102, - 103, 124, 125, 126, 108, 109, 412, 166, 246, 133, - 296, 184, 243, 186, 133, 226, 133, 219, 221, 372, - 350, 242, 243, 196, 222, 196, 332, 333, 334, 335, - 226, 361, 98, 99, 380, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 328, 329, 267, 223, 3, 4, - 350, 330, 331, 305, 222, 96, 472, 221, 221, 244, - 221, 361, 425, 243, 360, 336, 337, 244, 133, 252, - 243, 252, 412, 429, 244, 242, 372, 32, 33, 34, - 242, 36, 37, 38, 39, 40, 242, 308, 124, 125, - 126, 454, 275, 262, 94, 95, 96, 241, 221, 282, - 221, 242, 323, 231, 232, 233, 221, 290, 238, 290, - 221, 221, 412, 296, 222, 478, 221, 286, 301, 236, - 301, 477, 3, 4, 345, 237, 482, 483, 110, 112, - 351, 221, 472, 354, 223, 242, 305, 224, 222, 93, - 223, 497, 241, 224, 244, 3, 4, 100, 221, 226, - 222, 32, 33, 34, 224, 36, 37, 38, 39, 40, - 113, 221, 241, 222, 96, 243, 224, 388, 123, 124, - 125, 126, 472, 241, 32, 33, 34, 360, 36, 37, - 38, 39, 40, 222, 224, 242, 141, 241, 222, 372, - 241, 224, 223, 242, 12, 416, 242, 380, 240, 380, - 224, 338, 340, 343, 157, 158, 341, 339, 377, 157, - 186, 164, 165, 94, 362, 96, 342, 438, 455, 286, - 441, 290, 443, 110, 290, 446, 447, 358, 482, 372, - 301, 108, -1, -1, -1, 484, 360, -1, -1, 460, - -1, -1, 123, 124, 125, 126, 429, 468, 429, 432, - -1, 432, -1, -1, -1, -1, -1, -1, -1, -1, - 141, -1, -1, -1, -1, 123, 124, 125, 126, -1, - -1, -1, 455, -1, 455, -1, -1, -1, -1, -1, - -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 477, -1, 477, -1, -1, 482, - 483, 482, 483, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, -1, 497, -1, 497, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, - 16, 17, -1, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 3, 4, 104, 105, + 13, 239, 13, 243, 4, 4, 174, 210, 18, 19, + 18, 19, 12, 253, 139, 157, 135, 227, 139, 13, + 13, 4, 137, 138, 139, 221, 139, 396, 154, 398, + 269, 235, 401, 0, 33, 34, 35, 156, 3, 4, + 173, 149, 150, 137, 138, 139, 147, 148, 235, 253, + 33, 34, 35, 141, 137, 138, 139, 295, 135, 227, + 235, 229, 137, 138, 139, 238, 253, 32, 33, 34, + 309, 36, 37, 38, 39, 40, 235, 238, 253, 252, + 157, 158, 176, 160, 161, 477, 234, 172, 165, 234, + 238, 238, 461, 238, 253, 256, 176, 337, 238, 238, + 238, 341, 342, 495, 181, 308, 183, 254, 175, 192, + 350, 238, 176, 252, 254, 354, 254, 234, 328, 488, + 323, 238, 254, 255, 320, 251, 238, 254, 176, 254, + 369, 500, 132, 254, 235, 148, 237, 148, 246, 247, + 255, 254, 254, 239, 240, 234, 159, 289, 231, 238, + 390, 139, 391, 321, 148, 148, 156, 396, 139, 398, + 328, 174, 401, 128, 129, 130, 131, 132, 167, 168, + 169, 198, 185, 173, 342, 139, 234, 204, 205, 419, + 238, 194, 233, 194, 167, 168, 169, 145, 146, 427, + 203, 191, 395, 234, 234, 234, 435, 139, 238, 238, + 176, 166, 167, 168, 169, 176, 206, 221, 167, 168, + 169, 153, 289, 176, 227, 238, 229, 151, 152, 184, + 141, 142, 461, 137, 138, 139, 239, 139, 239, 235, + 470, 255, 351, 374, 375, 234, 474, 251, 252, 407, + 243, 244, 245, 233, 483, 176, 256, 486, 256, 488, + 235, 419, 376, 377, 494, 197, 198, 255, 272, 224, + 233, 500, 204, 205, 3, 4, 253, 378, 379, 380, + 381, 233, 382, 383, 514, 513, 254, 254, 233, 254, + 518, 519, 295, 233, 295, 254, 233, 233, 491, 233, + 256, 234, 530, 32, 33, 34, 233, 36, 37, 38, + 39, 40, 250, 248, 153, 305, 320, 155, 321, 249, + 233, 236, 136, 254, 234, 328, 233, 236, 256, 234, + 238, 234, 233, 336, 139, 336, 236, 254, 234, 342, + 234, 255, 332, 12, 347, 384, 347, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 254, 253, 252, + 385, 351, 254, 386, 388, 387, 197, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 332, 389, 229, 405, + 409, 320, 336, 150, 336, 520, 495, 347, 419, 128, + 129, 130, 131, 132, 407, 518, 148, -1, 137, -1, + 139, -1, 407, -1, -1, -1, 419, -1, -1, -1, + -1, -1, -1, -1, 427, -1, 427, -1, -1, -1, + -1, -1, -1, -1, 424, -1, -1, 166, 167, 168, + 169, -1, -1, -1, 253, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 241, -1, -1, -1, -1, -1, 123, 124, 125, - 126, -1, 128, -1, -1, 32, 33, 34, -1, 36, - 37, 38, 39, 40, -1, 141, -1, -1, -1, -1, + -1, 474, -1, 474, 477, -1, 477, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 495, -1, 495, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 513, -1, 513, -1, -1, 518, 519, 518, 519, -1, + -1, -1, -1, -1, -1, -1, -1, 530, -1, 530, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + 13, 14, 15, 16, 17, -1, -1, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 166, 167, 168, 169, -1, 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 221, 123, 124, 125, 126, - -1, 227, 228, 229, 230, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 141, -1, 242, 243, 244, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, - 14, 15, 16, 17, -1, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, -1, -1, - 104, 105, -1, -1, -1, -1, -1, -1, -1, -1, - 5, 6, 7, 8, -1, -1, -1, -1, -1, 123, - 124, 125, 126, -1, 128, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 141, -1, -1, - -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, + -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, + 233, -1, -1, -1, -1, -1, 239, 240, 241, 242, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 254, 255, 256, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, + -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, -1, -1, 147, 148, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 166, 167, 168, + 169, -1, 171, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 224, -1, -1, -1, -1, + -1, -1, -1, -1, 233, -1, -1, -1, -1, -1, + 239, 240, 241, 242, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 254, 255, 256, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, - 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, - -1, -1, -1, 227, 228, 229, 230, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, - 244, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, 13, 14, 15, 16, 17, -1, -1, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - -1, -1, 104, 105, -1, -1, -1, -1, -1, -1, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 166, 167, 168, 169, -1, 171, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 184, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, 125, 126, -1, 128, -1, 3, 4, - 5, 6, 7, 8, -1, -1, -1, -1, -1, 141, - -1, -1, -1, -1, -1, 20, 21, 22, 23, 24, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, + -1, -1, -1, -1, -1, -1, -1, -1, 233, -1, + -1, -1, -1, -1, 239, 240, 241, 242, 3, 4, + 5, 6, 7, 8, -1, -1, -1, -1, -1, 254, + 255, 256, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 221, - 95, -1, -1, -1, -1, 227, 228, 229, 230, -1, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, 128, 129, 130, 131, 132, 133, 134, + 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 242, 243, 244, -1, -1, -1, -1, -1, 123, 124, - 125, 126, 3, 4, 5, 6, 7, 8, -1, -1, - -1, -1, -1, -1, -1, -1, 141, -1, -1, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 244, - -1, -1, 123, 124, 125, 126, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 141, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - -1, -1, 104, 105, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 244, -1, -1, -1, -1, -1, -1, - -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, + -1, 166, 167, 168, 169, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, + 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, - -1, -1, -1, -1, -1, 227, 228, 229, 230, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 242, 243, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 256, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 166, 167, 168, 169, -1, 171, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 224, -1, -1, -1, -1, -1, -1, -1, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 254, 255, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, @@ -1846,209 +1896,345 @@ static const yytype_int16 yycheck[] = 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, -1, -1, 104, 105, -1, -1, -1, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 123, 124, 125, 126, -1, 128, -1, -1, + -1, -1, -1, -1, -1, 166, 167, 168, 169, -1, + 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, + -1, -1, 233, -1, -1, -1, -1, -1, 239, 240, + 241, 242, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 254, 255, 3, 4, 5, 6, 7, + 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, + -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, 171, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, + -1, -1, -1, -1, -1, 233, -1, -1, -1, -1, + -1, 239, 240, 241, 242, 3, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 254, 255, -1, -1, + -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, -1, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, 171, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 242, 243, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, 16, 17, -1, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, + -1, -1, -1, -1, -1, 233, -1, -1, -1, -1, + -1, 239, 240, 241, 242, 5, 6, 7, 8, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, -1, -1, 104, 105, -1, -1, -1, -1, - -1, -1, -1, -1, 5, 6, 7, 8, -1, -1, - -1, -1, -1, 123, 124, 125, 126, -1, 128, 20, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 133, 134, 135, -1, 137, 138, 139, + 140, 141, 142, 143, 144, -1, -1, 147, 148, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, + 7, 8, -1, 233, -1, -1, -1, -1, -1, 239, + 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 255, 256, -1, -1, -1, + -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 133, 134, 135, -1, + 137, 138, 139, 140, 141, 142, 143, 144, -1, -1, + 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, 7, 8, -1, 233, -1, -1, -1, + -1, -1, 239, 240, 241, 242, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 255, -1, + -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, + 134, 135, -1, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, 3, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 254, -1, -1, -1, -1, -1, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, 128, 129, 130, 131, 132, 133, + 134, 135, -1, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 166, 167, 168, 169, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 224, -1, -1, -1, 5, 6, 7, 8, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 141, -1, -1, -1, -1, -1, -1, -1, -1, + 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, 100, - 101, -1, -1, 104, 105, -1, -1, -1, -1, -1, - -1, 221, -1, -1, -1, -1, -1, 227, 228, 229, - 230, 3, 4, 5, 6, 7, 8, -1, -1, -1, - -1, -1, 242, 243, -1, -1, -1, -1, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, 94, 95, 96, 97, 98, 99, 100, 101, - 221, -1, 104, 105, -1, -1, 227, 228, 229, 230, - -1, -1, 5, 6, 7, 8, -1, -1, -1, -1, - -1, 123, 124, 125, 126, -1, 128, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 141, - -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, 100, 101, -1, - -1, 104, 105, -1, -1, -1, -1, -1, -1, 221, - -1, -1, -1, -1, -1, 227, 228, 229, 230, -1, - 5, 6, 7, 8, -1, -1, -1, -1, -1, -1, - 242, -1, -1, -1, -1, 20, 21, 22, 23, 24, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 133, 134, 135, -1, 137, 138, 139, 140, + 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, + 8, -1, 233, -1, -1, 236, -1, -1, 239, 240, + 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 133, 134, 135, -1, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5, 6, 7, 8, -1, 233, -1, -1, 236, -1, + -1, 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, 100, 101, -1, 221, 104, - 105, -1, -1, -1, 227, 228, 229, 230, 5, 6, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - 243, 244, -1, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, 100, 101, -1, -1, 104, 105, -1, - -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, - -1, -1, 227, 228, 229, 230, 5, 6, 7, 8, - -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, - -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 133, 134, + 135, -1, 137, 138, 139, 140, 141, 142, 143, 144, + -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5, 6, 7, 8, -1, 233, -1, + -1, -1, -1, -1, 239, 240, 241, 242, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 133, 134, 135, -1, 137, 138, 139, 140, 141, + 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 5, 6, 7, 8, + -1, 233, -1, -1, -1, -1, -1, 239, 240, 241, + 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, 100, 101, -1, 221, 104, 105, -1, -1, -1, - 227, 228, 229, 230, 3, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, - -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, 100, 101, -1, -1, 104, 105, -1, -1, -1, - -1, -1, 221, -1, -1, 224, -1, -1, 227, 228, - 229, 230, -1, -1, 123, 124, 125, 126, -1, -1, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 133, 134, 135, -1, 137, 138, + 139, 140, 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, - 8, -1, 221, -1, -1, -1, -1, -1, 227, 228, - 229, 230, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, 100, 101, -1, -1, 104, 105, 5, 6, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, -1, 233, -1, -1, -1, -1, -1, + 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, 128, 129, 130, 131, 132, 133, 134, 135, + -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 166, 167, 168, 169, -1, 171, -1, -1, -1, -1, + -1, -1, -1, 179, 180, 181, 182, 183, 184, -1, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, 100, 101, -1, -1, 104, 105, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, - 7, 8, -1, 221, -1, -1, 224, -1, -1, 227, - 228, 229, 230, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, + 27, 28, 29, 30, 31, 32, 33, 34, 224, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, 100, 101, -1, -1, 104, 105, 5, - 6, 7, 8, -1, 221, -1, -1, 224, -1, -1, - 227, 228, 229, 230, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, 100, 101, -1, -1, 104, 105, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, - 6, 7, 8, -1, 221, -1, -1, 224, -1, -1, - 227, 228, 229, 230, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, 100, 101, -1, -1, 104, 105, - -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, - -1, 227, 228, 229, 230, 3, 4, 5, 6, 7, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, -1, -1, 95, -1, -1, - -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, - -1, 227, 228, 229, 230, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 123, 124, 125, 126, -1, - 128, 3, 4, 5, 6, 7, 8, -1, 136, 137, - 138, 139, 140, 141, -1, -1, -1, -1, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 3, 4, -1, + -1, 128, 129, 130, 131, 132, 133, 134, 135, -1, + -1, 138, -1, -1, -1, -1, 3, 4, -1, -1, + -1, -1, -1, -1, -1, -1, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, -1, 166, + 167, 168, 169, -1, -1, 32, 33, 34, -1, 36, + 37, 38, 39, 40, -1, -1, -1, 184, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 128, 129, 130, 131, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, 125, 126, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 141 + -1, 128, 129, 130, 131, 132, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 166, 167, 168, 169, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 184, 166, + 167, 168, 169, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 184, -1, -1, + -1, -1, -1, -1, 5, 6, 7, 8, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 224, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, -1, -1, -1, -1, -1, -1, 224, -1, -1, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 133, 134, 135, -1, -1, 138 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 129, 246, 248, 98, 0, 250, 94, 95, 96, - 133, 251, 130, 247, 252, 133, 251, 3, 4, 5, + 0, 172, 258, 260, 141, 0, 262, 137, 138, 139, + 176, 263, 173, 259, 264, 176, 263, 3, 4, 5, 6, 7, 8, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, @@ -2056,73 +2242,151 @@ static const yytype_uint16 yystos[] = 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 95, 123, 124, 125, 126, - 128, 136, 137, 138, 139, 140, 141, 249, 253, 287, - 288, 289, 290, 291, 297, 298, 299, 300, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 343, 344, 345, - 346, 347, 351, 132, 243, 251, 33, 34, 36, 94, - 96, 123, 254, 300, 306, 312, 133, 133, 133, 133, - 133, 221, 343, 242, 243, 326, 222, 226, 4, 33, - 34, 35, 293, 294, 295, 312, 226, 242, 94, 96, - 251, 254, 36, 306, 346, 306, 309, 306, 306, 223, - 306, 96, 251, 299, 314, 315, 243, 309, 149, 219, - 251, 301, 303, 304, 9, 10, 11, 13, 14, 15, - 16, 17, 93, 97, 98, 99, 100, 101, 104, 105, - 221, 227, 228, 229, 230, 242, 243, 244, 254, 255, - 256, 258, 259, 260, 261, 262, 263, 264, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 285, 287, 288, 300, 309, 320, 321, - 322, 323, 327, 328, 329, 332, 338, 342, 293, 294, - 292, 296, 309, 294, 294, 251, 223, 241, 221, 242, - 224, 269, 282, 286, 309, 243, 133, 251, 316, 317, - 244, 315, 314, 242, 241, 222, 226, 242, 242, 321, - 221, 221, 242, 242, 285, 221, 221, 269, 269, 285, - 244, 324, 104, 105, 223, 225, 222, 222, 226, 92, - 283, 221, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 241, 284, 269, 231, 232, 233, 227, 228, - 102, 103, 106, 107, 234, 235, 108, 109, 236, 237, - 238, 110, 112, 111, 239, 226, 242, 244, 321, 251, - 223, 241, 224, 286, 243, 283, 318, 224, 299, 349, - 350, 223, 226, 242, 244, 98, 99, 302, 303, 93, - 320, 328, 339, 285, 242, 285, 285, 299, 331, 222, - 327, 257, 285, 251, 254, 265, 266, 267, 268, 283, - 283, 269, 269, 269, 271, 271, 272, 272, 273, 273, - 273, 273, 274, 274, 275, 276, 277, 278, 279, 280, - 285, 283, 223, 224, 286, 318, 241, 224, 318, 319, - 316, 244, 349, 286, 317, 221, 331, 340, 341, 222, - 222, 251, 222, 244, 224, 221, 222, 222, 226, 92, - 283, 240, 286, 241, 224, 318, 241, 226, 244, 242, - 96, 348, 224, 285, 242, 222, 321, 330, 243, 333, - 241, 322, 325, 326, 283, 283, 224, 318, 241, 318, - 244, 318, 223, 242, 222, 285, 325, 12, 18, 19, - 244, 334, 335, 336, 337, 318, 318, 224, 286, 242, - 321, 285, 240, 321, 334, 321, 244, 336, 224, 240 + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 128, 129, 130, 131, + 132, 133, 134, 135, 138, 166, 167, 168, 169, 171, + 179, 180, 181, 182, 183, 184, 224, 261, 265, 299, + 300, 301, 302, 303, 309, 310, 311, 312, 317, 318, + 319, 320, 322, 323, 324, 325, 326, 356, 357, 358, + 359, 360, 364, 175, 255, 263, 33, 34, 36, 137, + 139, 166, 266, 312, 318, 325, 176, 176, 176, 176, + 176, 233, 356, 254, 255, 339, 234, 238, 4, 33, + 34, 35, 305, 306, 307, 325, 238, 254, 137, 139, + 263, 266, 33, 34, 36, 318, 359, 318, 322, 318, + 318, 235, 321, 318, 139, 263, 311, 327, 328, 255, + 322, 192, 231, 263, 313, 315, 316, 9, 10, 11, + 13, 14, 15, 16, 17, 136, 140, 141, 142, 143, + 144, 147, 148, 233, 239, 240, 241, 242, 254, 255, + 256, 266, 267, 268, 270, 271, 272, 273, 274, 275, + 276, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 297, 299, 300, 312, + 322, 333, 334, 335, 336, 340, 341, 342, 345, 351, + 355, 305, 306, 304, 308, 322, 306, 306, 263, 253, + 321, 233, 254, 254, 254, 236, 281, 294, 298, 322, + 235, 255, 176, 263, 329, 330, 256, 328, 327, 254, + 253, 234, 238, 254, 254, 334, 233, 233, 254, 254, + 297, 233, 233, 281, 281, 297, 256, 337, 147, 148, + 235, 237, 234, 234, 238, 135, 295, 233, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 253, 296, + 281, 243, 244, 245, 239, 240, 145, 146, 149, 150, + 246, 247, 151, 152, 248, 249, 250, 153, 155, 154, + 251, 238, 254, 256, 334, 263, 253, 321, 255, 295, + 331, 253, 236, 236, 298, 311, 362, 363, 321, 238, + 254, 256, 141, 142, 314, 315, 136, 333, 341, 352, + 297, 254, 297, 297, 311, 344, 234, 340, 269, 297, + 263, 266, 277, 278, 279, 280, 295, 295, 281, 281, + 281, 283, 283, 284, 284, 285, 285, 285, 285, 286, + 286, 287, 288, 289, 290, 291, 292, 297, 295, 321, + 331, 253, 331, 332, 331, 236, 329, 256, 362, 330, + 233, 344, 353, 354, 234, 234, 263, 234, 256, 236, + 233, 234, 234, 238, 135, 295, 252, 331, 238, 256, + 254, 139, 361, 297, 254, 234, 334, 343, 255, 346, + 253, 335, 338, 339, 295, 295, 256, 331, 321, 254, + 234, 297, 338, 12, 18, 19, 256, 347, 348, 349, + 350, 331, 254, 334, 297, 252, 334, 347, 334, 256, + 349, 252 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 257, 259, 258, 260, 260, 260, 261, 261, 261, + 261, 261, 262, 262, 263, 263, 263, 264, 265, 265, + 266, 266, 267, 267, 267, 267, 267, 267, 268, 268, + 268, 268, 268, 268, 269, 270, 271, 271, 272, 272, + 273, 273, 274, 274, 275, 276, 276, 276, 277, 277, + 278, 278, 279, 279, 280, 281, 281, 281, 281, 282, + 282, 282, 282, 283, 283, 283, 283, 284, 284, 284, + 285, 285, 285, 286, 286, 286, 286, 286, 287, 287, + 287, 288, 288, 289, 289, 290, 290, 291, 291, 292, + 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 297, 297, + 298, 299, 299, 299, 299, 300, 301, 301, 302, 302, + 303, 304, 304, 305, 305, 306, 306, 306, 306, 307, + 307, 307, 308, 309, 309, 309, 309, 309, 310, 310, + 310, 310, 310, 310, 311, 311, 312, 313, 313, 314, + 314, 315, 315, 315, 316, 316, 317, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 319, 319, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 321, 321, 321, 321, 322, 322, + 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 325, 325, 325, 326, 326, 327, + 327, 328, 329, 329, 330, 330, 331, 331, 331, 332, + 332, 333, 334, 334, 335, 335, 335, 335, 335, 335, + 336, 337, 336, 338, 338, 339, 339, 340, 340, 341, + 341, 342, 343, 343, 344, 344, 345, 346, 346, 347, + 347, 348, 348, 349, 349, 350, 350, 351, 351, 351, + 352, 352, 353, 353, 354, 354, 355, 355, 355, 355, + 355, 356, 356, 356, 356, 357, 358, 358, 359, 360, + 360, 360, 361, 361, 361, 362, 362, 363, 364, 364, + 364 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 4, 0, 3, 4, 2, 2, 2, + 2, 2, 0, 2, 1, 1, 1, 5, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, + 1, 3, 2, 2, 1, 1, 1, 3, 2, 2, + 2, 1, 2, 3, 2, 1, 1, 1, 2, 2, + 2, 1, 2, 3, 2, 1, 2, 2, 2, 1, + 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, + 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 2, 2, 4, 1, 2, 1, 1, 2, 3, + 3, 2, 3, 2, 2, 0, 2, 2, 2, 1, + 1, 1, 1, 1, 3, 4, 6, 5, 1, 2, + 3, 5, 4, 2, 1, 2, 4, 1, 3, 1, + 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 3, 4, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 5, 4, 1, + 2, 3, 1, 3, 1, 2, 1, 3, 4, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 4, 1, 1, 2, 3, 1, 2, 1, + 2, 5, 3, 1, 1, 4, 5, 2, 3, 3, + 2, 1, 2, 2, 2, 1, 2, 5, 7, 6, + 1, 1, 1, 0, 2, 3, 2, 2, 2, 3, + 2, 1, 1, 1, 1, 2, 1, 2, 7, 1, + 1, 1, 0, 1, 2, 1, 2, 3, 3, 3, + 3 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -2139,13 +2403,13 @@ do \ else \ { \ yyerror (&yylloc, state, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -2155,7 +2419,7 @@ while (YYID (0)) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (YYID (N)) \ + if (N) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -2169,12 +2433,27 @@ while (YYID (0)) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (YYID (0)) + while (0) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ @@ -2184,36 +2463,28 @@ while (YYID (0)) /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -__attribute__((__unused__)) -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +YY_ATTRIBUTE_UNUSED static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) -#else -static unsigned -yy_location_print_ (yyo, yylocp) - FILE *yyo; - YYLTYPE const * const yylocp; -#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += fprintf (yyo, "%d", yylocp->first_line); + res += YYFPRINTF (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += fprintf (yyo, ".%d", yylocp->first_column); + res += YYFPRINTF (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += fprintf (yyo, "-%d", yylocp->last_line); + res += YYFPRINTF (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += fprintf (yyo, ".%d", end_col); + res += YYFPRINTF (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += fprintf (yyo, "-%d", end_col); + res += YYFPRINTF (yyo, "-%d", end_col); } return res; } @@ -2227,69 +2498,34 @@ yy_location_print_ (yyo, yylocp) #endif -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, &yylloc, state) -#endif +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, state); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, state); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct _mesa_glsl_parse_state *state) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, state) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - struct _mesa_glsl_parse_state *state; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); - if (!yyvaluep) - return; YYUSE (yylocationp); YYUSE (state); + if (!yyvaluep) + return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif YYUSE (yytype); } @@ -2299,24 +2535,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, state) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct _mesa_glsl_parse_state *state) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, state) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - struct _mesa_glsl_parse_state *state; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -2329,16 +2552,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, state) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2349,51 +2564,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct _mesa_glsl_parse_state *state) -#else static void -yy_reduce_print (yyvsp, yylsp, yyrule, state) - YYSTYPE *yyvsp; - YYLTYPE *yylsp; - int yyrule; - struct _mesa_glsl_parse_state *state; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct _mesa_glsl_parse_state *state) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , state); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) , state); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule, state); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, yylsp, Rule, state); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -2407,7 +2613,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -2430,15 +2636,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -2454,16 +2653,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -2493,27 +2684,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -2536,11 +2727,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -2548,10 +2739,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -2601,7 +2788,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -2668,30 +2855,19 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct _mesa_glsl_parse_state *state) -#else -static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp, state) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - YYLTYPE *yylocationp; - struct _mesa_glsl_parse_state *state; -#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (state); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2701,66 +2877,27 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, state) | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (struct _mesa_glsl_parse_state *state) -#else -int -yyparse (state) - struct _mesa_glsl_parse_state *state; -#endif -#endif { /* The lookahead symbol. */ int yychar; -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else +/* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -static YYSTYPE yyval_default; -# define YY_INITIAL_VALUE(Value) = Value -#endif +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); + +/* Location data for the lookahead symbol. */ static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - -/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; - /* Number of syntax errors so far. */ int yynerrs; @@ -2769,9 +2906,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. - `yyls': related to locations. + 'yyss': related to states. + 'yyvs': related to semantic values. + 'yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -2831,8 +2968,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -/* Line 1570 of yacc.c */ -#line 54 "glsl_parser.yy" +#line 80 "glsl_parser.yy" /* yacc.c:1429 */ { yylloc.first_line = 1; yylloc.first_column = 1; @@ -2840,8 +2976,8 @@ YYLTYPE yylloc = yyloc_default; yylloc.last_column = 1; yylloc.source = 0; } -/* Line 1570 of yacc.c */ -#line 2845 "glsl_parser.cpp" + +#line 2981 "glsl_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2863,26 +2999,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -2890,23 +3026,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -2916,10 +3052,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2948,7 +3084,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (&yylval, &yylloc, state); } if (yychar <= YYEOF) @@ -3013,7 +3149,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3028,1139 +3164,1067 @@ yyreduce: switch (yyn) { case 2: -/* Line 1787 of yacc.c */ -#line 263 "glsl_parser.yy" +#line 295 "glsl_parser.yy" /* yacc.c:1646 */ { _mesa_glsl_initialize_types(state); } +#line 3172 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 3: -/* Line 1787 of yacc.c */ -#line 267 "glsl_parser.yy" +#line 299 "glsl_parser.yy" /* yacc.c:1646 */ { delete state->symbols; state->symbols = new(ralloc_parent(state)) glsl_symbol_table; _mesa_glsl_initialize_types(state); } +#line 3182 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 5: -/* Line 1787 of yacc.c */ -#line 277 "glsl_parser.yy" +#line 309 "glsl_parser.yy" /* yacc.c:1646 */ { - state->process_version_directive(&(yylsp[(2) - (3)]), (yyvsp[(2) - (3)].n), NULL); + state->process_version_directive(&(yylsp[-1]), (yyvsp[-1].n), NULL); if (state->error) { YYERROR; } } +#line 3193 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 6: -/* Line 1787 of yacc.c */ -#line 284 "glsl_parser.yy" +#line 316 "glsl_parser.yy" /* yacc.c:1646 */ { - state->process_version_directive(&(yylsp[(2) - (4)]), (yyvsp[(2) - (4)].n), (yyvsp[(3) - (4)].identifier)); + state->process_version_directive(&(yylsp[-2]), (yyvsp[-2].n), (yyvsp[-1].identifier)); if (state->error) { YYERROR; } } +#line 3204 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 11: -/* Line 1787 of yacc.c */ -#line 298 "glsl_parser.yy" +#line 330 "glsl_parser.yy" /* yacc.c:1646 */ { if (!state->is_version(120, 100)) { - _mesa_glsl_warning(& (yylsp[(1) - (2)]), state, + _mesa_glsl_warning(& (yylsp[-1]), state, "pragma `invariant(all)' not supported in %s " - "(GLSL ES 1.00 or GLSL 1.20 required).", + "(GLSL ES 1.00 or GLSL 1.20 required)", state->get_version_string()); } else { state->all_invariant = true; } } +#line 3219 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 17: -/* Line 1787 of yacc.c */ -#line 323 "glsl_parser.yy" +#line 355 "glsl_parser.yy" /* yacc.c:1646 */ { - if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) { + if (!_mesa_glsl_process_extension((yyvsp[-3].identifier), & (yylsp[-3]), (yyvsp[-1].identifier), & (yylsp[-1]), state)) { YYERROR; } } +#line 3229 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 18: -/* Line 1787 of yacc.c */ -#line 332 "glsl_parser.yy" +#line 364 "glsl_parser.yy" /* yacc.c:1646 */ { /* FINISHME: The NULL test is required because pragmas are set to * FINISHME: NULL. (See production rule for external_declaration.) */ - if ((yyvsp[(1) - (1)].node) != NULL) - state->translation_unit.push_tail(& (yyvsp[(1) - (1)].node)->link); + if ((yyvsp[0].node) != NULL) + state->translation_unit.push_tail(& (yyvsp[0].node)->link); } +#line 3241 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 19: -/* Line 1787 of yacc.c */ -#line 340 "glsl_parser.yy" +#line 372 "glsl_parser.yy" /* yacc.c:1646 */ { /* FINISHME: The NULL test is required because pragmas are set to * FINISHME: NULL. (See production rule for external_declaration.) */ - if ((yyvsp[(2) - (2)].node) != NULL) - state->translation_unit.push_tail(& (yyvsp[(2) - (2)].node)->link); + if ((yyvsp[0].node) != NULL) + state->translation_unit.push_tail(& (yyvsp[0].node)->link); } +#line 3253 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 22: -/* Line 1787 of yacc.c */ -#line 356 "glsl_parser.yy" +#line 388 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.identifier = (yyvsp[(1) - (1)].identifier); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->primary_expression.identifier = (yyvsp[0].identifier); } +#line 3264 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 23: -/* Line 1787 of yacc.c */ -#line 363 "glsl_parser.yy" +#line 395 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.int_constant = (yyvsp[(1) - (1)].n); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->primary_expression.int_constant = (yyvsp[0].n); } +#line 3275 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 24: -/* Line 1787 of yacc.c */ -#line 370 "glsl_parser.yy" +#line 402 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.uint_constant = (yyvsp[(1) - (1)].n); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->primary_expression.uint_constant = (yyvsp[0].n); } +#line 3286 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 25: -/* Line 1787 of yacc.c */ -#line 377 "glsl_parser.yy" +#line 409 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.float_constant = (yyvsp[(1) - (1)].real); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->primary_expression.float_constant = (yyvsp[0].real); } +#line 3297 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 26: -/* Line 1787 of yacc.c */ -#line 384 "glsl_parser.yy" +#line 416 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.bool_constant = (yyvsp[(1) - (1)].n); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->primary_expression.bool_constant = (yyvsp[0].n); } +#line 3308 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 27: -/* Line 1787 of yacc.c */ -#line 391 "glsl_parser.yy" +#line 423 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(2) - (3)].expression); + (yyval.expression) = (yyvsp[-1].expression); } +#line 3316 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 29: -/* Line 1787 of yacc.c */ -#line 399 "glsl_parser.yy" +#line 431 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[-3].expression), (yyvsp[-1].expression), NULL); + (yyval.expression)->set_location_range((yylsp[-3]), (yylsp[0])); } +#line 3326 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 30: -/* Line 1787 of yacc.c */ -#line 405 "glsl_parser.yy" +#line 437 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (1)].expression); + (yyval.expression) = (yyvsp[0].expression); } +#line 3334 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 31: -/* Line 1787 of yacc.c */ -#line 409 "glsl_parser.yy" +#line 441 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->primary_expression.identifier = (yyvsp[(3) - (3)].identifier); + (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[-2].expression), NULL, NULL); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); + (yyval.expression)->primary_expression.identifier = (yyvsp[0].identifier); } +#line 3345 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 32: -/* Line 1787 of yacc.c */ -#line 416 "glsl_parser.yy" +#line 448 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[-1].expression), NULL, NULL); + (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 3355 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 33: -/* Line 1787 of yacc.c */ -#line 422 "glsl_parser.yy" +#line 454 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[-1].expression), NULL, NULL); + (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 3365 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 37: -/* Line 1787 of yacc.c */ -#line 440 "glsl_parser.yy" +#line 472 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[-2].expression), (yyvsp[0].expression), NULL); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3375 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 42: -/* Line 1787 of yacc.c */ -#line 459 "glsl_parser.yy" +#line 491 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (2)].expression); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(2) - (2)].expression)->link); + (yyval.expression) = (yyvsp[-1].expression); + (yyval.expression)->set_location((yylsp[-1])); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 3385 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 43: -/* Line 1787 of yacc.c */ -#line 465 "glsl_parser.yy" +#line 497 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (3)].expression); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link); + (yyval.expression) = (yyvsp[-2].expression); + (yyval.expression)->set_location((yylsp[-2])); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 3395 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 45: -/* Line 1787 of yacc.c */ -#line 481 "glsl_parser.yy" +#line 513 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_function_expression((yyvsp[0].type_specifier)); + (yyval.expression)->set_location((yylsp[0])); } +#line 3405 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 46: -/* Line 1787 of yacc.c */ -#line 487 "glsl_parser.yy" +#line 519 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); + ast_expression *callee = new(ctx) ast_expression((yyvsp[0].identifier)); + callee->set_location((yylsp[0])); (yyval.expression) = new(ctx) ast_function_expression(callee); - (yyval.expression)->set_location(yylloc); + (yyval.expression)->set_location((yylsp[0])); } +#line 3417 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 47: -/* Line 1787 of yacc.c */ -#line 494 "glsl_parser.yy" +#line 527 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); + ast_expression *callee = new(ctx) ast_expression((yyvsp[0].identifier)); + callee->set_location((yylsp[0])); (yyval.expression) = new(ctx) ast_function_expression(callee); - (yyval.expression)->set_location(yylloc); + (yyval.expression)->set_location((yylsp[0])); } +#line 3429 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 52: -/* Line 1787 of yacc.c */ -#line 514 "glsl_parser.yy" +#line 548 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (2)].expression); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(2) - (2)].expression)->link); + (yyval.expression) = (yyvsp[-1].expression); + (yyval.expression)->set_location((yylsp[-1])); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 3439 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 53: -/* Line 1787 of yacc.c */ -#line 520 "glsl_parser.yy" +#line 554 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (3)].expression); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link); + (yyval.expression) = (yyvsp[-2].expression); + (yyval.expression)->set_location((yylsp[-2])); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 3449 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 54: -/* Line 1787 of yacc.c */ -#line 532 "glsl_parser.yy" +#line 566 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (2)].identifier)); + ast_expression *callee = new(ctx) ast_expression((yyvsp[-1].identifier)); + callee->set_location((yylsp[-1])); (yyval.expression) = new(ctx) ast_function_expression(callee); - (yyval.expression)->set_location(yylloc); + (yyval.expression)->set_location((yylsp[-1])); } +#line 3461 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 56: -/* Line 1787 of yacc.c */ -#line 544 "glsl_parser.yy" +#line 579 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[0].expression), NULL, NULL); + (yyval.expression)->set_location((yylsp[-1])); } +#line 3471 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 57: -/* Line 1787 of yacc.c */ -#line 550 "glsl_parser.yy" +#line 585 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[0].expression), NULL, NULL); + (yyval.expression)->set_location((yylsp[-1])); } +#line 3481 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 58: -/* Line 1787 of yacc.c */ -#line 556 "glsl_parser.yy" +#line 591 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression((yyvsp[-1].n), (yyvsp[0].expression), NULL, NULL); + (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 3491 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 59: -/* Line 1787 of yacc.c */ -#line 565 "glsl_parser.yy" +#line 600 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_plus; } +#line 3497 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 60: -/* Line 1787 of yacc.c */ -#line 566 "glsl_parser.yy" +#line 601 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_neg; } +#line 3503 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 61: -/* Line 1787 of yacc.c */ -#line 567 "glsl_parser.yy" +#line 602 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_logic_not; } +#line 3509 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 62: -/* Line 1787 of yacc.c */ -#line 568 "glsl_parser.yy" +#line 603 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_bit_not; } +#line 3515 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 64: -/* Line 1787 of yacc.c */ -#line 574 "glsl_parser.yy" +#line 609 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3525 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 65: -/* Line 1787 of yacc.c */ -#line 580 "glsl_parser.yy" +#line 615 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3535 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 66: -/* Line 1787 of yacc.c */ -#line 586 "glsl_parser.yy" +#line 621 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3545 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 68: -/* Line 1787 of yacc.c */ -#line 596 "glsl_parser.yy" +#line 631 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3555 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 69: -/* Line 1787 of yacc.c */ -#line 602 "glsl_parser.yy" +#line 637 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3565 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 71: -/* Line 1787 of yacc.c */ -#line 612 "glsl_parser.yy" +#line 647 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3575 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 72: -/* Line 1787 of yacc.c */ -#line 618 "glsl_parser.yy" +#line 653 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3585 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 74: -/* Line 1787 of yacc.c */ -#line 628 "glsl_parser.yy" +#line 663 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3595 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 75: -/* Line 1787 of yacc.c */ -#line 634 "glsl_parser.yy" +#line 669 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3605 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 76: -/* Line 1787 of yacc.c */ -#line 640 "glsl_parser.yy" +#line 675 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3615 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 77: -/* Line 1787 of yacc.c */ -#line 646 "glsl_parser.yy" +#line 681 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3625 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 79: -/* Line 1787 of yacc.c */ -#line 656 "glsl_parser.yy" +#line 691 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3635 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 80: -/* Line 1787 of yacc.c */ -#line 662 "glsl_parser.yy" +#line 697 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3645 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 82: -/* Line 1787 of yacc.c */ -#line 672 "glsl_parser.yy" +#line 707 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3655 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 84: -/* Line 1787 of yacc.c */ -#line 682 "glsl_parser.yy" +#line 717 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3665 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 86: -/* Line 1787 of yacc.c */ -#line 692 "glsl_parser.yy" +#line 727 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3675 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 88: -/* Line 1787 of yacc.c */ -#line 702 "glsl_parser.yy" +#line 737 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3685 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 90: -/* Line 1787 of yacc.c */ -#line 712 "glsl_parser.yy" +#line 747 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3695 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 92: -/* Line 1787 of yacc.c */ -#line 722 "glsl_parser.yy" +#line 757 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3705 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 94: -/* Line 1787 of yacc.c */ -#line 732 "glsl_parser.yy" +#line 767 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression)); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[-4].expression), (yyvsp[-2].expression), (yyvsp[0].expression)); + (yyval.expression)->set_location_range((yylsp[-4]), (yylsp[0])); } +#line 3715 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 96: -/* Line 1787 of yacc.c */ -#line 742 "glsl_parser.yy" +#line 777 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); - (yyval.expression)->set_location(yylloc); + (yyval.expression) = new(ctx) ast_expression((yyvsp[-1].n), (yyvsp[-2].expression), (yyvsp[0].expression), NULL); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 3725 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 97: -/* Line 1787 of yacc.c */ -#line 750 "glsl_parser.yy" +#line 785 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_assign; } +#line 3731 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 98: -/* Line 1787 of yacc.c */ -#line 751 "glsl_parser.yy" +#line 786 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_mul_assign; } +#line 3737 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 99: -/* Line 1787 of yacc.c */ -#line 752 "glsl_parser.yy" +#line 787 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_div_assign; } +#line 3743 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 100: -/* Line 1787 of yacc.c */ -#line 753 "glsl_parser.yy" +#line 788 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_mod_assign; } +#line 3749 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 101: -/* Line 1787 of yacc.c */ -#line 754 "glsl_parser.yy" +#line 789 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_add_assign; } +#line 3755 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 102: -/* Line 1787 of yacc.c */ -#line 755 "glsl_parser.yy" +#line 790 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_sub_assign; } +#line 3761 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 103: -/* Line 1787 of yacc.c */ -#line 756 "glsl_parser.yy" +#line 791 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_ls_assign; } +#line 3767 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 104: -/* Line 1787 of yacc.c */ -#line 757 "glsl_parser.yy" +#line 792 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_rs_assign; } +#line 3773 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 105: -/* Line 1787 of yacc.c */ -#line 758 "glsl_parser.yy" +#line 793 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_and_assign; } +#line 3779 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 106: -/* Line 1787 of yacc.c */ -#line 759 "glsl_parser.yy" +#line 794 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_xor_assign; } +#line 3785 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 107: -/* Line 1787 of yacc.c */ -#line 760 "glsl_parser.yy" +#line 795 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.n) = ast_or_assign; } +#line 3791 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 108: -/* Line 1787 of yacc.c */ -#line 765 "glsl_parser.yy" +#line 800 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(1) - (1)].expression); + (yyval.expression) = (yyvsp[0].expression); } +#line 3799 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 109: -/* Line 1787 of yacc.c */ -#line 769 "glsl_parser.yy" +#line 804 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) { + if ((yyvsp[-2].expression)->oper != ast_sequence) { (yyval.expression) = new(ctx) ast_expression(ast_sequence, NULL, NULL, NULL); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(1) - (3)].expression)->link); + (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0])); + (yyval.expression)->expressions.push_tail(& (yyvsp[-2].expression)->link); } else { - (yyval.expression) = (yyvsp[(1) - (3)].expression); + (yyval.expression) = (yyvsp[-2].expression); } - (yyval.expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 3816 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 111: -/* Line 1787 of yacc.c */ -#line 789 "glsl_parser.yy" +#line 824 "glsl_parser.yy" /* yacc.c:1646 */ { state->symbols->pop_scope(); - (yyval.node) = (yyvsp[(1) - (2)].function); + (yyval.node) = (yyvsp[-1].function); } +#line 3825 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 112: -/* Line 1787 of yacc.c */ -#line 794 "glsl_parser.yy" +#line 829 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[(1) - (2)].declarator_list); + (yyval.node) = (yyvsp[-1].declarator_list); } +#line 3833 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 113: -/* Line 1787 of yacc.c */ -#line 798 "glsl_parser.yy" +#line 833 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyvsp[(3) - (4)].type_specifier)->default_precision = (yyvsp[(2) - (4)].n); - (yyval.node) = (yyvsp[(3) - (4)].type_specifier); + (yyvsp[-1].type_specifier)->default_precision = (yyvsp[-2].n); + (yyval.node) = (yyvsp[-1].type_specifier); } +#line 3842 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 114: -/* Line 1787 of yacc.c */ -#line 803 "glsl_parser.yy" +#line 838 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[(1) - (1)].node); + (yyval.node) = (yyvsp[0].node); } +#line 3850 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 118: -/* Line 1787 of yacc.c */ -#line 819 "glsl_parser.yy" +#line 854 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.function) = (yyvsp[(1) - (2)].function); - (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link); + (yyval.function) = (yyvsp[-1].function); + (yyval.function)->parameters.push_tail(& (yyvsp[0].parameter_declarator)->link); } +#line 3859 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 119: -/* Line 1787 of yacc.c */ -#line 824 "glsl_parser.yy" +#line 859 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.function) = (yyvsp[(1) - (3)].function); - (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link); + (yyval.function) = (yyvsp[-2].function); + (yyval.function)->parameters.push_tail(& (yyvsp[0].parameter_declarator)->link); } +#line 3868 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 120: -/* Line 1787 of yacc.c */ -#line 832 "glsl_parser.yy" +#line 867 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.function) = new(ctx) ast_function(); - (yyval.function)->set_location(yylloc); - (yyval.function)->return_type = (yyvsp[(1) - (3)].fully_specified_type); - (yyval.function)->identifier = (yyvsp[(2) - (3)].identifier); + (yyval.function)->set_location((yylsp[-1])); + (yyval.function)->return_type = (yyvsp[-2].fully_specified_type); + (yyval.function)->identifier = (yyvsp[-1].identifier); - state->symbols->add_function(new(state) ir_function((yyvsp[(2) - (3)].identifier))); + state->symbols->add_function(new(state) ir_function((yyvsp[-1].identifier))); state->symbols->push_scope(); } +#line 3883 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 121: -/* Line 1787 of yacc.c */ -#line 846 "glsl_parser.yy" +#line 881 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); - (yyval.parameter_declarator)->set_location(yylloc); + (yyval.parameter_declarator)->set_location_range((yylsp[-1]), (yylsp[0])); (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type(); - (yyval.parameter_declarator)->type->set_location(yylloc); - (yyval.parameter_declarator)->type->specifier = (yyvsp[(1) - (2)].type_specifier); - (yyval.parameter_declarator)->identifier = (yyvsp[(2) - (2)].identifier); + (yyval.parameter_declarator)->type->set_location((yylsp[-1])); + (yyval.parameter_declarator)->type->specifier = (yyvsp[-1].type_specifier); + (yyval.parameter_declarator)->identifier = (yyvsp[0].identifier); } +#line 3897 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 122: -/* Line 1787 of yacc.c */ -#line 856 "glsl_parser.yy" +#line 891 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); - (yyval.parameter_declarator)->set_location(yylloc); + (yyval.parameter_declarator)->set_location_range((yylsp[-2]), (yylsp[0])); (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type(); - (yyval.parameter_declarator)->type->set_location(yylloc); - (yyval.parameter_declarator)->type->specifier = (yyvsp[(1) - (5)].type_specifier); - (yyval.parameter_declarator)->identifier = (yyvsp[(2) - (5)].identifier); - (yyval.parameter_declarator)->is_array = true; - (yyval.parameter_declarator)->array_size = (yyvsp[(4) - (5)].expression); + (yyval.parameter_declarator)->type->set_location((yylsp[-2])); + (yyval.parameter_declarator)->type->specifier = (yyvsp[-2].type_specifier); + (yyval.parameter_declarator)->identifier = (yyvsp[-1].identifier); + (yyval.parameter_declarator)->array_specifier = (yyvsp[0].array_specifier); } +#line 3912 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 123: -/* Line 1787 of yacc.c */ -#line 871 "glsl_parser.yy" +#line 905 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator); - (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier); + (yyval.parameter_declarator) = (yyvsp[0].parameter_declarator); + (yyval.parameter_declarator)->type->qualifier = (yyvsp[-1].type_qualifier); } +#line 3921 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 124: -/* Line 1787 of yacc.c */ -#line 876 "glsl_parser.yy" +#line 910 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); - (yyval.parameter_declarator)->set_location(yylloc); + (yyval.parameter_declarator)->set_location((yylsp[0])); (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type(); - (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier); - (yyval.parameter_declarator)->type->specifier = (yyvsp[(2) - (2)].type_specifier); + (yyval.parameter_declarator)->type->set_location_range((yylsp[-1]), (yylsp[0])); + (yyval.parameter_declarator)->type->qualifier = (yyvsp[-1].type_qualifier); + (yyval.parameter_declarator)->type->specifier = (yyvsp[0].type_specifier); } +#line 3935 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 125: -/* Line 1787 of yacc.c */ -#line 888 "glsl_parser.yy" +#line 923 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); } +#line 3943 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 126: -/* Line 1787 of yacc.c */ -#line 892 "glsl_parser.yy" +#line 927 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].type_qualifier).flags.q.constant) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate const qualifier.\n"); + if ((yyvsp[0].type_qualifier).flags.q.constant) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate const qualifier"); - (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier); + (yyval.type_qualifier) = (yyvsp[0].type_qualifier); (yyval.type_qualifier).flags.q.constant = 1; } +#line 3955 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 127: -/* Line 1787 of yacc.c */ -#line 900 "glsl_parser.yy" +#line 935 "glsl_parser.yy" /* yacc.c:1646 */ { - if (((yyvsp[(1) - (2)].type_qualifier).flags.q.in || (yyvsp[(1) - (2)].type_qualifier).flags.q.out) && ((yyvsp[(2) - (2)].type_qualifier).flags.q.in || (yyvsp[(2) - (2)].type_qualifier).flags.q.out)) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate in/out/inout qualifier\n"); + if (((yyvsp[-1].type_qualifier).flags.q.in || (yyvsp[-1].type_qualifier).flags.q.out) && ((yyvsp[0].type_qualifier).flags.q.in || (yyvsp[0].type_qualifier).flags.q.out)) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate in/out/inout qualifier"); - if (!state->ARB_shading_language_420pack_enable && (yyvsp[(2) - (2)].type_qualifier).flags.q.constant) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "const must be specified before " - "in/out/inout.\n"); + if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.q.constant) + _mesa_glsl_error(&(yylsp[-1]), state, "const must be specified before " + "in/out/inout"); - (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).merge_qualifier(&(yylsp[(1) - (2)]), state, (yyvsp[(2) - (2)].type_qualifier)); + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); + (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier)); } +#line 3971 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 128: -/* Line 1787 of yacc.c */ -#line 912 "glsl_parser.yy" +#line 947 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].type_qualifier).precision != ast_precision_none) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate precision qualifier.\n"); + if ((yyvsp[0].type_qualifier).precision != ast_precision_none) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate precision qualifier"); - if (!state->ARB_shading_language_420pack_enable && (yyvsp[(2) - (2)].type_qualifier).flags.i != 0) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Precision qualifiers must come last.\n"); + if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.i != 0) + _mesa_glsl_error(&(yylsp[-1]), state, "precision qualifiers must come last"); - (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier); - (yyval.type_qualifier).precision = (yyvsp[(1) - (2)].n); + (yyval.type_qualifier) = (yyvsp[0].type_qualifier); + (yyval.type_qualifier).precision = (yyvsp[-1].n); } +#line 3986 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 129: -/* Line 1787 of yacc.c */ -#line 925 "glsl_parser.yy" +#line 960 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; } +#line 3995 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 130: -/* Line 1787 of yacc.c */ -#line 930 "glsl_parser.yy" +#line 965 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.out = 1; } +#line 4004 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 131: -/* Line 1787 of yacc.c */ -#line 935 "glsl_parser.yy" +#line 970 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; (yyval.type_qualifier).flags.q.out = 1; } +#line 4014 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 134: -/* Line 1787 of yacc.c */ -#line 949 "glsl_parser.yy" +#line 984 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL); + decl->set_location((yylsp[0])); - (yyval.declarator_list) = (yyvsp[(1) - (3)].declarator_list); + (yyval.declarator_list) = (yyvsp[-2].declarator_list); (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (3)].identifier), ir_var_auto)); + state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[0].identifier), ir_var_auto)); } +#line 4028 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 135: -/* Line 1787 of yacc.c */ -#line 959 "glsl_parser.yy" +#line 994 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL); + decl->set_location_range((yylsp[-1]), (yylsp[0])); - (yyval.declarator_list) = (yyvsp[(1) - (5)].declarator_list); + (yyval.declarator_list) = (yyvsp[-3].declarator_list); (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (5)].identifier), ir_var_auto)); + state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-1].identifier), ir_var_auto)); } +#line 4042 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 136: -/* Line 1787 of yacc.c */ -#line 969 "glsl_parser.yy" +#line 1004 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-3].identifier), (yyvsp[-2].array_specifier), (yyvsp[0].expression)); + decl->set_location_range((yylsp[-3]), (yylsp[-2])); - (yyval.declarator_list) = (yyvsp[(1) - (6)].declarator_list); + (yyval.declarator_list) = (yyvsp[-5].declarator_list); (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (6)].identifier), ir_var_auto)); + state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-3].identifier), ir_var_auto)); } +#line 4056 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 137: -/* Line 1787 of yacc.c */ -#line 979 "glsl_parser.yy" +#line 1014 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression)); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression)); + decl->set_location((yylsp[-2])); - (yyval.declarator_list) = (yyvsp[(1) - (7)].declarator_list); + (yyval.declarator_list) = (yyvsp[-4].declarator_list); (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (7)].identifier), ir_var_auto)); - if ((yyvsp[(7) - (7)].expression)->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)(yyvsp[(7) - (7)].expression); - ast_type_specifier *type = new(ctx) ast_type_specifier((yyvsp[(1) - (7)].declarator_list)->type->specifier, true, NULL); - _mesa_ast_set_aggregate_type(type, ai, state); - } + state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-2].identifier), ir_var_auto)); } +#line 4070 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 138: -/* Line 1787 of yacc.c */ -#line 994 "glsl_parser.yy" +#line 1028 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression)); - decl->set_location(yylloc); - - (yyval.declarator_list) = (yyvsp[(1) - (8)].declarator_list); - (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (8)].identifier), ir_var_auto)); - if ((yyvsp[(8) - (8)].expression)->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)(yyvsp[(8) - (8)].expression); - ast_type_specifier *type = new(ctx) ast_type_specifier((yyvsp[(1) - (8)].declarator_list)->type->specifier, true, (yyvsp[(5) - (8)].expression)); - _mesa_ast_set_aggregate_type(type, ai, state); - } + /* Empty declaration list is valid. */ + (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[0].fully_specified_type)); + (yyval.declarator_list)->set_location((yylsp[0])); } +#line 4081 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 139: -/* Line 1787 of yacc.c */ -#line 1009 "glsl_parser.yy" +#line 1035 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression)); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL); + decl->set_location((yylsp[0])); - (yyval.declarator_list) = (yyvsp[(1) - (5)].declarator_list); + (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-1].fully_specified_type)); + (yyval.declarator_list)->set_location_range((yylsp[-1]), (yylsp[0])); (yyval.declarator_list)->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (5)].identifier), ir_var_auto)); - if ((yyvsp[(5) - (5)].expression)->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)(yyvsp[(5) - (5)].expression); - _mesa_ast_set_aggregate_type((yyvsp[(1) - (5)].declarator_list)->type->specifier, ai, state); - } } +#line 4095 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 140: -/* Line 1787 of yacc.c */ -#line 1027 "glsl_parser.yy" +#line 1045 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - /* Empty declaration list is valid. */ - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (1)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL); + decl->set_location_range((yylsp[-1]), (yylsp[0])); + + (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-2].fully_specified_type)); + (yyval.declarator_list)->set_location_range((yylsp[-2]), (yylsp[0])); + (yyval.declarator_list)->declarations.push_tail(&decl->link); } +#line 4109 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 141: -/* Line 1787 of yacc.c */ -#line 1034 "glsl_parser.yy" +#line 1055 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-3].identifier), (yyvsp[-2].array_specifier), (yyvsp[0].expression)); + decl->set_location_range((yylsp[-3]), (yylsp[-2])); - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (2)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); + (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-4].fully_specified_type)); + (yyval.declarator_list)->set_location_range((yylsp[-4]), (yylsp[-2])); (yyval.declarator_list)->declarations.push_tail(&decl->link); } +#line 4123 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 142: -/* Line 1787 of yacc.c */ -#line 1043 "glsl_parser.yy" +#line 1065 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression)); + decl->set_location((yylsp[-2])); - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (4)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); + (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-3].fully_specified_type)); + (yyval.declarator_list)->set_location_range((yylsp[-3]), (yylsp[-2])); (yyval.declarator_list)->declarations.push_tail(&decl->link); } +#line 4137 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 143: -/* Line 1787 of yacc.c */ -#line 1052 "glsl_parser.yy" - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL); - - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (5)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); - (yyval.declarator_list)->declarations.push_tail(&decl->link); - } - break; - - case 144: -/* Line 1787 of yacc.c */ -#line 1061 "glsl_parser.yy" - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression)); - - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (6)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); - (yyval.declarator_list)->declarations.push_tail(&decl->link); - if ((yyvsp[(6) - (6)].expression)->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)(yyvsp[(6) - (6)].expression); - ast_type_specifier *type = new(ctx) ast_type_specifier((yyvsp[(1) - (6)].fully_specified_type)->specifier, true, NULL); - _mesa_ast_set_aggregate_type(type, ai, state); - } - } - break; - - case 145: -/* Line 1787 of yacc.c */ -#line 1075 "glsl_parser.yy" - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression)); - - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (7)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); - (yyval.declarator_list)->declarations.push_tail(&decl->link); - if ((yyvsp[(7) - (7)].expression)->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)(yyvsp[(7) - (7)].expression); - ast_type_specifier *type = new(ctx) ast_type_specifier((yyvsp[(1) - (7)].fully_specified_type)->specifier, true, (yyvsp[(4) - (7)].expression)); - _mesa_ast_set_aggregate_type(type, ai, state); - } - } - break; - - case 146: -/* Line 1787 of yacc.c */ -#line 1089 "glsl_parser.yy" +#line 1075 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression)); - - (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[(1) - (4)].fully_specified_type)); - (yyval.declarator_list)->set_location(yylloc); - (yyval.declarator_list)->declarations.push_tail(&decl->link); - if ((yyvsp[(4) - (4)].expression)->oper == ast_aggregate) { - _mesa_ast_set_aggregate_type((yyvsp[(1) - (4)].fully_specified_type)->specifier, (yyvsp[(4) - (4)].expression), state); - } - } - break; - - case 147: -/* Line 1787 of yacc.c */ -#line 1101 "glsl_parser.yy" - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL); + decl->set_location((yylsp[0])); (yyval.declarator_list) = new(ctx) ast_declarator_list(NULL); - (yyval.declarator_list)->set_location(yylloc); + (yyval.declarator_list)->set_location_range((yylsp[-1]), (yylsp[0])); (yyval.declarator_list)->invariant = true; (yyval.declarator_list)->declarations.push_tail(&decl->link); } +#line 4153 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 148: -/* Line 1787 of yacc.c */ -#line 1115 "glsl_parser.yy" + case 144: +#line 1090 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); - (yyval.fully_specified_type)->set_location(yylloc); - (yyval.fully_specified_type)->specifier = (yyvsp[(1) - (1)].type_specifier); + (yyval.fully_specified_type)->set_location((yylsp[0])); + (yyval.fully_specified_type)->specifier = (yyvsp[0].type_specifier); } +#line 4164 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 149: -/* Line 1787 of yacc.c */ -#line 1122 "glsl_parser.yy" + case 145: +#line 1097 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); - (yyval.fully_specified_type)->set_location(yylloc); - (yyval.fully_specified_type)->qualifier = (yyvsp[(1) - (2)].type_qualifier); - (yyval.fully_specified_type)->specifier = (yyvsp[(2) - (2)].type_specifier); + (yyval.fully_specified_type)->set_location_range((yylsp[-1]), (yylsp[0])); + (yyval.fully_specified_type)->qualifier = (yyvsp[-1].type_qualifier); + (yyval.fully_specified_type)->specifier = (yyvsp[0].type_specifier); } +#line 4176 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 150: -/* Line 1787 of yacc.c */ -#line 1133 "glsl_parser.yy" + case 146: +#line 1108 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier); + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); } +#line 4184 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 152: -/* Line 1787 of yacc.c */ -#line 1141 "glsl_parser.yy" + case 148: +#line 1116 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.type_qualifier) = (yyvsp[(1) - (3)].type_qualifier); - if (!(yyval.type_qualifier).merge_qualifier(& (yylsp[(3) - (3)]), state, (yyvsp[(3) - (3)].type_qualifier))) { + (yyval.type_qualifier) = (yyvsp[-2].type_qualifier); + if (!(yyval.type_qualifier).merge_qualifier(& (yylsp[0]), state, (yyvsp[0].type_qualifier))) { YYERROR; } } +#line 4195 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 153: -/* Line 1787 of yacc.c */ -#line 1150 "glsl_parser.yy" - { (yyval.n) = (yyvsp[(1) - (1)].n); } + case 149: +#line 1125 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.n) = (yyvsp[0].n); } +#line 4201 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 154: -/* Line 1787 of yacc.c */ -#line 1151 "glsl_parser.yy" - { (yyval.n) = (yyvsp[(1) - (1)].n); } + case 150: +#line 1126 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.n) = (yyvsp[0].n); } +#line 4207 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 155: -/* Line 1787 of yacc.c */ -#line 1156 "glsl_parser.yy" + case 151: +#line 1131 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); /* Layout qualifiers for ARB_fragment_coord_conventions. */ - if (!(yyval.type_qualifier).flags.i && state->ARB_fragment_coord_conventions_enable) { - if (strcmp((yyvsp[(1) - (1)].identifier), "origin_upper_left") == 0) { + if (!(yyval.type_qualifier).flags.i && (state->ARB_fragment_coord_conventions_enable || + state->is_version(150, 0))) { + if (match_layout_qualifier((yyvsp[0].identifier), "origin_upper_left", state) == 0) { (yyval.type_qualifier).flags.q.origin_upper_left = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "pixel_center_integer") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "pixel_center_integer", + state) == 0) { (yyval.type_qualifier).flags.q.pixel_center_integer = 1; } if ((yyval.type_qualifier).flags.i && state->ARB_fragment_coord_conventions_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (1)]), state, + _mesa_glsl_warning(& (yylsp[0]), state, "GL_ARB_fragment_coord_conventions layout " - "identifier `%s' used\n", (yyvsp[(1) - (1)].identifier)); + "identifier `%s' used", (yyvsp[0].identifier)); } } @@ -4168,215 +4232,396 @@ yyreduce: if (!(yyval.type_qualifier).flags.i && (state->AMD_conservative_depth_enable || state->ARB_conservative_depth_enable)) { - if (strcmp((yyvsp[(1) - (1)].identifier), "depth_any") == 0) { + if (match_layout_qualifier((yyvsp[0].identifier), "depth_any", state) == 0) { (yyval.type_qualifier).flags.q.depth_any = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_greater") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_greater", state) == 0) { (yyval.type_qualifier).flags.q.depth_greater = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_less") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_less", state) == 0) { (yyval.type_qualifier).flags.q.depth_less = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_unchanged") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_unchanged", + state) == 0) { (yyval.type_qualifier).flags.q.depth_unchanged = 1; } if ((yyval.type_qualifier).flags.i && state->AMD_conservative_depth_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (1)]), state, + _mesa_glsl_warning(& (yylsp[0]), state, "GL_AMD_conservative_depth " - "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].identifier)); + "layout qualifier `%s' is used", (yyvsp[0].identifier)); } if ((yyval.type_qualifier).flags.i && state->ARB_conservative_depth_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (1)]), state, + _mesa_glsl_warning(& (yylsp[0]), state, "GL_ARB_conservative_depth " - "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].identifier)); + "layout qualifier `%s' is used", (yyvsp[0].identifier)); } } /* See also interface_block_layout_qualifier. */ - if (!(yyval.type_qualifier).flags.i && state->ARB_uniform_buffer_object_enable) { - if (strcmp((yyvsp[(1) - (1)].identifier), "std140") == 0) { + if (!(yyval.type_qualifier).flags.i && state->has_uniform_buffer_objects()) { + if (match_layout_qualifier((yyvsp[0].identifier), "std140", state) == 0) { (yyval.type_qualifier).flags.q.std140 = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "shared") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "shared", state) == 0) { (yyval.type_qualifier).flags.q.shared = 1; - } else if (strcmp((yyvsp[(1) - (1)].identifier), "column_major") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "column_major", state) == 0) { (yyval.type_qualifier).flags.q.column_major = 1; /* "row_major" is a reserved word in GLSL 1.30+. Its token is parsed * below in the interface_block_layout_qualifier rule. * * It is not a reserved word in GLSL ES 3.00, so it's handled here as * an identifier. + * + * Also, this takes care of alternate capitalizations of + * "row_major" (which is necessary because layout qualifiers + * are case-insensitive in desktop GLSL). */ - } else if (strcmp((yyvsp[(1) - (1)].identifier), "row_major") == 0) { + } else if (match_layout_qualifier((yyvsp[0].identifier), "row_major", state) == 0) { (yyval.type_qualifier).flags.q.row_major = 1; + /* "packed" is a reserved word in GLSL, and its token is + * parsed below in the interface_block_layout_qualifier rule. + * However, we must take care of alternate capitalizations of + * "packed", because layout qualifiers are case-insensitive + * in desktop GLSL. + */ + } else if (match_layout_qualifier((yyvsp[0].identifier), "packed", state) == 0) { + (yyval.type_qualifier).flags.q.packed = 1; } if ((yyval.type_qualifier).flags.i && state->ARB_uniform_buffer_object_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (1)]), state, + _mesa_glsl_warning(& (yylsp[0]), state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].identifier)); + "layout qualifier `%s' is used", (yyvsp[0].identifier)); } } + /* Layout qualifiers for GLSL 1.50 geometry shaders. */ if (!(yyval.type_qualifier).flags.i) { - _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "unrecognized layout identifier " - "`%s'\n", (yyvsp[(1) - (1)].identifier)); + static const struct { + const char *s; + GLenum e; + } map[] = { + { "points", GL_POINTS }, + { "lines", GL_LINES }, + { "lines_adjacency", GL_LINES_ADJACENCY }, + { "line_strip", GL_LINE_STRIP }, + { "triangles", GL_TRIANGLES }, + { "triangles_adjacency", GL_TRIANGLES_ADJACENCY }, + { "triangle_strip", GL_TRIANGLE_STRIP }, + }; + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier((yyvsp[0].identifier), map[i].s, state) == 0) { + (yyval.type_qualifier).flags.q.prim_type = 1; + (yyval.type_qualifier).prim_type = map[i].e; + break; + } + } + + if ((yyval.type_qualifier).flags.i && !state->is_version(150, 0)) { + _mesa_glsl_error(& (yylsp[0]), state, "#version 150 layout " + "qualifier `%s' used", (yyvsp[0].identifier)); + } + } + + /* Layout qualifiers for ARB_shader_image_load_store. */ + if (state->ARB_shader_image_load_store_enable || + state->is_version(420, 0)) { + if (!(yyval.type_qualifier).flags.i) { + static const struct { + const char *name; + GLenum format; + glsl_base_type base_type; + } map[] = { + { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT }, + { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT }, + { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT }, + { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT }, + { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT }, + { "r32f", GL_R32F, GLSL_TYPE_FLOAT }, + { "r16f", GL_R16F, GLSL_TYPE_FLOAT }, + { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT }, + { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT }, + { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT }, + { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT }, + { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT }, + { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT }, + { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT }, + { "r32ui", GL_R32UI, GLSL_TYPE_UINT }, + { "r16ui", GL_R16UI, GLSL_TYPE_UINT }, + { "r8ui", GL_R8UI, GLSL_TYPE_UINT }, + { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT }, + { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT }, + { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT }, + { "rg32i", GL_RG32I, GLSL_TYPE_INT }, + { "rg16i", GL_RG16I, GLSL_TYPE_INT }, + { "rg8i", GL_RG8I, GLSL_TYPE_INT }, + { "r32i", GL_R32I, GLSL_TYPE_INT }, + { "r16i", GL_R16I, GLSL_TYPE_INT }, + { "r8i", GL_R8I, GLSL_TYPE_INT }, + { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT }, + { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT }, + { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT }, + { "rg16", GL_RG16, GLSL_TYPE_FLOAT }, + { "rg8", GL_RG8, GLSL_TYPE_FLOAT }, + { "r16", GL_R16, GLSL_TYPE_FLOAT }, + { "r8", GL_R8, GLSL_TYPE_FLOAT }, + { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT }, + { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT }, + { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT }, + { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT }, + { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT }, + { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT } + }; + + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier((yyvsp[0].identifier), map[i].name, state) == 0) { + (yyval.type_qualifier).flags.q.explicit_image_format = 1; + (yyval.type_qualifier).image_format = map[i].format; + (yyval.type_qualifier).image_base_type = map[i].base_type; + break; + } + } + } + + if (!(yyval.type_qualifier).flags.i && + match_layout_qualifier((yyvsp[0].identifier), "early_fragment_tests", state) == 0) { + (yyval.type_qualifier).flags.q.early_fragment_tests = 1; + } + } + + if (!(yyval.type_qualifier).flags.i) { + _mesa_glsl_error(& (yylsp[0]), state, "unrecognized layout identifier " + "`%s'", (yyvsp[0].identifier)); YYERROR; } } +#line 4396 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 156: -/* Line 1787 of yacc.c */ -#line 1232 "glsl_parser.yy" + case 152: +#line 1316 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); - if (state->ARB_explicit_attrib_location_enable) { - if (strcmp("location", (yyvsp[(1) - (3)].identifier)) == 0) { - (yyval.type_qualifier).flags.q.explicit_location = 1; + if (match_layout_qualifier("location", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.explicit_location = 1; - if ((yyvsp[(3) - (3)].n) >= 0) { - (yyval.type_qualifier).location = (yyvsp[(3) - (3)].n); - } else { - _mesa_glsl_error(& (yylsp[(3) - (3)]), state, - "invalid location %d specified\n", (yyvsp[(3) - (3)].n)); - YYERROR; - } + if ((yyval.type_qualifier).flags.q.attribute == 1 && + state->ARB_explicit_attrib_location_warn) { + _mesa_glsl_warning(& (yylsp[-2]), state, + "GL_ARB_explicit_attrib_location layout " + "identifier `%s' used", (yyvsp[-2].identifier)); } - if (strcmp("index", (yyvsp[(1) - (3)].identifier)) == 0) { - (yyval.type_qualifier).flags.q.explicit_index = 1; + if ((yyvsp[0].n) >= 0) { + (yyval.type_qualifier).location = (yyvsp[0].n); + } else { + _mesa_glsl_error(& (yylsp[0]), state, "invalid location %d specified", (yyvsp[0].n)); + YYERROR; + } + } - if ((yyvsp[(3) - (3)].n) >= 0) { - (yyval.type_qualifier).index = (yyvsp[(3) - (3)].n); - } else { - _mesa_glsl_error(& (yylsp[(3) - (3)]), state, - "invalid index %d specified\n", (yyvsp[(3) - (3)].n)); + if (match_layout_qualifier("index", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.explicit_index = 1; + + if ((yyvsp[0].n) >= 0) { + (yyval.type_qualifier).index = (yyvsp[0].n); + } else { + _mesa_glsl_error(& (yylsp[0]), state, "invalid index %d specified", (yyvsp[0].n)); + YYERROR; + } + } + + if ((state->ARB_shading_language_420pack_enable || + state->ARB_shader_atomic_counters_enable) && + match_layout_qualifier("binding", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.explicit_binding = 1; + (yyval.type_qualifier).binding = (yyvsp[0].n); + } + + if (state->ARB_shader_atomic_counters_enable && + match_layout_qualifier("offset", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.explicit_offset = 1; + (yyval.type_qualifier).offset = (yyvsp[0].n); + } + + if (match_layout_qualifier("max_vertices", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.max_vertices = 1; + + if ((yyvsp[0].n) < 0) { + _mesa_glsl_error(& (yylsp[0]), state, + "invalid max_vertices %d specified", (yyvsp[0].n)); + YYERROR; + } else { + (yyval.type_qualifier).max_vertices = (yyvsp[0].n); + if (!state->is_version(150, 0)) { + _mesa_glsl_error(& (yylsp[0]), state, + "#version 150 max_vertices qualifier " + "specified", (yyvsp[0].n)); + } + } + } + + static const char * const local_size_qualifiers[3] = { + "local_size_x", + "local_size_y", + "local_size_z", + }; + for (int i = 0; i < 3; i++) { + if (match_layout_qualifier(local_size_qualifiers[i], (yyvsp[-2].identifier), + state) == 0) { + if ((yyvsp[0].n) <= 0) { + _mesa_glsl_error(& (yylsp[0]), state, + "invalid %s of %d specified", + local_size_qualifiers[i], (yyvsp[0].n)); YYERROR; + } else if (!state->is_version(430, 0) && + !state->ARB_compute_shader_enable) { + _mesa_glsl_error(& (yylsp[0]), state, + "%s qualifier requires GLSL 4.30 or " + "ARB_compute_shader", + local_size_qualifiers[i]); + YYERROR; + } else { + (yyval.type_qualifier).flags.q.local_size |= (1 << i); + (yyval.type_qualifier).local_size[i] = (yyvsp[0].n); } + break; } } - if (state->ARB_shading_language_420pack_enable && - strcmp("binding", (yyvsp[(1) - (3)].identifier)) == 0) { - (yyval.type_qualifier).flags.q.explicit_binding = 1; - (yyval.type_qualifier).binding = (yyvsp[(3) - (3)].n); + if (match_layout_qualifier("invocations", (yyvsp[-2].identifier), state) == 0) { + (yyval.type_qualifier).flags.q.invocations = 1; + + if ((yyvsp[0].n) <= 0) { + _mesa_glsl_error(& (yylsp[0]), state, + "invalid invocations %d specified", (yyvsp[0].n)); + YYERROR; + } else if ((yyvsp[0].n) > MAX_GEOMETRY_SHADER_INVOCATIONS) { + _mesa_glsl_error(& (yylsp[0]), state, + "invocations (%d) exceeds " + "GL_MAX_GEOMETRY_SHADER_INVOCATIONS", (yyvsp[0].n)); + YYERROR; + } else { + (yyval.type_qualifier).invocations = (yyvsp[0].n); + if (!state->is_version(400, 0) && + !state->ARB_gpu_shader5_enable) { + _mesa_glsl_error(& (yylsp[0]), state, + "GL_ARB_gpu_shader5 invocations " + "qualifier specified", (yyvsp[0].n)); + } + } } /* If the identifier didn't match any known layout identifiers, * emit an error. */ if (!(yyval.type_qualifier).flags.i) { - _mesa_glsl_error(& (yylsp[(1) - (3)]), state, "unrecognized layout identifier " - "`%s'\n", (yyvsp[(1) - (3)].identifier)); + _mesa_glsl_error(& (yylsp[-2]), state, "unrecognized layout identifier " + "`%s'", (yyvsp[-2].identifier)); YYERROR; - } else if (state->ARB_explicit_attrib_location_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (3)]), state, - "GL_ARB_explicit_attrib_location layout " - "identifier `%s' used\n", (yyvsp[(1) - (3)].identifier)); } } +#line 4523 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 157: -/* Line 1787 of yacc.c */ -#line 1281 "glsl_parser.yy" + case 153: +#line 1439 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.type_qualifier) = (yyvsp[(1) - (1)].type_qualifier); + (yyval.type_qualifier) = (yyvsp[0].type_qualifier); /* Layout qualifiers for ARB_uniform_buffer_object. */ - if ((yyval.type_qualifier).flags.q.uniform && !state->ARB_uniform_buffer_object_enable) { - _mesa_glsl_error(& (yylsp[(1) - (1)]), state, + if ((yyval.type_qualifier).flags.q.uniform && !state->has_uniform_buffer_objects()) { + _mesa_glsl_error(& (yylsp[0]), state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].type_qualifier)); + "layout qualifier `%s' is used", (yyvsp[0].type_qualifier)); } else if ((yyval.type_qualifier).flags.q.uniform && state->ARB_uniform_buffer_object_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (1)]), state, + _mesa_glsl_warning(& (yylsp[0]), state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].type_qualifier)); + "layout qualifier `%s' is used", (yyvsp[0].type_qualifier)); } } +#line 4541 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 158: -/* Line 1787 of yacc.c */ -#line 1303 "glsl_parser.yy" + case 154: +#line 1465 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.row_major = 1; } +#line 4550 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 159: -/* Line 1787 of yacc.c */ -#line 1308 "glsl_parser.yy" + case 155: +#line 1470 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.packed = 1; } +#line 4559 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 160: -/* Line 1787 of yacc.c */ -#line 1316 "glsl_parser.yy" + case 156: +#line 1478 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.smooth = 1; } +#line 4568 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 161: -/* Line 1787 of yacc.c */ -#line 1321 "glsl_parser.yy" + case 157: +#line 1483 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.flat = 1; } +#line 4577 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 162: -/* Line 1787 of yacc.c */ -#line 1326 "glsl_parser.yy" + case 158: +#line 1488 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.noperspective = 1; } +#line 4586 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 163: -/* Line 1787 of yacc.c */ -#line 1335 "glsl_parser.yy" + case 159: +#line 1497 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.invariant = 1; } +#line 4595 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 168: -/* Line 1787 of yacc.c */ -#line 1344 "glsl_parser.yy" + case 164: +#line 1506 "glsl_parser.yy" /* yacc.c:1646 */ { memset(&(yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); - (yyval.type_qualifier).precision = (yyvsp[(1) - (1)].n); + (yyval.type_qualifier).precision = (yyvsp[0].n); } +#line 4604 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 169: -/* Line 1787 of yacc.c */ -#line 1362 "glsl_parser.yy" + case 165: +#line 1524 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].type_qualifier).flags.q.invariant) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate \"invariant\" qualifier.\n"); + if ((yyvsp[0].type_qualifier).flags.q.invariant) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate \"invariant\" qualifier"); - if ((yyvsp[(2) - (2)].type_qualifier).has_layout()) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, - "\"invariant\" cannot be used with layout(...).\n"); + if ((yyvsp[0].type_qualifier).has_layout()) { + _mesa_glsl_error(&(yylsp[-1]), state, + "\"invariant\" cannot be used with layout(...)"); } - (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier); + (yyval.type_qualifier) = (yyvsp[0].type_qualifier); (yyval.type_qualifier).flags.q.invariant = 1; } +#line 4621 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 170: -/* Line 1787 of yacc.c */ -#line 1375 "glsl_parser.yy" + case 166: +#line 1537 "glsl_parser.yy" /* yacc.c:1646 */ { /* Section 4.3 of the GLSL 1.40 specification states: * "...qualified with one of these interpolation qualifiers" @@ -4388,27 +4633,27 @@ yyreduce: * ...which means that e.g. smooth can't precede smooth, so there can be * only one after all, and the 1.40 text is a clarification, not a change. */ - if ((yyvsp[(2) - (2)].type_qualifier).has_interpolation()) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate interpolation qualifier.\n"); + if ((yyvsp[0].type_qualifier).has_interpolation()) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate interpolation qualifier"); - if ((yyvsp[(2) - (2)].type_qualifier).has_layout()) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Interpolation qualifiers cannot be used " - "with layout(...).\n"); + if ((yyvsp[0].type_qualifier).has_layout()) { + _mesa_glsl_error(&(yylsp[-1]), state, "interpolation qualifiers cannot be used " + "with layout(...)"); } - if (!state->ARB_shading_language_420pack_enable && (yyvsp[(2) - (2)].type_qualifier).flags.q.invariant) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Interpolation qualifiers must come " - "after \"invariant\".\n"); + if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.q.invariant) { + _mesa_glsl_error(&(yylsp[-1]), state, "interpolation qualifiers must come " + "after \"invariant\""); } - (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).merge_qualifier(&(yylsp[(1) - (2)]), state, (yyvsp[(2) - (2)].type_qualifier)); + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); + (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier)); } +#line 4653 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 171: -/* Line 1787 of yacc.c */ -#line 1403 "glsl_parser.yy" + case 167: +#line 1565 "glsl_parser.yy" /* yacc.c:1646 */ { /* The GLSL 1.50 grammar indicates that a layout(...) declaration can be * used standalone or immediately before a storage qualifier. It cannot @@ -4416,1214 +4661,1515 @@ yyreduce: * appear to be any text indicating that it must come before the storage * qualifier, but always seems to in examples. */ - if (!state->ARB_shading_language_420pack_enable && (yyvsp[(2) - (2)].type_qualifier).has_layout()) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate layout(...) qualifiers.\n"); + if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).has_layout()) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate layout(...) qualifiers"); - if ((yyvsp[(2) - (2)].type_qualifier).flags.q.invariant) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "layout(...) cannot be used with " - "the \"invariant\" qualifier\n"); + if ((yyvsp[0].type_qualifier).flags.q.invariant) + _mesa_glsl_error(&(yylsp[-1]), state, "layout(...) cannot be used with " + "the \"invariant\" qualifier"); - if ((yyvsp[(2) - (2)].type_qualifier).has_interpolation()) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "layout(...) cannot be used with " - "interpolation qualifiers.\n"); + if ((yyvsp[0].type_qualifier).has_interpolation()) { + _mesa_glsl_error(&(yylsp[-1]), state, "layout(...) cannot be used with " + "interpolation qualifiers"); } - (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).merge_qualifier(&(yylsp[(1) - (2)]), state, (yyvsp[(2) - (2)].type_qualifier)); + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); + (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier)); } +#line 4680 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 172: -/* Line 1787 of yacc.c */ -#line 1426 "glsl_parser.yy" + case 168: +#line 1588 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].type_qualifier).has_auxiliary_storage()) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, - "Duplicate auxiliary storage qualifier (centroid).\n"); + if ((yyvsp[0].type_qualifier).has_auxiliary_storage()) { + _mesa_glsl_error(&(yylsp[-1]), state, + "duplicate auxiliary storage qualifier (centroid or sample)"); } if (!state->ARB_shading_language_420pack_enable && - ((yyvsp[(2) - (2)].type_qualifier).flags.q.invariant || (yyvsp[(2) - (2)].type_qualifier).has_interpolation() || (yyvsp[(2) - (2)].type_qualifier).has_layout())) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Auxiliary storage qualifiers must come " - "just before storage qualifiers.\n"); + ((yyvsp[0].type_qualifier).flags.q.invariant || (yyvsp[0].type_qualifier).has_interpolation() || (yyvsp[0].type_qualifier).has_layout())) { + _mesa_glsl_error(&(yylsp[-1]), state, "auxiliary storage qualifiers must come " + "just before storage qualifiers"); } - (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i; + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); + (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier)); } +#line 4699 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 173: -/* Line 1787 of yacc.c */ -#line 1441 "glsl_parser.yy" + case 169: +#line 1603 "glsl_parser.yy" /* yacc.c:1646 */ { /* Section 4.3 of the GLSL 1.20 specification states: * "Variable declarations may have a storage qualifier specified..." * 1.30 clarifies this to "may have one storage qualifier". */ - if ((yyvsp[(2) - (2)].type_qualifier).has_storage()) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate storage qualifier.\n"); + if ((yyvsp[0].type_qualifier).has_storage()) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate storage qualifier"); if (!state->ARB_shading_language_420pack_enable && - ((yyvsp[(2) - (2)].type_qualifier).flags.q.invariant || (yyvsp[(2) - (2)].type_qualifier).has_interpolation() || (yyvsp[(2) - (2)].type_qualifier).has_layout() || - (yyvsp[(2) - (2)].type_qualifier).has_auxiliary_storage())) { - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Storage qualifiers must come after " + ((yyvsp[0].type_qualifier).flags.q.invariant || (yyvsp[0].type_qualifier).has_interpolation() || (yyvsp[0].type_qualifier).has_layout() || + (yyvsp[0].type_qualifier).has_auxiliary_storage())) { + _mesa_glsl_error(&(yylsp[-1]), state, "storage qualifiers must come after " "invariant, interpolation, layout and auxiliary " - "storage qualifiers.\n"); + "storage qualifiers"); } - (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).merge_qualifier(&(yylsp[(1) - (2)]), state, (yyvsp[(2) - (2)].type_qualifier)); + (yyval.type_qualifier) = (yyvsp[-1].type_qualifier); + (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier)); } +#line 4723 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 174: -/* Line 1787 of yacc.c */ -#line 1461 "glsl_parser.yy" + case 170: +#line 1623 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].type_qualifier).precision != ast_precision_none) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Duplicate precision qualifier.\n"); + if ((yyvsp[0].type_qualifier).precision != ast_precision_none) + _mesa_glsl_error(&(yylsp[-1]), state, "duplicate precision qualifier"); - if (!state->ARB_shading_language_420pack_enable && (yyvsp[(2) - (2)].type_qualifier).flags.i != 0) - _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "Precision qualifiers must come last.\n"); + if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.i != 0) + _mesa_glsl_error(&(yylsp[-1]), state, "precision qualifiers must come last"); - (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier); - (yyval.type_qualifier).precision = (yyvsp[(1) - (2)].n); + (yyval.type_qualifier) = (yyvsp[0].type_qualifier); + (yyval.type_qualifier).precision = (yyvsp[-1].n); } +#line 4738 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 175: -/* Line 1787 of yacc.c */ -#line 1475 "glsl_parser.yy" + case 171: +#line 1637 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.centroid = 1; } +#line 4747 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 176: -/* Line 1787 of yacc.c */ -#line 1483 "glsl_parser.yy" + case 172: +#line 1642 "glsl_parser.yy" /* yacc.c:1646 */ + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.sample = 1; + } +#line 4756 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 173: +#line 1650 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.constant = 1; } +#line 4765 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 177: -/* Line 1787 of yacc.c */ -#line 1488 "glsl_parser.yy" + case 174: +#line 1655 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.attribute = 1; } +#line 4774 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 178: -/* Line 1787 of yacc.c */ -#line 1493 "glsl_parser.yy" + case 175: +#line 1660 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.varying = 1; } +#line 4783 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 179: -/* Line 1787 of yacc.c */ -#line 1498 "glsl_parser.yy" + case 176: +#line 1665 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; } +#line 4792 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 180: -/* Line 1787 of yacc.c */ -#line 1503 "glsl_parser.yy" + case 177: +#line 1670 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.out = 1; } +#line 4801 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 181: -/* Line 1787 of yacc.c */ -#line 1508 "glsl_parser.yy" + case 178: +#line 1675 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.uniform = 1; } +#line 4810 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 179: +#line 1680 "glsl_parser.yy" /* yacc.c:1646 */ + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.coherent = 1; + } +#line 4819 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 180: +#line 1685 "glsl_parser.yy" /* yacc.c:1646 */ + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q._volatile = 1; + } +#line 4828 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 181: +#line 1690 "glsl_parser.yy" /* yacc.c:1646 */ + { + STATIC_ASSERT(sizeof((yyval.type_qualifier).flags.q) <= sizeof((yyval.type_qualifier).flags.i)); + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.restrict_flag = 1; + } +#line 4838 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 182: +#line 1696 "glsl_parser.yy" /* yacc.c:1646 */ + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.read_only = 1; + } +#line 4847 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 183: -/* Line 1787 of yacc.c */ -#line 1517 "glsl_parser.yy" +#line 1701 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier); - (yyval.type_specifier)->is_array = true; - (yyval.type_specifier)->array_size = NULL; + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.write_only = 1; } +#line 4856 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 184: -/* Line 1787 of yacc.c */ -#line 1523 "glsl_parser.yy" +#line 1709 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier); - (yyval.type_specifier)->is_array = true; - (yyval.type_specifier)->array_size = (yyvsp[(3) - (4)].expression); + void *ctx = state; + (yyval.array_specifier) = new(ctx) ast_array_specifier((yylsp[-1])); + (yyval.array_specifier)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 4866 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 185: -/* Line 1787 of yacc.c */ -#line 1532 "glsl_parser.yy" +#line 1715 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier)); - (yyval.type_specifier)->set_location(yylloc); + (yyval.array_specifier) = new(ctx) ast_array_specifier((yylsp[-2]), (yyvsp[-1].expression)); + (yyval.array_specifier)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 4876 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 186: -/* Line 1787 of yacc.c */ -#line 1538 "glsl_parser.yy" +#line 1721 "glsl_parser.yy" /* yacc.c:1646 */ { - void *ctx = state; - (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier)); - (yyval.type_specifier)->set_location(yylloc); + (yyval.array_specifier) = (yyvsp[-2].array_specifier); + + if (!state->ARB_arrays_of_arrays_enable) { + _mesa_glsl_error(& (yylsp[-2]), state, + "GL_ARB_arrays_of_arrays " + "required for defining arrays of arrays"); + } else { + _mesa_glsl_error(& (yylsp[-2]), state, + "only the outermost array dimension can " + "be unsized"); + } } +#line 4894 "glsl_parser.cpp" /* yacc.c:1646 */ break; case 187: -/* Line 1787 of yacc.c */ -#line 1544 "glsl_parser.yy" +#line 1735 "glsl_parser.yy" /* yacc.c:1646 */ + { + (yyval.array_specifier) = (yyvsp[-3].array_specifier); + + if (!state->ARB_arrays_of_arrays_enable) { + _mesa_glsl_error(& (yylsp[-3]), state, + "GL_ARB_arrays_of_arrays " + "required for defining arrays of arrays"); + } + + (yyval.array_specifier)->add_dimension((yyvsp[-1].expression)); + } +#line 4910 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 189: +#line 1751 "glsl_parser.yy" /* yacc.c:1646 */ + { + (yyval.type_specifier) = (yyvsp[-1].type_specifier); + (yyval.type_specifier)->array_specifier = (yyvsp[0].array_specifier); + } +#line 4919 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 190: +#line 1759 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier)); - (yyval.type_specifier)->set_location(yylloc); + (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].identifier)); + (yyval.type_specifier)->set_location((yylsp[0])); } +#line 4929 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 188: -/* Line 1787 of yacc.c */ -#line 1552 "glsl_parser.yy" + case 191: +#line 1765 "glsl_parser.yy" /* yacc.c:1646 */ + { + void *ctx = state; + (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].struct_specifier)); + (yyval.type_specifier)->set_location((yylsp[0])); + } +#line 4939 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 192: +#line 1771 "glsl_parser.yy" /* yacc.c:1646 */ + { + void *ctx = state; + (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].identifier)); + (yyval.type_specifier)->set_location((yylsp[0])); + } +#line 4949 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 193: +#line 1779 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "void"; } +#line 4955 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 189: -/* Line 1787 of yacc.c */ -#line 1553 "glsl_parser.yy" + case 194: +#line 1780 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "float"; } +#line 4961 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 190: -/* Line 1787 of yacc.c */ -#line 1554 "glsl_parser.yy" + case 195: +#line 1781 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "int"; } +#line 4967 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 191: -/* Line 1787 of yacc.c */ -#line 1555 "glsl_parser.yy" + case 196: +#line 1782 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "uint"; } +#line 4973 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 192: -/* Line 1787 of yacc.c */ -#line 1556 "glsl_parser.yy" + case 197: +#line 1783 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "bool"; } +#line 4979 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 193: -/* Line 1787 of yacc.c */ -#line 1557 "glsl_parser.yy" + case 198: +#line 1784 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "vec2"; } +#line 4985 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 194: -/* Line 1787 of yacc.c */ -#line 1558 "glsl_parser.yy" + case 199: +#line 1785 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "vec3"; } +#line 4991 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 195: -/* Line 1787 of yacc.c */ -#line 1559 "glsl_parser.yy" + case 200: +#line 1786 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "vec4"; } +#line 4997 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 196: -/* Line 1787 of yacc.c */ -#line 1560 "glsl_parser.yy" + case 201: +#line 1787 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "bvec2"; } +#line 5003 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 197: -/* Line 1787 of yacc.c */ -#line 1561 "glsl_parser.yy" + case 202: +#line 1788 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "bvec3"; } +#line 5009 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 198: -/* Line 1787 of yacc.c */ -#line 1562 "glsl_parser.yy" + case 203: +#line 1789 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "bvec4"; } +#line 5015 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 199: -/* Line 1787 of yacc.c */ -#line 1563 "glsl_parser.yy" + case 204: +#line 1790 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "ivec2"; } +#line 5021 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 200: -/* Line 1787 of yacc.c */ -#line 1564 "glsl_parser.yy" + case 205: +#line 1791 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "ivec3"; } +#line 5027 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 201: -/* Line 1787 of yacc.c */ -#line 1565 "glsl_parser.yy" + case 206: +#line 1792 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "ivec4"; } +#line 5033 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 202: -/* Line 1787 of yacc.c */ -#line 1566 "glsl_parser.yy" + case 207: +#line 1793 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "uvec2"; } +#line 5039 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 203: -/* Line 1787 of yacc.c */ -#line 1567 "glsl_parser.yy" + case 208: +#line 1794 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "uvec3"; } +#line 5045 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 204: -/* Line 1787 of yacc.c */ -#line 1568 "glsl_parser.yy" + case 209: +#line 1795 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "uvec4"; } +#line 5051 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 205: -/* Line 1787 of yacc.c */ -#line 1569 "glsl_parser.yy" + case 210: +#line 1796 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat2"; } +#line 5057 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 206: -/* Line 1787 of yacc.c */ -#line 1570 "glsl_parser.yy" + case 211: +#line 1797 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat2x3"; } +#line 5063 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 207: -/* Line 1787 of yacc.c */ -#line 1571 "glsl_parser.yy" + case 212: +#line 1798 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat2x4"; } +#line 5069 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 208: -/* Line 1787 of yacc.c */ -#line 1572 "glsl_parser.yy" + case 213: +#line 1799 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat3x2"; } +#line 5075 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 209: -/* Line 1787 of yacc.c */ -#line 1573 "glsl_parser.yy" + case 214: +#line 1800 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat3"; } +#line 5081 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 210: -/* Line 1787 of yacc.c */ -#line 1574 "glsl_parser.yy" + case 215: +#line 1801 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat3x4"; } +#line 5087 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 211: -/* Line 1787 of yacc.c */ -#line 1575 "glsl_parser.yy" + case 216: +#line 1802 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat4x2"; } +#line 5093 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 212: -/* Line 1787 of yacc.c */ -#line 1576 "glsl_parser.yy" + case 217: +#line 1803 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat4x3"; } +#line 5099 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 213: -/* Line 1787 of yacc.c */ -#line 1577 "glsl_parser.yy" + case 218: +#line 1804 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "mat4"; } +#line 5105 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 214: -/* Line 1787 of yacc.c */ -#line 1578 "glsl_parser.yy" + case 219: +#line 1805 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler1D"; } +#line 5111 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 215: -/* Line 1787 of yacc.c */ -#line 1579 "glsl_parser.yy" + case 220: +#line 1806 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2D"; } +#line 5117 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 216: -/* Line 1787 of yacc.c */ -#line 1580 "glsl_parser.yy" + case 221: +#line 1807 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DRect"; } +#line 5123 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 217: -/* Line 1787 of yacc.c */ -#line 1581 "glsl_parser.yy" + case 222: +#line 1808 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler3D"; } +#line 5129 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 218: -/* Line 1787 of yacc.c */ -#line 1582 "glsl_parser.yy" + case 223: +#line 1809 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerCube"; } +#line 5135 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 219: -/* Line 1787 of yacc.c */ -#line 1583 "glsl_parser.yy" + case 224: +#line 1810 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerExternalOES"; } +#line 5141 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 220: -/* Line 1787 of yacc.c */ -#line 1584 "glsl_parser.yy" + case 225: +#line 1811 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler1DShadow"; } +#line 5147 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 221: -/* Line 1787 of yacc.c */ -#line 1585 "glsl_parser.yy" + case 226: +#line 1812 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DShadow"; } +#line 5153 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 222: -/* Line 1787 of yacc.c */ -#line 1586 "glsl_parser.yy" + case 227: +#line 1813 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DRectShadow"; } +#line 5159 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 223: -/* Line 1787 of yacc.c */ -#line 1587 "glsl_parser.yy" + case 228: +#line 1814 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerCubeShadow"; } +#line 5165 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 224: -/* Line 1787 of yacc.c */ -#line 1588 "glsl_parser.yy" + case 229: +#line 1815 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler1DArray"; } +#line 5171 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 225: -/* Line 1787 of yacc.c */ -#line 1589 "glsl_parser.yy" + case 230: +#line 1816 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DArray"; } +#line 5177 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 226: -/* Line 1787 of yacc.c */ -#line 1590 "glsl_parser.yy" + case 231: +#line 1817 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler1DArrayShadow"; } +#line 5183 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 227: -/* Line 1787 of yacc.c */ -#line 1591 "glsl_parser.yy" + case 232: +#line 1818 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DArrayShadow"; } +#line 5189 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 228: -/* Line 1787 of yacc.c */ -#line 1592 "glsl_parser.yy" + case 233: +#line 1819 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerBuffer"; } +#line 5195 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 229: -/* Line 1787 of yacc.c */ -#line 1593 "glsl_parser.yy" + case 234: +#line 1820 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerCubeArray"; } +#line 5201 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 230: -/* Line 1787 of yacc.c */ -#line 1594 "glsl_parser.yy" + case 235: +#line 1821 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "samplerCubeArrayShadow"; } +#line 5207 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 231: -/* Line 1787 of yacc.c */ -#line 1595 "glsl_parser.yy" + case 236: +#line 1822 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler1D"; } +#line 5213 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 232: -/* Line 1787 of yacc.c */ -#line 1596 "glsl_parser.yy" + case 237: +#line 1823 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler2D"; } +#line 5219 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 233: -/* Line 1787 of yacc.c */ -#line 1597 "glsl_parser.yy" + case 238: +#line 1824 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler2DRect"; } +#line 5225 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 234: -/* Line 1787 of yacc.c */ -#line 1598 "glsl_parser.yy" + case 239: +#line 1825 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler3D"; } +#line 5231 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 235: -/* Line 1787 of yacc.c */ -#line 1599 "glsl_parser.yy" + case 240: +#line 1826 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isamplerCube"; } +#line 5237 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 236: -/* Line 1787 of yacc.c */ -#line 1600 "glsl_parser.yy" + case 241: +#line 1827 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler1DArray"; } +#line 5243 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 237: -/* Line 1787 of yacc.c */ -#line 1601 "glsl_parser.yy" + case 242: +#line 1828 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler2DArray"; } +#line 5249 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 238: -/* Line 1787 of yacc.c */ -#line 1602 "glsl_parser.yy" + case 243: +#line 1829 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isamplerBuffer"; } +#line 5255 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 239: -/* Line 1787 of yacc.c */ -#line 1603 "glsl_parser.yy" + case 244: +#line 1830 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isamplerCubeArray"; } +#line 5261 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 240: -/* Line 1787 of yacc.c */ -#line 1604 "glsl_parser.yy" + case 245: +#line 1831 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler1D"; } +#line 5267 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 241: -/* Line 1787 of yacc.c */ -#line 1605 "glsl_parser.yy" + case 246: +#line 1832 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler2D"; } +#line 5273 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 242: -/* Line 1787 of yacc.c */ -#line 1606 "glsl_parser.yy" + case 247: +#line 1833 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler2DRect"; } +#line 5279 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 243: -/* Line 1787 of yacc.c */ -#line 1607 "glsl_parser.yy" + case 248: +#line 1834 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler3D"; } +#line 5285 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 244: -/* Line 1787 of yacc.c */ -#line 1608 "glsl_parser.yy" + case 249: +#line 1835 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usamplerCube"; } +#line 5291 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 245: -/* Line 1787 of yacc.c */ -#line 1609 "glsl_parser.yy" + case 250: +#line 1836 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler1DArray"; } +#line 5297 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 246: -/* Line 1787 of yacc.c */ -#line 1610 "glsl_parser.yy" + case 251: +#line 1837 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler2DArray"; } +#line 5303 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 247: -/* Line 1787 of yacc.c */ -#line 1611 "glsl_parser.yy" + case 252: +#line 1838 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usamplerBuffer"; } +#line 5309 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 248: -/* Line 1787 of yacc.c */ -#line 1612 "glsl_parser.yy" + case 253: +#line 1839 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usamplerCubeArray"; } +#line 5315 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 249: -/* Line 1787 of yacc.c */ -#line 1613 "glsl_parser.yy" + case 254: +#line 1840 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DMS"; } +#line 5321 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 250: -/* Line 1787 of yacc.c */ -#line 1614 "glsl_parser.yy" + case 255: +#line 1841 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler2DMS"; } +#line 5327 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 251: -/* Line 1787 of yacc.c */ -#line 1615 "glsl_parser.yy" + case 256: +#line 1842 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler2DMS"; } +#line 5333 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 252: -/* Line 1787 of yacc.c */ -#line 1616 "glsl_parser.yy" + case 257: +#line 1843 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "sampler2DMSArray"; } +#line 5339 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 253: -/* Line 1787 of yacc.c */ -#line 1617 "glsl_parser.yy" + case 258: +#line 1844 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "isampler2DMSArray"; } +#line 5345 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 254: -/* Line 1787 of yacc.c */ -#line 1618 "glsl_parser.yy" + case 259: +#line 1845 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.identifier) = "usampler2DMSArray"; } +#line 5351 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 255: -/* Line 1787 of yacc.c */ -#line 1623 "glsl_parser.yy" + case 260: +#line 1846 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image1D"; } +#line 5357 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 261: +#line 1847 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image2D"; } +#line 5363 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 262: +#line 1848 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image3D"; } +#line 5369 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 263: +#line 1849 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image2DRect"; } +#line 5375 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 264: +#line 1850 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "imageCube"; } +#line 5381 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 265: +#line 1851 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "imageBuffer"; } +#line 5387 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 266: +#line 1852 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image1DArray"; } +#line 5393 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 267: +#line 1853 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image2DArray"; } +#line 5399 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 268: +#line 1854 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "imageCubeArray"; } +#line 5405 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 269: +#line 1855 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image2DMS"; } +#line 5411 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 270: +#line 1856 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "image2DMSArray"; } +#line 5417 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 271: +#line 1857 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage1D"; } +#line 5423 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 272: +#line 1858 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage2D"; } +#line 5429 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 273: +#line 1859 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage3D"; } +#line 5435 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 274: +#line 1860 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage2DRect"; } +#line 5441 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 275: +#line 1861 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimageCube"; } +#line 5447 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 276: +#line 1862 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimageBuffer"; } +#line 5453 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 277: +#line 1863 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage1DArray"; } +#line 5459 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 278: +#line 1864 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage2DArray"; } +#line 5465 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 279: +#line 1865 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimageCubeArray"; } +#line 5471 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 280: +#line 1866 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage2DMS"; } +#line 5477 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 281: +#line 1867 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "iimage2DMSArray"; } +#line 5483 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 282: +#line 1868 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage1D"; } +#line 5489 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 283: +#line 1869 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage2D"; } +#line 5495 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 284: +#line 1870 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage3D"; } +#line 5501 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 285: +#line 1871 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage2DRect"; } +#line 5507 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 286: +#line 1872 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimageCube"; } +#line 5513 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 287: +#line 1873 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimageBuffer"; } +#line 5519 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 288: +#line 1874 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage1DArray"; } +#line 5525 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 289: +#line 1875 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage2DArray"; } +#line 5531 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 290: +#line 1876 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimageCubeArray"; } +#line 5537 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 291: +#line 1877 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage2DMS"; } +#line 5543 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 292: +#line 1878 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "uimage2DMSArray"; } +#line 5549 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 293: +#line 1879 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.identifier) = "atomic_uint"; } +#line 5555 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 294: +#line 1884 "glsl_parser.yy" /* yacc.c:1646 */ { - state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); + state->check_precision_qualifiers_allowed(&(yylsp[0])); (yyval.n) = ast_precision_high; } +#line 5564 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 256: -/* Line 1787 of yacc.c */ -#line 1628 "glsl_parser.yy" + case 295: +#line 1889 "glsl_parser.yy" /* yacc.c:1646 */ { - state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); + state->check_precision_qualifiers_allowed(&(yylsp[0])); (yyval.n) = ast_precision_medium; } +#line 5573 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 257: -/* Line 1787 of yacc.c */ -#line 1633 "glsl_parser.yy" + case 296: +#line 1894 "glsl_parser.yy" /* yacc.c:1646 */ { - state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); + state->check_precision_qualifiers_allowed(&(yylsp[0])); (yyval.n) = ast_precision_low; } +#line 5582 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 258: -/* Line 1787 of yacc.c */ -#line 1641 "glsl_parser.yy" + case 297: +#line 1902 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].declarator_list)); - (yyval.struct_specifier)->set_location(yylloc); - state->symbols->add_type((yyvsp[(2) - (5)].identifier), glsl_type::void_type); - state->symbols->add_type_ast((yyvsp[(2) - (5)].identifier), new(ctx) ast_type_specifier((yyval.struct_specifier))); + (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[-3].identifier), (yyvsp[-1].declarator_list)); + (yyval.struct_specifier)->set_location_range((yylsp[-3]), (yylsp[0])); + state->symbols->add_type((yyvsp[-3].identifier), glsl_type::void_type); } +#line 5593 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 259: -/* Line 1787 of yacc.c */ -#line 1649 "glsl_parser.yy" + case 298: +#line 1909 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].declarator_list)); - (yyval.struct_specifier)->set_location(yylloc); + (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[-1].declarator_list)); + (yyval.struct_specifier)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 5603 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 260: -/* Line 1787 of yacc.c */ -#line 1658 "glsl_parser.yy" + case 299: +#line 1918 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.declarator_list) = (yyvsp[(1) - (1)].declarator_list); - (yyvsp[(1) - (1)].declarator_list)->link.self_link(); + (yyval.declarator_list) = (yyvsp[0].declarator_list); + (yyvsp[0].declarator_list)->link.self_link(); } +#line 5612 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 261: -/* Line 1787 of yacc.c */ -#line 1663 "glsl_parser.yy" + case 300: +#line 1923 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.declarator_list) = (yyvsp[(1) - (2)].declarator_list); - (yyval.declarator_list)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link); + (yyval.declarator_list) = (yyvsp[-1].declarator_list); + (yyval.declarator_list)->link.insert_before(& (yyvsp[0].declarator_list)->link); } +#line 5621 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 262: -/* Line 1787 of yacc.c */ -#line 1671 "glsl_parser.yy" + case 301: +#line 1931 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_fully_specified_type *const type = (yyvsp[(1) - (3)].fully_specified_type); - type->set_location(yylloc); + ast_fully_specified_type *const type = (yyvsp[-2].fully_specified_type); + type->set_location((yylsp[-2])); if (type->qualifier.flags.i != 0) - _mesa_glsl_error(&(yylsp[(1) - (3)]), state, + _mesa_glsl_error(&(yylsp[-2]), state, "only precision qualifiers may be applied to " "structure members"); (yyval.declarator_list) = new(ctx) ast_declarator_list(type); - (yyval.declarator_list)->set_location(yylloc); + (yyval.declarator_list)->set_location((yylsp[-1])); - (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[(2) - (3)].declaration)->link); + (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[-1].declaration)->link); } +#line 5641 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 263: -/* Line 1787 of yacc.c */ -#line 1690 "glsl_parser.yy" + case 302: +#line 1950 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.declaration) = (yyvsp[(1) - (1)].declaration); - (yyvsp[(1) - (1)].declaration)->link.self_link(); + (yyval.declaration) = (yyvsp[0].declaration); + (yyvsp[0].declaration)->link.self_link(); } +#line 5650 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 264: -/* Line 1787 of yacc.c */ -#line 1695 "glsl_parser.yy" + case 303: +#line 1955 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.declaration) = (yyvsp[(1) - (3)].declaration); - (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link); + (yyval.declaration) = (yyvsp[-2].declaration); + (yyval.declaration)->link.insert_before(& (yyvsp[0].declaration)->link); } +#line 5659 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 265: -/* Line 1787 of yacc.c */ -#line 1703 "glsl_parser.yy" + case 304: +#line 1963 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL); - (yyval.declaration)->set_location(yylloc); + (yyval.declaration) = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL); + (yyval.declaration)->set_location((yylsp[0])); } +#line 5669 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 266: -/* Line 1787 of yacc.c */ -#line 1709 "glsl_parser.yy" + case 305: +#line 1969 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL); - (yyval.declaration)->set_location(yylloc); + (yyval.declaration) = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL); + (yyval.declaration)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 5679 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 268: -/* Line 1787 of yacc.c */ -#line 1719 "glsl_parser.yy" + case 307: +#line 1979 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(2) - (3)].expression); + (yyval.expression) = (yyvsp[-1].expression); } +#line 5687 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 269: -/* Line 1787 of yacc.c */ -#line 1723 "glsl_parser.yy" + case 308: +#line 1983 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.expression) = (yyvsp[(2) - (4)].expression); + (yyval.expression) = (yyvsp[-2].expression); } +#line 5695 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 270: -/* Line 1787 of yacc.c */ -#line 1730 "glsl_parser.yy" + case 309: +#line 1990 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.expression) = new(ctx) ast_aggregate_initializer(); - (yyval.expression)->set_location(yylloc); - (yyval.expression)->expressions.push_tail(& (yyvsp[(1) - (1)].expression)->link); + (yyval.expression)->set_location((yylsp[0])); + (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 5706 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 271: -/* Line 1787 of yacc.c */ -#line 1737 "glsl_parser.yy" + case 310: +#line 1997 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyvsp[(1) - (3)].expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link); + (yyvsp[-2].expression)->expressions.push_tail(& (yyvsp[0].expression)->link); } +#line 5714 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 273: -/* Line 1787 of yacc.c */ -#line 1749 "glsl_parser.yy" - { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); } + case 312: +#line 2009 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.node) = (ast_node *) (yyvsp[0].compound_statement); } +#line 5720 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 281: -/* Line 1787 of yacc.c */ -#line 1764 "glsl_parser.yy" + case 320: +#line 2024 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL); - (yyval.compound_statement)->set_location(yylloc); + (yyval.compound_statement)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 5730 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 282: -/* Line 1787 of yacc.c */ -#line 1770 "glsl_parser.yy" + case 321: +#line 2030 "glsl_parser.yy" /* yacc.c:1646 */ { state->symbols->push_scope(); } +#line 5738 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 283: -/* Line 1787 of yacc.c */ -#line 1774 "glsl_parser.yy" + case 322: +#line 2034 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(3) - (4)].node)); - (yyval.compound_statement)->set_location(yylloc); + (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[-1].node)); + (yyval.compound_statement)->set_location_range((yylsp[-3]), (yylsp[0])); state->symbols->pop_scope(); } +#line 5749 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 284: -/* Line 1787 of yacc.c */ -#line 1783 "glsl_parser.yy" - { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); } + case 323: +#line 2043 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.node) = (ast_node *) (yyvsp[0].compound_statement); } +#line 5755 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 286: -/* Line 1787 of yacc.c */ -#line 1789 "glsl_parser.yy" + case 325: +#line 2049 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL); - (yyval.compound_statement)->set_location(yylloc); + (yyval.compound_statement)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 5765 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 287: -/* Line 1787 of yacc.c */ -#line 1795 "glsl_parser.yy" + case 326: +#line 2055 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node)); - (yyval.compound_statement)->set_location(yylloc); + (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[-1].node)); + (yyval.compound_statement)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 5775 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 288: -/* Line 1787 of yacc.c */ -#line 1804 "glsl_parser.yy" + case 327: +#line 2064 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (1)].node) == NULL) { - _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n"); - assert((yyvsp[(1) - (1)].node) != NULL); + if ((yyvsp[0].node) == NULL) { + _mesa_glsl_error(& (yylsp[0]), state, "<nil> statement"); + assert((yyvsp[0].node) != NULL); } - (yyval.node) = (yyvsp[(1) - (1)].node); + (yyval.node) = (yyvsp[0].node); (yyval.node)->link.self_link(); } +#line 5789 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 289: -/* Line 1787 of yacc.c */ -#line 1814 "glsl_parser.yy" + case 328: +#line 2074 "glsl_parser.yy" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].node) == NULL) { - _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n"); - assert((yyvsp[(2) - (2)].node) != NULL); + if ((yyvsp[0].node) == NULL) { + _mesa_glsl_error(& (yylsp[0]), state, "<nil> statement"); + assert((yyvsp[0].node) != NULL); } - (yyval.node) = (yyvsp[(1) - (2)].node); - (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].node)->link); + (yyval.node) = (yyvsp[-1].node); + (yyval.node)->link.insert_before(& (yyvsp[0].node)->link); } +#line 5802 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 290: -/* Line 1787 of yacc.c */ -#line 1826 "glsl_parser.yy" + case 329: +#line 2086 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_expression_statement(NULL); - (yyval.node)->set_location(yylloc); + (yyval.node)->set_location((yylsp[0])); } +#line 5812 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 291: -/* Line 1787 of yacc.c */ -#line 1832 "glsl_parser.yy" + case 330: +#line 2092 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression)); - (yyval.node)->set_location(yylloc); + (yyval.node) = new(ctx) ast_expression_statement((yyvsp[-1].expression)); + (yyval.node)->set_location((yylsp[-1])); } +#line 5822 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 292: -/* Line 1787 of yacc.c */ -#line 1841 "glsl_parser.yy" + case 331: +#line 2101 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement, - (yyvsp[(5) - (5)].selection_rest_statement).else_statement); - (yyval.node)->set_location(yylloc); + (yyval.node) = new(state) ast_selection_statement((yyvsp[-2].expression), (yyvsp[0].selection_rest_statement).then_statement, + (yyvsp[0].selection_rest_statement).else_statement); + (yyval.node)->set_location_range((yylsp[-4]), (yylsp[0])); } +#line 5832 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 293: -/* Line 1787 of yacc.c */ -#line 1850 "glsl_parser.yy" + case 332: +#line 2110 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node); - (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node); + (yyval.selection_rest_statement).then_statement = (yyvsp[-2].node); + (yyval.selection_rest_statement).else_statement = (yyvsp[0].node); } +#line 5841 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 294: -/* Line 1787 of yacc.c */ -#line 1855 "glsl_parser.yy" + case 333: +#line 2115 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node); + (yyval.selection_rest_statement).then_statement = (yyvsp[0].node); (yyval.selection_rest_statement).else_statement = NULL; } +#line 5850 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 295: -/* Line 1787 of yacc.c */ -#line 1863 "glsl_parser.yy" + case 334: +#line 2123 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression); + (yyval.node) = (ast_node *) (yyvsp[0].expression); } +#line 5858 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 296: -/* Line 1787 of yacc.c */ -#line 1867 "glsl_parser.yy" + case 335: +#line 2127 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression)); - ast_declarator_list *declarator = new(ctx) ast_declarator_list((yyvsp[(1) - (4)].fully_specified_type)); - decl->set_location(yylloc); - declarator->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression)); + ast_declarator_list *declarator = new(ctx) ast_declarator_list((yyvsp[-3].fully_specified_type)); + decl->set_location_range((yylsp[-2]), (yylsp[0])); + declarator->set_location((yylsp[-3])); declarator->declarations.push_tail(&decl->link); (yyval.node) = declarator; } +#line 5873 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 297: -/* Line 1787 of yacc.c */ -#line 1885 "glsl_parser.yy" + case 336: +#line 2145 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = new(state) ast_switch_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].switch_body)); - (yyval.node)->set_location(yylloc); + (yyval.node) = new(state) ast_switch_statement((yyvsp[-2].expression), (yyvsp[0].switch_body)); + (yyval.node)->set_location_range((yylsp[-4]), (yylsp[0])); } +#line 5882 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 298: -/* Line 1787 of yacc.c */ -#line 1893 "glsl_parser.yy" + case 337: +#line 2153 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.switch_body) = new(state) ast_switch_body(NULL); - (yyval.switch_body)->set_location(yylloc); + (yyval.switch_body)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 5891 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 299: -/* Line 1787 of yacc.c */ -#line 1898 "glsl_parser.yy" + case 338: +#line 2158 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.switch_body) = new(state) ast_switch_body((yyvsp[(2) - (3)].case_statement_list)); - (yyval.switch_body)->set_location(yylloc); + (yyval.switch_body) = new(state) ast_switch_body((yyvsp[-1].case_statement_list)); + (yyval.switch_body)->set_location_range((yylsp[-2]), (yylsp[0])); } +#line 5900 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 300: -/* Line 1787 of yacc.c */ -#line 1906 "glsl_parser.yy" + case 339: +#line 2166 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.case_label) = new(state) ast_case_label((yyvsp[(2) - (3)].expression)); - (yyval.case_label)->set_location(yylloc); + (yyval.case_label) = new(state) ast_case_label((yyvsp[-1].expression)); + (yyval.case_label)->set_location((yylsp[-1])); } +#line 5909 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 301: -/* Line 1787 of yacc.c */ -#line 1911 "glsl_parser.yy" + case 340: +#line 2171 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.case_label) = new(state) ast_case_label(NULL); - (yyval.case_label)->set_location(yylloc); + (yyval.case_label)->set_location((yylsp[0])); } +#line 5918 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 302: -/* Line 1787 of yacc.c */ -#line 1919 "glsl_parser.yy" + case 341: +#line 2179 "glsl_parser.yy" /* yacc.c:1646 */ { ast_case_label_list *labels = new(state) ast_case_label_list(); - labels->labels.push_tail(& (yyvsp[(1) - (1)].case_label)->link); + labels->labels.push_tail(& (yyvsp[0].case_label)->link); (yyval.case_label_list) = labels; - (yyval.case_label_list)->set_location(yylloc); + (yyval.case_label_list)->set_location((yylsp[0])); } +#line 5930 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 303: -/* Line 1787 of yacc.c */ -#line 1927 "glsl_parser.yy" + case 342: +#line 2187 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.case_label_list) = (yyvsp[(1) - (2)].case_label_list); - (yyval.case_label_list)->labels.push_tail(& (yyvsp[(2) - (2)].case_label)->link); + (yyval.case_label_list) = (yyvsp[-1].case_label_list); + (yyval.case_label_list)->labels.push_tail(& (yyvsp[0].case_label)->link); } +#line 5939 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 304: -/* Line 1787 of yacc.c */ -#line 1935 "glsl_parser.yy" + case 343: +#line 2195 "glsl_parser.yy" /* yacc.c:1646 */ { - ast_case_statement *stmts = new(state) ast_case_statement((yyvsp[(1) - (2)].case_label_list)); - stmts->set_location(yylloc); + ast_case_statement *stmts = new(state) ast_case_statement((yyvsp[-1].case_label_list)); + stmts->set_location((yylsp[0])); - stmts->stmts.push_tail(& (yyvsp[(2) - (2)].node)->link); + stmts->stmts.push_tail(& (yyvsp[0].node)->link); (yyval.case_statement) = stmts; } +#line 5951 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 305: -/* Line 1787 of yacc.c */ -#line 1943 "glsl_parser.yy" + case 344: +#line 2203 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.case_statement) = (yyvsp[(1) - (2)].case_statement); - (yyval.case_statement)->stmts.push_tail(& (yyvsp[(2) - (2)].node)->link); + (yyval.case_statement) = (yyvsp[-1].case_statement); + (yyval.case_statement)->stmts.push_tail(& (yyvsp[0].node)->link); } +#line 5960 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 306: -/* Line 1787 of yacc.c */ -#line 1951 "glsl_parser.yy" + case 345: +#line 2211 "glsl_parser.yy" /* yacc.c:1646 */ { ast_case_statement_list *cases= new(state) ast_case_statement_list(); - cases->set_location(yylloc); + cases->set_location((yylsp[0])); - cases->cases.push_tail(& (yyvsp[(1) - (1)].case_statement)->link); + cases->cases.push_tail(& (yyvsp[0].case_statement)->link); (yyval.case_statement_list) = cases; } +#line 5972 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 307: -/* Line 1787 of yacc.c */ -#line 1959 "glsl_parser.yy" + case 346: +#line 2219 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.case_statement_list) = (yyvsp[(1) - (2)].case_statement_list); - (yyval.case_statement_list)->cases.push_tail(& (yyvsp[(2) - (2)].case_statement)->link); + (yyval.case_statement_list) = (yyvsp[-1].case_statement_list); + (yyval.case_statement_list)->cases.push_tail(& (yyvsp[0].case_statement)->link); } +#line 5981 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 308: -/* Line 1787 of yacc.c */ -#line 1967 "glsl_parser.yy" + case 347: +#line 2227 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while, - NULL, (yyvsp[(3) - (5)].node), NULL, (yyvsp[(5) - (5)].node)); - (yyval.node)->set_location(yylloc); + NULL, (yyvsp[-2].node), NULL, (yyvsp[0].node)); + (yyval.node)->set_location_range((yylsp[-4]), (yylsp[-1])); } +#line 5992 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 309: -/* Line 1787 of yacc.c */ -#line 1974 "glsl_parser.yy" + case 348: +#line 2234 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while, - NULL, (yyvsp[(5) - (7)].expression), NULL, (yyvsp[(2) - (7)].node)); - (yyval.node)->set_location(yylloc); + NULL, (yyvsp[-2].expression), NULL, (yyvsp[-5].node)); + (yyval.node)->set_location_range((yylsp[-6]), (yylsp[-1])); } +#line 6003 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 310: -/* Line 1787 of yacc.c */ -#line 1981 "glsl_parser.yy" + case 349: +#line 2241 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for, - (yyvsp[(3) - (6)].node), (yyvsp[(4) - (6)].for_rest_statement).cond, (yyvsp[(4) - (6)].for_rest_statement).rest, (yyvsp[(6) - (6)].node)); - (yyval.node)->set_location(yylloc); + (yyvsp[-3].node), (yyvsp[-2].for_rest_statement).cond, (yyvsp[-2].for_rest_statement).rest, (yyvsp[0].node)); + (yyval.node)->set_location_range((yylsp[-5]), (yylsp[0])); } +#line 6014 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 314: -/* Line 1787 of yacc.c */ -#line 1997 "glsl_parser.yy" + case 353: +#line 2257 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.node) = NULL; } +#line 6022 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 315: -/* Line 1787 of yacc.c */ -#line 2004 "glsl_parser.yy" + case 354: +#line 2264 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node); + (yyval.for_rest_statement).cond = (yyvsp[-1].node); (yyval.for_rest_statement).rest = NULL; } +#line 6031 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 316: -/* Line 1787 of yacc.c */ -#line 2009 "glsl_parser.yy" + case 355: +#line 2269 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node); - (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression); + (yyval.for_rest_statement).cond = (yyvsp[-2].node); + (yyval.for_rest_statement).rest = (yyvsp[0].expression); } +#line 6040 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 317: -/* Line 1787 of yacc.c */ -#line 2018 "glsl_parser.yy" + case 356: +#line 2278 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL); - (yyval.node)->set_location(yylloc); + (yyval.node)->set_location((yylsp[-1])); } +#line 6050 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 318: -/* Line 1787 of yacc.c */ -#line 2024 "glsl_parser.yy" + case 357: +#line 2284 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL); - (yyval.node)->set_location(yylloc); + (yyval.node)->set_location((yylsp[-1])); } +#line 6060 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 319: -/* Line 1787 of yacc.c */ -#line 2030 "glsl_parser.yy" + case 358: +#line 2290 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL); - (yyval.node)->set_location(yylloc); + (yyval.node)->set_location((yylsp[-1])); } +#line 6070 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 320: -/* Line 1787 of yacc.c */ -#line 2036 "glsl_parser.yy" + case 359: +#line 2296 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression)); - (yyval.node)->set_location(yylloc); + (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[-1].expression)); + (yyval.node)->set_location_range((yylsp[-2]), (yylsp[-1])); } +#line 6080 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 321: -/* Line 1787 of yacc.c */ -#line 2042 "glsl_parser.yy" + case 360: +#line 2302 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL); - (yyval.node)->set_location(yylloc); + (yyval.node)->set_location((yylsp[-1])); } +#line 6090 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 322: -/* Line 1787 of yacc.c */ -#line 2050 "glsl_parser.yy" - { (yyval.node) = (yyvsp[(1) - (1)].function_definition); } + case 361: +#line 2310 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.node) = (yyvsp[0].function_definition); } +#line 6096 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 323: -/* Line 1787 of yacc.c */ -#line 2051 "glsl_parser.yy" - { (yyval.node) = (yyvsp[(1) - (1)].node); } + case 362: +#line 2311 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.node) = (yyvsp[0].node); } +#line 6102 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 324: -/* Line 1787 of yacc.c */ -#line 2052 "glsl_parser.yy" + case 363: +#line 2312 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.node) = NULL; } +#line 6108 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 325: -/* Line 1787 of yacc.c */ -#line 2053 "glsl_parser.yy" - { (yyval.node) = NULL; } + case 364: +#line 2313 "glsl_parser.yy" /* yacc.c:1646 */ + { (yyval.node) = (yyvsp[0].node); } +#line 6114 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 326: -/* Line 1787 of yacc.c */ -#line 2058 "glsl_parser.yy" + case 365: +#line 2318 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; (yyval.function_definition) = new(ctx) ast_function_definition(); - (yyval.function_definition)->set_location(yylloc); - (yyval.function_definition)->prototype = (yyvsp[(1) - (2)].function); - (yyval.function_definition)->body = (yyvsp[(2) - (2)].compound_statement); + (yyval.function_definition)->set_location_range((yylsp[-1]), (yylsp[0])); + (yyval.function_definition)->prototype = (yyvsp[-1].function); + (yyval.function_definition)->body = (yyvsp[0].compound_statement); state->symbols->pop_scope(); } +#line 6128 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 327: -/* Line 1787 of yacc.c */ -#line 2072 "glsl_parser.yy" + case 366: +#line 2332 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[(1) - (1)].interface_block); + (yyval.node) = (yyvsp[0].interface_block); } +#line 6136 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 328: -/* Line 1787 of yacc.c */ -#line 2076 "glsl_parser.yy" + case 367: +#line 2336 "glsl_parser.yy" /* yacc.c:1646 */ { - ast_interface_block *block = (yyvsp[(2) - (2)].interface_block); - if (!block->layout.merge_qualifier(& (yylsp[(1) - (2)]), state, (yyvsp[(1) - (2)].type_qualifier))) { + ast_interface_block *block = (yyvsp[0].interface_block); + if (!block->layout.merge_qualifier(& (yylsp[-1]), state, (yyvsp[-1].type_qualifier))) { YYERROR; } (yyval.node) = block; } +#line 6148 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 329: -/* Line 1787 of yacc.c */ -#line 2087 "glsl_parser.yy" + case 368: +#line 2347 "glsl_parser.yy" /* yacc.c:1646 */ { - ast_interface_block *const block = (yyvsp[(6) - (7)].interface_block); + ast_interface_block *const block = (yyvsp[-1].interface_block); - block->block_name = (yyvsp[(2) - (7)].identifier); - block->declarations.push_degenerate_list_at_head(& (yyvsp[(4) - (7)].declarator_list)->link); + block->block_name = (yyvsp[-5].identifier); + block->declarations.push_degenerate_list_at_head(& (yyvsp[-3].declarator_list)->link); - if ((yyvsp[(1) - (7)].type_qualifier).flags.q.uniform) { - if (!state->ARB_uniform_buffer_object_enable) { - _mesa_glsl_error(& (yylsp[(1) - (7)]), state, + if ((yyvsp[-6].type_qualifier).flags.q.uniform) { + if (!state->has_uniform_buffer_objects()) { + _mesa_glsl_error(& (yylsp[-6]), state, "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); + "required for defining uniform blocks"); } else if (state->ARB_uniform_buffer_object_warn) { - _mesa_glsl_warning(& (yylsp[(1) - (7)]), state, + _mesa_glsl_warning(& (yylsp[-6]), state, "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); + "required for defining uniform blocks"); } } else { if (state->es_shader || state->language_version < 150) { - _mesa_glsl_error(& (yylsp[(1) - (7)]), state, + _mesa_glsl_error(& (yylsp[-6]), state, "#version 150 required for using " - "interface blocks.\n"); + "interface blocks"); } } @@ -5631,14 +6177,14 @@ yyreduce: * "It is illegal to have an input block in a vertex shader * or an output block in a fragment shader" */ - if ((state->target == vertex_shader) && (yyvsp[(1) - (7)].type_qualifier).flags.q.in) { - _mesa_glsl_error(& (yylsp[(1) - (7)]), state, + if ((state->stage == MESA_SHADER_VERTEX) && (yyvsp[-6].type_qualifier).flags.q.in) { + _mesa_glsl_error(& (yylsp[-6]), state, "`in' interface block is not allowed for " - "a vertex shader\n"); - } else if ((state->target == fragment_shader) && (yyvsp[(1) - (7)].type_qualifier).flags.q.out) { - _mesa_glsl_error(& (yylsp[(1) - (7)]), state, + "a vertex shader"); + } else if ((state->stage == MESA_SHADER_FRAGMENT) && (yyvsp[-6].type_qualifier).flags.q.out) { + _mesa_glsl_error(& (yylsp[-6]), state, "`out' interface block is not allowed for " - "a fragment shader\n"); + "a fragment shader"); } /* Since block arrays require names, and both features are added in @@ -5646,11 +6192,11 @@ yyreduce: * version-check both things. */ if (block->instance_name != NULL) { - state->check_version(150, 300, & (yylsp[(1) - (7)]), "interface blocks with " + state->check_version(150, 300, & (yylsp[-6]), "interface blocks with " "an instance name are not allowed"); } - unsigned interface_type_mask; + uint64_t interface_type_mask; struct ast_type_qualifier temp_type_qualifier; /* Get a bitmask containing only the in/out/uniform flags, allowing us @@ -5666,7 +6212,7 @@ yyreduce: * production rule guarantees that only one bit will be set (and * it will be in/out/uniform). */ - unsigned block_interface_qualifier = (yyvsp[(1) - (7)].type_qualifier).flags.i; + uint64_t block_interface_qualifier = (yyvsp[-6].type_qualifier).flags.i; block->layout.flags.i |= block_interface_qualifier; @@ -5687,139 +6233,170 @@ yyreduce: * or uniform variable consistent with the interface qualifier of * the block." */ - _mesa_glsl_error(& (yylsp[(1) - (7)]), state, + _mesa_glsl_error(& (yylsp[-6]), state, "uniform/in/out qualifier on " "interface block member does not match " - "the interface block\n"); + "the interface block"); } } (yyval.interface_block) = block; } +#line 6246 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 330: -/* Line 1787 of yacc.c */ -#line 2184 "glsl_parser.yy" + case 369: +#line 2444 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; } +#line 6255 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 331: -/* Line 1787 of yacc.c */ -#line 2189 "glsl_parser.yy" + case 370: +#line 2449 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.out = 1; } +#line 6264 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 332: -/* Line 1787 of yacc.c */ -#line 2194 "glsl_parser.yy" + case 371: +#line 2454 "glsl_parser.yy" /* yacc.c:1646 */ { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.uniform = 1; } +#line 6273 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 333: -/* Line 1787 of yacc.c */ -#line 2202 "glsl_parser.yy" + case 372: +#line 2462 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, NULL, NULL); } +#line 6282 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 334: -/* Line 1787 of yacc.c */ -#line 2207 "glsl_parser.yy" + case 373: +#line 2467 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, - (yyvsp[(1) - (1)].identifier), NULL); + (yyvsp[0].identifier), NULL); + (yyval.interface_block)->set_location((yylsp[0])); } +#line 6292 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 335: -/* Line 1787 of yacc.c */ -#line 2212 "glsl_parser.yy" + case 374: +#line 2473 "glsl_parser.yy" /* yacc.c:1646 */ { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, - (yyvsp[(1) - (4)].identifier), (yyvsp[(3) - (4)].expression)); + (yyvsp[-1].identifier), (yyvsp[0].array_specifier)); + (yyval.interface_block)->set_location_range((yylsp[-1]), (yylsp[0])); } +#line 6302 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 336: -/* Line 1787 of yacc.c */ -#line 2217 "glsl_parser.yy" + case 375: +#line 2482 "glsl_parser.yy" /* yacc.c:1646 */ { - _mesa_glsl_error(& (yylsp[(1) - (3)]), state, - "instance block arrays must be explicitly sized\n"); - - (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, - (yyvsp[(1) - (3)].identifier), NULL); + (yyval.declarator_list) = (yyvsp[0].declarator_list); + (yyvsp[0].declarator_list)->link.self_link(); } +#line 6311 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 337: -/* Line 1787 of yacc.c */ -#line 2228 "glsl_parser.yy" + case 376: +#line 2487 "glsl_parser.yy" /* yacc.c:1646 */ { - (yyval.declarator_list) = (yyvsp[(1) - (1)].declarator_list); - (yyvsp[(1) - (1)].declarator_list)->link.self_link(); + (yyval.declarator_list) = (yyvsp[-1].declarator_list); + (yyvsp[0].declarator_list)->link.insert_before(& (yyval.declarator_list)->link); } +#line 6320 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 338: -/* Line 1787 of yacc.c */ -#line 2233 "glsl_parser.yy" - { - (yyval.declarator_list) = (yyvsp[(1) - (2)].declarator_list); - (yyvsp[(2) - (2)].declarator_list)->link.insert_before(& (yyval.declarator_list)->link); - } - break; - - case 339: -/* Line 1787 of yacc.c */ -#line 2241 "glsl_parser.yy" + case 377: +#line 2495 "glsl_parser.yy" /* yacc.c:1646 */ { void *ctx = state; - ast_fully_specified_type *type = (yyvsp[(1) - (3)].fully_specified_type); - type->set_location(yylloc); + ast_fully_specified_type *type = (yyvsp[-2].fully_specified_type); + type->set_location((yylsp[-2])); if (type->qualifier.flags.q.attribute) { - _mesa_glsl_error(& (yylsp[(1) - (3)]), state, + _mesa_glsl_error(& (yylsp[-2]), state, "keyword 'attribute' cannot be used with " - "interface block member\n"); + "interface block member"); } else if (type->qualifier.flags.q.varying) { - _mesa_glsl_error(& (yylsp[(1) - (3)]), state, + _mesa_glsl_error(& (yylsp[-2]), state, "keyword 'varying' cannot be used with " - "interface block member\n"); + "interface block member"); } (yyval.declarator_list) = new(ctx) ast_declarator_list(type); - (yyval.declarator_list)->set_location(yylloc); + (yyval.declarator_list)->set_location((yylsp[-1])); - (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[(2) - (3)].declaration)->link); + (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[-1].declaration)->link); } +#line 6345 "glsl_parser.cpp" /* yacc.c:1646 */ break; - case 340: -/* Line 1787 of yacc.c */ -#line 2265 "glsl_parser.yy" + case 378: +#line 2519 "glsl_parser.yy" /* yacc.c:1646 */ { - if (!state->default_uniform_qualifier->merge_qualifier(& (yylsp[(1) - (3)]), state, (yyvsp[(1) - (3)].type_qualifier))) { + if (!state->default_uniform_qualifier->merge_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier))) { YYERROR; } + (yyval.node) = NULL; } +#line 6356 "glsl_parser.cpp" /* yacc.c:1646 */ break; + case 379: +#line 2527 "glsl_parser.yy" /* yacc.c:1646 */ + { + (yyval.node) = NULL; + if (!state->in_qualifier->merge_in_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier), (yyval.node))) { + YYERROR; + } + } +#line 6367 "glsl_parser.cpp" /* yacc.c:1646 */ + break; + + case 380: +#line 2535 "glsl_parser.yy" /* yacc.c:1646 */ + { + if (state->stage != MESA_SHADER_GEOMETRY) { + _mesa_glsl_error(& (yylsp[-2]), state, + "out layout qualifiers only valid in " + "geometry shaders"); + } else { + if ((yyvsp[-2].type_qualifier).flags.q.prim_type) { + /* Make sure this is a valid output primitive type. */ + switch ((yyvsp[-2].type_qualifier).prim_type) { + case GL_POINTS: + case GL_LINE_STRIP: + case GL_TRIANGLE_STRIP: + break; + default: + _mesa_glsl_error(&(yylsp[-2]), state, "invalid geometry shader output " + "primitive type"); + break; + } + } + if (!state->out_qualifier->merge_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier))) + YYERROR; + } + (yyval.node) = NULL; + } +#line 6396 "glsl_parser.cpp" /* yacc.c:1646 */ + break; -/* Line 1787 of yacc.c */ -#line 5823 "glsl_parser.cpp" + +#line 6400 "glsl_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5842,7 +6419,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -5857,9 +6434,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -5910,20 +6487,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, state); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, state); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -5943,7 +6520,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -5956,29 +6533,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, state); + yystos[yystate], yyvsp, yylsp, state); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -6034,14 +6611,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, state); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, state); + yystos[*yyssp], yyvsp, yylsp, state); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6052,8 +6629,5 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - diff --git a/dist/Mesa/src/glsl/glsl_parser.h b/dist/Mesa/src/glsl/glsl_parser.h index 1c92f09d7..7e27e1c41 100644 --- a/dist/Mesa/src/glsl/glsl_parser.h +++ b/dist/Mesa/src/glsl/glsl_parser.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED # define YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,239 +40,250 @@ extern int _mesa_glsl_debug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - ATTRIBUTE = 258, - CONST_TOK = 259, - BOOL_TOK = 260, - FLOAT_TOK = 261, - INT_TOK = 262, - UINT_TOK = 263, - BREAK = 264, - CONTINUE = 265, - DO = 266, - ELSE = 267, - FOR = 268, - IF = 269, - DISCARD = 270, - RETURN = 271, - SWITCH = 272, - CASE = 273, - DEFAULT = 274, - BVEC2 = 275, - BVEC3 = 276, - BVEC4 = 277, - IVEC2 = 278, - IVEC3 = 279, - IVEC4 = 280, - UVEC2 = 281, - UVEC3 = 282, - UVEC4 = 283, - VEC2 = 284, - VEC3 = 285, - VEC4 = 286, - CENTROID = 287, - IN_TOK = 288, - OUT_TOK = 289, - INOUT_TOK = 290, - UNIFORM = 291, - VARYING = 292, - NOPERSPECTIVE = 293, - FLAT = 294, - SMOOTH = 295, - MAT2X2 = 296, - MAT2X3 = 297, - MAT2X4 = 298, - MAT3X2 = 299, - MAT3X3 = 300, - MAT3X4 = 301, - MAT4X2 = 302, - MAT4X3 = 303, - MAT4X4 = 304, - SAMPLER1D = 305, - SAMPLER2D = 306, - SAMPLER3D = 307, - SAMPLERCUBE = 308, - SAMPLER1DSHADOW = 309, - SAMPLER2DSHADOW = 310, - SAMPLERCUBESHADOW = 311, - SAMPLER1DARRAY = 312, - SAMPLER2DARRAY = 313, - SAMPLER1DARRAYSHADOW = 314, - SAMPLER2DARRAYSHADOW = 315, - SAMPLERCUBEARRAY = 316, - SAMPLERCUBEARRAYSHADOW = 317, - ISAMPLER1D = 318, - ISAMPLER2D = 319, - ISAMPLER3D = 320, - ISAMPLERCUBE = 321, - ISAMPLER1DARRAY = 322, - ISAMPLER2DARRAY = 323, - ISAMPLERCUBEARRAY = 324, - USAMPLER1D = 325, - USAMPLER2D = 326, - USAMPLER3D = 327, - USAMPLERCUBE = 328, - USAMPLER1DARRAY = 329, - USAMPLER2DARRAY = 330, - USAMPLERCUBEARRAY = 331, - SAMPLER2DRECT = 332, - ISAMPLER2DRECT = 333, - USAMPLER2DRECT = 334, - SAMPLER2DRECTSHADOW = 335, - SAMPLERBUFFER = 336, - ISAMPLERBUFFER = 337, - USAMPLERBUFFER = 338, - SAMPLER2DMS = 339, - ISAMPLER2DMS = 340, - USAMPLER2DMS = 341, - SAMPLER2DMSARRAY = 342, - ISAMPLER2DMSARRAY = 343, - USAMPLER2DMSARRAY = 344, - SAMPLEREXTERNALOES = 345, - STRUCT = 346, - VOID_TOK = 347, - WHILE = 348, - IDENTIFIER = 349, - TYPE_IDENTIFIER = 350, - NEW_IDENTIFIER = 351, - FLOATCONSTANT = 352, - INTCONSTANT = 353, - UINTCONSTANT = 354, - BOOLCONSTANT = 355, - FIELD_SELECTION = 356, - LEFT_OP = 357, - RIGHT_OP = 358, - INC_OP = 359, - DEC_OP = 360, - LE_OP = 361, - GE_OP = 362, - EQ_OP = 363, - NE_OP = 364, - AND_OP = 365, - OR_OP = 366, - XOR_OP = 367, - MUL_ASSIGN = 368, - DIV_ASSIGN = 369, - ADD_ASSIGN = 370, - MOD_ASSIGN = 371, - LEFT_ASSIGN = 372, - RIGHT_ASSIGN = 373, - AND_ASSIGN = 374, - XOR_ASSIGN = 375, - OR_ASSIGN = 376, - SUB_ASSIGN = 377, - INVARIANT = 378, - LOWP = 379, - MEDIUMP = 380, - HIGHP = 381, - SUPERP = 382, - PRECISION = 383, - VERSION_TOK = 384, - EXTENSION = 385, - LINE = 386, - COLON = 387, - EOL = 388, - INTERFACE = 389, - OUTPUT = 390, - PRAGMA_DEBUG_ON = 391, - PRAGMA_DEBUG_OFF = 392, - PRAGMA_OPTIMIZE_ON = 393, - PRAGMA_OPTIMIZE_OFF = 394, - PRAGMA_INVARIANT_ALL = 395, - LAYOUT_TOK = 396, - ASM = 397, - CLASS = 398, - UNION = 399, - ENUM = 400, - TYPEDEF = 401, - TEMPLATE = 402, - THIS = 403, - PACKED_TOK = 404, - GOTO = 405, - INLINE_TOK = 406, - NOINLINE = 407, - VOLATILE = 408, - PUBLIC_TOK = 409, - STATIC = 410, - EXTERN = 411, - EXTERNAL = 412, - LONG_TOK = 413, - SHORT_TOK = 414, - DOUBLE_TOK = 415, - HALF = 416, - FIXED_TOK = 417, - UNSIGNED = 418, - INPUT_TOK = 419, - OUPTUT = 420, - HVEC2 = 421, - HVEC3 = 422, - HVEC4 = 423, - DVEC2 = 424, - DVEC3 = 425, - DVEC4 = 426, - FVEC2 = 427, - FVEC3 = 428, - FVEC4 = 429, - SAMPLER3DRECT = 430, - SIZEOF = 431, - CAST = 432, - NAMESPACE = 433, - USING = 434, - COHERENT = 435, - RESTRICT = 436, - READONLY = 437, - WRITEONLY = 438, - RESOURCE = 439, - ATOMIC_UINT = 440, - PATCH = 441, - SAMPLE = 442, - SUBROUTINE = 443, - ERROR_TOK = 444, - COMMON = 445, - PARTITION = 446, - ACTIVE = 447, - FILTER = 448, - IMAGE1D = 449, - IMAGE2D = 450, - IMAGE3D = 451, - IMAGECUBE = 452, - IMAGE1DARRAY = 453, - IMAGE2DARRAY = 454, - IIMAGE1D = 455, - IIMAGE2D = 456, - IIMAGE3D = 457, - IIMAGECUBE = 458, - IIMAGE1DARRAY = 459, - IIMAGE2DARRAY = 460, - UIMAGE1D = 461, - UIMAGE2D = 462, - UIMAGE3D = 463, - UIMAGECUBE = 464, - UIMAGE1DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGE1DSHADOW = 467, - IMAGE2DSHADOW = 468, - IMAGEBUFFER = 469, - IIMAGEBUFFER = 470, - UIMAGEBUFFER = 471, - IMAGE1DARRAYSHADOW = 472, - IMAGE2DARRAYSHADOW = 473, - ROW_MAJOR = 474, - THEN = 475 - }; + enum yytokentype + { + ATTRIBUTE = 258, + CONST_TOK = 259, + BOOL_TOK = 260, + FLOAT_TOK = 261, + INT_TOK = 262, + UINT_TOK = 263, + BREAK = 264, + CONTINUE = 265, + DO = 266, + ELSE = 267, + FOR = 268, + IF = 269, + DISCARD = 270, + RETURN = 271, + SWITCH = 272, + CASE = 273, + DEFAULT = 274, + BVEC2 = 275, + BVEC3 = 276, + BVEC4 = 277, + IVEC2 = 278, + IVEC3 = 279, + IVEC4 = 280, + UVEC2 = 281, + UVEC3 = 282, + UVEC4 = 283, + VEC2 = 284, + VEC3 = 285, + VEC4 = 286, + CENTROID = 287, + IN_TOK = 288, + OUT_TOK = 289, + INOUT_TOK = 290, + UNIFORM = 291, + VARYING = 292, + NOPERSPECTIVE = 293, + FLAT = 294, + SMOOTH = 295, + MAT2X2 = 296, + MAT2X3 = 297, + MAT2X4 = 298, + MAT3X2 = 299, + MAT3X3 = 300, + MAT3X4 = 301, + MAT4X2 = 302, + MAT4X3 = 303, + MAT4X4 = 304, + SAMPLER1D = 305, + SAMPLER2D = 306, + SAMPLER3D = 307, + SAMPLERCUBE = 308, + SAMPLER1DSHADOW = 309, + SAMPLER2DSHADOW = 310, + SAMPLERCUBESHADOW = 311, + SAMPLER1DARRAY = 312, + SAMPLER2DARRAY = 313, + SAMPLER1DARRAYSHADOW = 314, + SAMPLER2DARRAYSHADOW = 315, + SAMPLERCUBEARRAY = 316, + SAMPLERCUBEARRAYSHADOW = 317, + ISAMPLER1D = 318, + ISAMPLER2D = 319, + ISAMPLER3D = 320, + ISAMPLERCUBE = 321, + ISAMPLER1DARRAY = 322, + ISAMPLER2DARRAY = 323, + ISAMPLERCUBEARRAY = 324, + USAMPLER1D = 325, + USAMPLER2D = 326, + USAMPLER3D = 327, + USAMPLERCUBE = 328, + USAMPLER1DARRAY = 329, + USAMPLER2DARRAY = 330, + USAMPLERCUBEARRAY = 331, + SAMPLER2DRECT = 332, + ISAMPLER2DRECT = 333, + USAMPLER2DRECT = 334, + SAMPLER2DRECTSHADOW = 335, + SAMPLERBUFFER = 336, + ISAMPLERBUFFER = 337, + USAMPLERBUFFER = 338, + SAMPLER2DMS = 339, + ISAMPLER2DMS = 340, + USAMPLER2DMS = 341, + SAMPLER2DMSARRAY = 342, + ISAMPLER2DMSARRAY = 343, + USAMPLER2DMSARRAY = 344, + SAMPLEREXTERNALOES = 345, + IMAGE1D = 346, + IMAGE2D = 347, + IMAGE3D = 348, + IMAGE2DRECT = 349, + IMAGECUBE = 350, + IMAGEBUFFER = 351, + IMAGE1DARRAY = 352, + IMAGE2DARRAY = 353, + IMAGECUBEARRAY = 354, + IMAGE2DMS = 355, + IMAGE2DMSARRAY = 356, + IIMAGE1D = 357, + IIMAGE2D = 358, + IIMAGE3D = 359, + IIMAGE2DRECT = 360, + IIMAGECUBE = 361, + IIMAGEBUFFER = 362, + IIMAGE1DARRAY = 363, + IIMAGE2DARRAY = 364, + IIMAGECUBEARRAY = 365, + IIMAGE2DMS = 366, + IIMAGE2DMSARRAY = 367, + UIMAGE1D = 368, + UIMAGE2D = 369, + UIMAGE3D = 370, + UIMAGE2DRECT = 371, + UIMAGECUBE = 372, + UIMAGEBUFFER = 373, + UIMAGE1DARRAY = 374, + UIMAGE2DARRAY = 375, + UIMAGECUBEARRAY = 376, + UIMAGE2DMS = 377, + UIMAGE2DMSARRAY = 378, + IMAGE1DSHADOW = 379, + IMAGE2DSHADOW = 380, + IMAGE1DARRAYSHADOW = 381, + IMAGE2DARRAYSHADOW = 382, + COHERENT = 383, + VOLATILE = 384, + RESTRICT = 385, + READONLY = 386, + WRITEONLY = 387, + ATOMIC_UINT = 388, + STRUCT = 389, + VOID_TOK = 390, + WHILE = 391, + IDENTIFIER = 392, + TYPE_IDENTIFIER = 393, + NEW_IDENTIFIER = 394, + FLOATCONSTANT = 395, + INTCONSTANT = 396, + UINTCONSTANT = 397, + BOOLCONSTANT = 398, + FIELD_SELECTION = 399, + LEFT_OP = 400, + RIGHT_OP = 401, + INC_OP = 402, + DEC_OP = 403, + LE_OP = 404, + GE_OP = 405, + EQ_OP = 406, + NE_OP = 407, + AND_OP = 408, + OR_OP = 409, + XOR_OP = 410, + MUL_ASSIGN = 411, + DIV_ASSIGN = 412, + ADD_ASSIGN = 413, + MOD_ASSIGN = 414, + LEFT_ASSIGN = 415, + RIGHT_ASSIGN = 416, + AND_ASSIGN = 417, + XOR_ASSIGN = 418, + OR_ASSIGN = 419, + SUB_ASSIGN = 420, + INVARIANT = 421, + LOWP = 422, + MEDIUMP = 423, + HIGHP = 424, + SUPERP = 425, + PRECISION = 426, + VERSION_TOK = 427, + EXTENSION = 428, + LINE = 429, + COLON = 430, + EOL = 431, + INTERFACE = 432, + OUTPUT = 433, + PRAGMA_DEBUG_ON = 434, + PRAGMA_DEBUG_OFF = 435, + PRAGMA_OPTIMIZE_ON = 436, + PRAGMA_OPTIMIZE_OFF = 437, + PRAGMA_INVARIANT_ALL = 438, + LAYOUT_TOK = 439, + ASM = 440, + CLASS = 441, + UNION = 442, + ENUM = 443, + TYPEDEF = 444, + TEMPLATE = 445, + THIS = 446, + PACKED_TOK = 447, + GOTO = 448, + INLINE_TOK = 449, + NOINLINE = 450, + PUBLIC_TOK = 451, + STATIC = 452, + EXTERN = 453, + EXTERNAL = 454, + LONG_TOK = 455, + SHORT_TOK = 456, + DOUBLE_TOK = 457, + HALF = 458, + FIXED_TOK = 459, + UNSIGNED = 460, + INPUT_TOK = 461, + OUPTUT = 462, + HVEC2 = 463, + HVEC3 = 464, + HVEC4 = 465, + DVEC2 = 466, + DVEC3 = 467, + DVEC4 = 468, + FVEC2 = 469, + FVEC3 = 470, + FVEC4 = 471, + SAMPLER3DRECT = 472, + SIZEOF = 473, + CAST = 474, + NAMESPACE = 475, + USING = 476, + RESOURCE = 477, + PATCH = 478, + SAMPLE = 479, + SUBROUTINE = 480, + ERROR_TOK = 481, + COMMON = 482, + PARTITION = 483, + ACTIVE = 484, + FILTER = 485, + ROW_MAJOR = 486, + THEN = 487 + }; #endif - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE +typedef union YYSTYPE YYSTYPE; +union YYSTYPE { -/* Line 2053 of yacc.c */ -#line 65 "glsl_parser.yy" +#line 91 "glsl_parser.yy" /* yacc.c:1909 */ int n; float real; @@ -282,6 +293,7 @@ typedef union YYSTYPE ast_node *node; ast_type_specifier *type_specifier; + ast_array_specifier *array_specifier; ast_fully_specified_type *fully_specified_type; ast_function *function; ast_parameter_declarator *parameter_declarator; @@ -308,41 +320,28 @@ typedef union YYSTYPE ast_node *else_statement; } selection_rest_statement; - -/* Line 2053 of yacc.c */ -#line 314 "../../src/glsl/glsl_parser.h" -} YYSTYPE; +#line 324 "../../src/glsl/glsl_parser.h" /* yacc.c:1909 */ +}; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int _mesa_glsl_parse (void *YYPARSE_PARAM); -#else -int _mesa_glsl_parse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus + int _mesa_glsl_parse (struct _mesa_glsl_parse_state *state); -#else -int _mesa_glsl_parse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED */ diff --git a/dist/Mesa/src/glsl/glsl_parser.yy b/dist/Mesa/src/glsl/glsl_parser.yy index a87feafe1..b09d6e536 100644 --- a/dist/Mesa/src/glsl/glsl_parser.yy +++ b/dist/Mesa/src/glsl/glsl_parser.yy @@ -43,6 +43,32 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) { return _mesa_glsl_lexer_lex(val, loc, state->scanner); } + +static bool match_layout_qualifier(const char *s1, const char *s2, + _mesa_glsl_parse_state *state) +{ + /* From the GLSL 1.50 spec, section 4.3.8 (Layout Qualifiers): + * + * "The tokens in any layout-qualifier-id-list ... are not case + * sensitive, unless explicitly noted otherwise." + * + * The text "unless explicitly noted otherwise" appears to be + * vacuous--no desktop GLSL spec (up through GLSL 4.40) notes + * otherwise. + * + * However, the GLSL ES 3.00 spec says, in section 4.3.8 (Layout + * Qualifiers): + * + * "As for other identifiers, they are case sensitive." + * + * So we need to do a case-sensitive or a case-insensitive match, + * depending on whether we are compiling for GLSL ES. + */ + if (state->es_shader) + return strcmp(s1, s2); + else + return strcasecmp(s1, s2); +} %} %expect 0 @@ -71,6 +97,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) ast_node *node; ast_type_specifier *type_specifier; + ast_array_specifier *array_specifier; ast_fully_specified_type *fully_specified_type; ast_function *function; ast_parameter_declarator *parameter_declarator; @@ -118,6 +145,15 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) %token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS %token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY %token SAMPLEREXTERNALOES +%token IMAGE1D IMAGE2D IMAGE3D IMAGE2DRECT IMAGECUBE IMAGEBUFFER +%token IMAGE1DARRAY IMAGE2DARRAY IMAGECUBEARRAY IMAGE2DMS IMAGE2DMSARRAY +%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGE2DRECT IIMAGECUBE IIMAGEBUFFER +%token IIMAGE1DARRAY IIMAGE2DARRAY IIMAGECUBEARRAY IIMAGE2DMS IIMAGE2DMSARRAY +%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGE2DRECT UIMAGECUBE UIMAGEBUFFER +%token UIMAGE1DARRAY UIMAGE2DARRAY UIMAGECUBEARRAY UIMAGE2DMS UIMAGE2DMSARRAY +%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW +%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY +%token ATOMIC_UINT %token STRUCT VOID_TOK WHILE %token <identifier> IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER %type <identifier> any_identifier @@ -142,23 +178,17 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) /* Reserved words that are not actually used in the grammar. */ %token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO -%token INLINE_TOK NOINLINE VOLATILE PUBLIC_TOK STATIC EXTERN EXTERNAL +%token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL %token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK OUPTUT %token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4 %token SAMPLER3DRECT %token SIZEOF CAST NAMESPACE USING -%token COHERENT RESTRICT READONLY WRITEONLY RESOURCE ATOMIC_UINT PATCH SAMPLE +%token RESOURCE PATCH SAMPLE %token SUBROUTINE %token ERROR_TOK -%token COMMON PARTITION ACTIVE FILTER -%token IMAGE1D IMAGE2D IMAGE3D IMAGECUBE IMAGE1DARRAY IMAGE2DARRAY -%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY -%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY -%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER -%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW -%token ROW_MAJOR +%token COMMON PARTITION ACTIVE FILTER ROW_MAJOR %type <identifier> variable_identifier %type <node> statement @@ -175,6 +205,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) %type <type_qualifier> interface_qualifier %type <type_specifier> type_specifier %type <type_specifier> type_specifier_nonarray +%type <array_specifier> array_specifier %type <identifier> basic_type_specifier_nonarray %type <fully_specified_type> fully_specified_type %type <function> function_prototype @@ -254,6 +285,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state) %type <node> for_init_statement %type <for_rest_statement> for_rest_statement %type <n> integer_constant +%type <node> layout_defaults %right THEN ELSE %% @@ -299,7 +331,7 @@ pragma_statement: if (!state->is_version(120, 100)) { _mesa_glsl_warning(& @1, state, "pragma `invariant(all)' not supported in %s " - "(GLSL ES 1.00 or GLSL 1.20 required).", + "(GLSL ES 1.00 or GLSL 1.20 required)", state->get_version_string()); } else { state->all_invariant = true; @@ -356,35 +388,35 @@ primary_expression: { void *ctx = state; $$ = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); $$->primary_expression.identifier = $1; } | INTCONSTANT { void *ctx = state; $$ = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); $$->primary_expression.int_constant = $1; } | UINTCONSTANT { void *ctx = state; $$ = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); $$->primary_expression.uint_constant = $1; } | FLOATCONSTANT { void *ctx = state; $$ = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); $$->primary_expression.float_constant = $1; } | BOOLCONSTANT { void *ctx = state; $$ = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); $$->primary_expression.bool_constant = $1; } | '(' expression ')' @@ -399,7 +431,7 @@ postfix_expression: { void *ctx = state; $$ = new(ctx) ast_expression(ast_array_index, $1, $3, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @4); } | function_call { @@ -409,20 +441,20 @@ postfix_expression: { void *ctx = state; $$ = new(ctx) ast_expression(ast_field_selection, $1, NULL, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); $$->primary_expression.identifier = $3; } | postfix_expression INC_OP { void *ctx = state; $$ = new(ctx) ast_expression(ast_post_inc, $1, NULL, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } | postfix_expression DEC_OP { void *ctx = state; $$ = new(ctx) ast_expression(ast_post_dec, $1, NULL, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } ; @@ -440,7 +472,7 @@ function_call_or_method: { void *ctx = state; $$ = new(ctx) ast_expression(ast_field_selection, $1, $3, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -458,13 +490,13 @@ function_call_header_with_parameters: function_call_header assignment_expression { $$ = $1; - $$->set_location(yylloc); + $$->set_location(@1); $$->expressions.push_tail(& $2->link); } | function_call_header_with_parameters ',' assignment_expression { $$ = $1; - $$->set_location(yylloc); + $$->set_location(@1); $$->expressions.push_tail(& $3->link); } ; @@ -481,21 +513,23 @@ function_identifier: { void *ctx = state; $$ = new(ctx) ast_function_expression($1); - $$->set_location(yylloc); + $$->set_location(@1); } | variable_identifier { void *ctx = state; ast_expression *callee = new(ctx) ast_expression($1); + callee->set_location(@1); $$ = new(ctx) ast_function_expression(callee); - $$->set_location(yylloc); + $$->set_location(@1); } | FIELD_SELECTION { void *ctx = state; ast_expression *callee = new(ctx) ast_expression($1); + callee->set_location(@1); $$ = new(ctx) ast_function_expression(callee); - $$->set_location(yylloc); + $$->set_location(@1); } ; @@ -513,13 +547,13 @@ method_call_header_with_parameters: method_call_header assignment_expression { $$ = $1; - $$->set_location(yylloc); + $$->set_location(@1); $$->expressions.push_tail(& $2->link); } | method_call_header_with_parameters ',' assignment_expression { $$ = $1; - $$->set_location(yylloc); + $$->set_location(@1); $$->expressions.push_tail(& $3->link); } ; @@ -532,8 +566,9 @@ method_call_header: { void *ctx = state; ast_expression *callee = new(ctx) ast_expression($1); + callee->set_location(@1); $$ = new(ctx) ast_function_expression(callee); - $$->set_location(yylloc); + $$->set_location(@1); } ; @@ -544,19 +579,19 @@ unary_expression: { void *ctx = state; $$ = new(ctx) ast_expression(ast_pre_inc, $2, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | DEC_OP unary_expression { void *ctx = state; $$ = new(ctx) ast_expression(ast_pre_dec, $2, NULL, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | unary_operator unary_expression { void *ctx = state; $$ = new(ctx) ast_expression($1, $2, NULL, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } ; @@ -574,19 +609,19 @@ multiplicative_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_mul, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | multiplicative_expression '/' unary_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_div, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | multiplicative_expression '%' unary_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_mod, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -596,13 +631,13 @@ additive_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_add, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | additive_expression '-' multiplicative_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_sub, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -612,13 +647,13 @@ shift_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_lshift, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | shift_expression RIGHT_OP additive_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_rshift, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -628,25 +663,25 @@ relational_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_less, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | relational_expression '>' shift_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_greater, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | relational_expression LE_OP shift_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_lequal, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | relational_expression GE_OP shift_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_gequal, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -656,13 +691,13 @@ equality_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_equal, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } | equality_expression NE_OP relational_expression { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_nequal, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -672,7 +707,7 @@ and_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_bit_and, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -682,7 +717,7 @@ exclusive_or_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_bit_xor, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -692,7 +727,7 @@ inclusive_or_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_bit_or, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -702,7 +737,7 @@ logical_and_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_logic_and, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -712,7 +747,7 @@ logical_xor_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_logic_xor, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -722,7 +757,7 @@ logical_or_expression: { void *ctx = state; $$ = new(ctx) ast_expression_bin(ast_logic_or, $1, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -732,7 +767,7 @@ conditional_expression: { void *ctx = state; $$ = new(ctx) ast_expression(ast_conditional, $1, $3, $5); - $$->set_location(yylloc); + $$->set_location_range(@1, @5); } ; @@ -742,7 +777,7 @@ assignment_expression: { void *ctx = state; $$ = new(ctx) ast_expression($2, $1, $3, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -770,7 +805,7 @@ expression: void *ctx = state; if ($1->oper != ast_sequence) { $$ = new(ctx) ast_expression(ast_sequence, NULL, NULL, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); $$->expressions.push_tail(& $1->link); } else { $$ = $1; @@ -832,7 +867,7 @@ function_header: { void *ctx = state; $$ = new(ctx) ast_function(); - $$->set_location(yylloc); + $$->set_location(@2); $$->return_type = $1; $$->identifier = $2; @@ -846,23 +881,22 @@ parameter_declarator: { void *ctx = state; $$ = new(ctx) ast_parameter_declarator(); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->type = new(ctx) ast_fully_specified_type(); - $$->type->set_location(yylloc); + $$->type->set_location(@1); $$->type->specifier = $1; $$->identifier = $2; } - | type_specifier any_identifier '[' constant_expression ']' + | type_specifier any_identifier array_specifier { void *ctx = state; $$ = new(ctx) ast_parameter_declarator(); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); $$->type = new(ctx) ast_fully_specified_type(); - $$->type->set_location(yylloc); + $$->type->set_location(@1); $$->type->specifier = $1; $$->identifier = $2; - $$->is_array = true; - $$->array_size = $4; + $$->array_specifier = $3; } ; @@ -876,8 +910,9 @@ parameter_declaration: { void *ctx = state; $$ = new(ctx) ast_parameter_declarator(); - $$->set_location(yylloc); + $$->set_location(@2); $$->type = new(ctx) ast_fully_specified_type(); + $$->type->set_location_range(@1, @2); $$->type->qualifier = $1; $$->type->specifier = $2; } @@ -891,7 +926,7 @@ parameter_qualifier: | CONST_TOK parameter_qualifier { if ($2.flags.q.constant) - _mesa_glsl_error(&@1, state, "duplicate const qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate const qualifier"); $$ = $2; $$.flags.q.constant = 1; @@ -899,11 +934,11 @@ parameter_qualifier: | parameter_direction_qualifier parameter_qualifier { if (($1.flags.q.in || $1.flags.q.out) && ($2.flags.q.in || $2.flags.q.out)) - _mesa_glsl_error(&@1, state, "duplicate in/out/inout qualifier\n"); + _mesa_glsl_error(&@1, state, "duplicate in/out/inout qualifier"); if (!state->ARB_shading_language_420pack_enable && $2.flags.q.constant) _mesa_glsl_error(&@1, state, "const must be specified before " - "in/out/inout.\n"); + "in/out/inout"); $$ = $1; $$.merge_qualifier(&@1, state, $2); @@ -911,10 +946,10 @@ parameter_qualifier: | precision_qualifier parameter_qualifier { if ($2.precision != ast_precision_none) - _mesa_glsl_error(&@1, state, "Duplicate precision qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate precision qualifier"); if (!state->ARB_shading_language_420pack_enable && $2.flags.i != 0) - _mesa_glsl_error(&@1, state, "Precision qualifiers must come last.\n"); + _mesa_glsl_error(&@1, state, "precision qualifiers must come last"); $$ = $2; $$.precision = $1; @@ -948,76 +983,42 @@ init_declarator_list: | init_declarator_list ',' any_identifier { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, false, NULL, NULL); - decl->set_location(yylloc); - - $$ = $1; - $$->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); - } - | init_declarator_list ',' any_identifier '[' ']' - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, true, NULL, NULL); - decl->set_location(yylloc); - - $$ = $1; - $$->declarations.push_tail(&decl->link); - state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); - } - | init_declarator_list ',' any_identifier '[' constant_expression ']' - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, true, $5, NULL); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration($3, NULL, NULL); + decl->set_location(@3); $$ = $1; $$->declarations.push_tail(&decl->link); state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); } - | init_declarator_list ',' any_identifier '[' ']' '=' initializer + | init_declarator_list ',' any_identifier array_specifier { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, true, NULL, $7); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration($3, $4, NULL); + decl->set_location_range(@3, @4); $$ = $1; $$->declarations.push_tail(&decl->link); state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); - if ($7->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)$7; - ast_type_specifier *type = new(ctx) ast_type_specifier($1->type->specifier, true, NULL); - _mesa_ast_set_aggregate_type(type, ai, state); - } } - | init_declarator_list ',' any_identifier '[' constant_expression ']' '=' initializer + | init_declarator_list ',' any_identifier array_specifier '=' initializer { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, true, $5, $8); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration($3, $4, $6); + decl->set_location_range(@3, @4); $$ = $1; $$->declarations.push_tail(&decl->link); state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); - if ($8->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)$8; - ast_type_specifier *type = new(ctx) ast_type_specifier($1->type->specifier, true, $5); - _mesa_ast_set_aggregate_type(type, ai, state); - } } | init_declarator_list ',' any_identifier '=' initializer { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($3, false, NULL, $5); - decl->set_location(yylloc); + ast_declaration *decl = new(ctx) ast_declaration($3, NULL, $5); + decl->set_location(@3); $$ = $1; $$->declarations.push_tail(&decl->link); state->symbols->add_variable(new(state) ir_variable(NULL, $3, ir_var_auto)); - if ($5->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)$5; - _mesa_ast_set_aggregate_type($1->type->specifier, ai, state); - } } ; @@ -1028,82 +1029,56 @@ single_declaration: void *ctx = state; /* Empty declaration list is valid. */ $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); + $$->set_location(@1); } | fully_specified_type any_identifier { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, false, NULL, NULL); - - $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); - $$->declarations.push_tail(&decl->link); - } - | fully_specified_type any_identifier '[' ']' - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, true, NULL, NULL); - - $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); - $$->declarations.push_tail(&decl->link); - } - | fully_specified_type any_identifier '[' constant_expression ']' - { - void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, true, $4, NULL); + ast_declaration *decl = new(ctx) ast_declaration($2, NULL, NULL); + decl->set_location(@2); $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->declarations.push_tail(&decl->link); } - | fully_specified_type any_identifier '[' ']' '=' initializer + | fully_specified_type any_identifier array_specifier { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, true, NULL, $6); + ast_declaration *decl = new(ctx) ast_declaration($2, $3, NULL); + decl->set_location_range(@2, @3); $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); $$->declarations.push_tail(&decl->link); - if ($6->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)$6; - ast_type_specifier *type = new(ctx) ast_type_specifier($1->specifier, true, NULL); - _mesa_ast_set_aggregate_type(type, ai, state); - } } - | fully_specified_type any_identifier '[' constant_expression ']' '=' initializer + | fully_specified_type any_identifier array_specifier '=' initializer { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, true, $4, $7); + ast_declaration *decl = new(ctx) ast_declaration($2, $3, $5); + decl->set_location_range(@2, @3); $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); $$->declarations.push_tail(&decl->link); - if ($7->oper == ast_aggregate) { - ast_aggregate_initializer *ai = (ast_aggregate_initializer *)$7; - ast_type_specifier *type = new(ctx) ast_type_specifier($1->specifier, true, $4); - _mesa_ast_set_aggregate_type(type, ai, state); - } } | fully_specified_type any_identifier '=' initializer { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, false, NULL, $4); + ast_declaration *decl = new(ctx) ast_declaration($2, NULL, $4); + decl->set_location(@2); $$ = new(ctx) ast_declarator_list($1); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->declarations.push_tail(&decl->link); - if ($4->oper == ast_aggregate) { - _mesa_ast_set_aggregate_type($1->specifier, $4, state); - } } | INVARIANT variable_identifier // Vertex only. { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, false, NULL, NULL); + ast_declaration *decl = new(ctx) ast_declaration($2, NULL, NULL); + decl->set_location(@2); $$ = new(ctx) ast_declarator_list(NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->invariant = true; $$->declarations.push_tail(&decl->link); @@ -1115,14 +1090,14 @@ fully_specified_type: { void *ctx = state; $$ = new(ctx) ast_fully_specified_type(); - $$->set_location(yylloc); + $$->set_location(@1); $$->specifier = $1; } | type_qualifier type_specifier { void *ctx = state; $$ = new(ctx) ast_fully_specified_type(); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->qualifier = $1; $$->specifier = $2; } @@ -1157,17 +1132,19 @@ layout_qualifier_id: memset(& $$, 0, sizeof($$)); /* Layout qualifiers for ARB_fragment_coord_conventions. */ - if (!$$.flags.i && state->ARB_fragment_coord_conventions_enable) { - if (strcmp($1, "origin_upper_left") == 0) { + if (!$$.flags.i && (state->ARB_fragment_coord_conventions_enable || + state->is_version(150, 0))) { + if (match_layout_qualifier($1, "origin_upper_left", state) == 0) { $$.flags.q.origin_upper_left = 1; - } else if (strcmp($1, "pixel_center_integer") == 0) { + } else if (match_layout_qualifier($1, "pixel_center_integer", + state) == 0) { $$.flags.q.pixel_center_integer = 1; } if ($$.flags.i && state->ARB_fragment_coord_conventions_warn) { _mesa_glsl_warning(& @1, state, "GL_ARB_fragment_coord_conventions layout " - "identifier `%s' used\n", $1); + "identifier `%s' used", $1); } } @@ -1175,56 +1152,163 @@ layout_qualifier_id: if (!$$.flags.i && (state->AMD_conservative_depth_enable || state->ARB_conservative_depth_enable)) { - if (strcmp($1, "depth_any") == 0) { + if (match_layout_qualifier($1, "depth_any", state) == 0) { $$.flags.q.depth_any = 1; - } else if (strcmp($1, "depth_greater") == 0) { + } else if (match_layout_qualifier($1, "depth_greater", state) == 0) { $$.flags.q.depth_greater = 1; - } else if (strcmp($1, "depth_less") == 0) { + } else if (match_layout_qualifier($1, "depth_less", state) == 0) { $$.flags.q.depth_less = 1; - } else if (strcmp($1, "depth_unchanged") == 0) { + } else if (match_layout_qualifier($1, "depth_unchanged", + state) == 0) { $$.flags.q.depth_unchanged = 1; } if ($$.flags.i && state->AMD_conservative_depth_warn) { _mesa_glsl_warning(& @1, state, "GL_AMD_conservative_depth " - "layout qualifier `%s' is used\n", $1); + "layout qualifier `%s' is used", $1); } if ($$.flags.i && state->ARB_conservative_depth_warn) { _mesa_glsl_warning(& @1, state, "GL_ARB_conservative_depth " - "layout qualifier `%s' is used\n", $1); + "layout qualifier `%s' is used", $1); } } /* See also interface_block_layout_qualifier. */ - if (!$$.flags.i && state->ARB_uniform_buffer_object_enable) { - if (strcmp($1, "std140") == 0) { + if (!$$.flags.i && state->has_uniform_buffer_objects()) { + if (match_layout_qualifier($1, "std140", state) == 0) { $$.flags.q.std140 = 1; - } else if (strcmp($1, "shared") == 0) { + } else if (match_layout_qualifier($1, "shared", state) == 0) { $$.flags.q.shared = 1; - } else if (strcmp($1, "column_major") == 0) { + } else if (match_layout_qualifier($1, "column_major", state) == 0) { $$.flags.q.column_major = 1; /* "row_major" is a reserved word in GLSL 1.30+. Its token is parsed * below in the interface_block_layout_qualifier rule. * * It is not a reserved word in GLSL ES 3.00, so it's handled here as * an identifier. + * + * Also, this takes care of alternate capitalizations of + * "row_major" (which is necessary because layout qualifiers + * are case-insensitive in desktop GLSL). */ - } else if (strcmp($1, "row_major") == 0) { + } else if (match_layout_qualifier($1, "row_major", state) == 0) { $$.flags.q.row_major = 1; + /* "packed" is a reserved word in GLSL, and its token is + * parsed below in the interface_block_layout_qualifier rule. + * However, we must take care of alternate capitalizations of + * "packed", because layout qualifiers are case-insensitive + * in desktop GLSL. + */ + } else if (match_layout_qualifier($1, "packed", state) == 0) { + $$.flags.q.packed = 1; } if ($$.flags.i && state->ARB_uniform_buffer_object_warn) { _mesa_glsl_warning(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", $1); + "layout qualifier `%s' is used", $1); + } + } + + /* Layout qualifiers for GLSL 1.50 geometry shaders. */ + if (!$$.flags.i) { + static const struct { + const char *s; + GLenum e; + } map[] = { + { "points", GL_POINTS }, + { "lines", GL_LINES }, + { "lines_adjacency", GL_LINES_ADJACENCY }, + { "line_strip", GL_LINE_STRIP }, + { "triangles", GL_TRIANGLES }, + { "triangles_adjacency", GL_TRIANGLES_ADJACENCY }, + { "triangle_strip", GL_TRIANGLE_STRIP }, + }; + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier($1, map[i].s, state) == 0) { + $$.flags.q.prim_type = 1; + $$.prim_type = map[i].e; + break; + } + } + + if ($$.flags.i && !state->is_version(150, 0)) { + _mesa_glsl_error(& @1, state, "#version 150 layout " + "qualifier `%s' used", $1); + } + } + + /* Layout qualifiers for ARB_shader_image_load_store. */ + if (state->ARB_shader_image_load_store_enable || + state->is_version(420, 0)) { + if (!$$.flags.i) { + static const struct { + const char *name; + GLenum format; + glsl_base_type base_type; + } map[] = { + { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT }, + { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT }, + { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT }, + { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT }, + { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT }, + { "r32f", GL_R32F, GLSL_TYPE_FLOAT }, + { "r16f", GL_R16F, GLSL_TYPE_FLOAT }, + { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT }, + { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT }, + { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT }, + { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT }, + { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT }, + { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT }, + { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT }, + { "r32ui", GL_R32UI, GLSL_TYPE_UINT }, + { "r16ui", GL_R16UI, GLSL_TYPE_UINT }, + { "r8ui", GL_R8UI, GLSL_TYPE_UINT }, + { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT }, + { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT }, + { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT }, + { "rg32i", GL_RG32I, GLSL_TYPE_INT }, + { "rg16i", GL_RG16I, GLSL_TYPE_INT }, + { "rg8i", GL_RG8I, GLSL_TYPE_INT }, + { "r32i", GL_R32I, GLSL_TYPE_INT }, + { "r16i", GL_R16I, GLSL_TYPE_INT }, + { "r8i", GL_R8I, GLSL_TYPE_INT }, + { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT }, + { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT }, + { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT }, + { "rg16", GL_RG16, GLSL_TYPE_FLOAT }, + { "rg8", GL_RG8, GLSL_TYPE_FLOAT }, + { "r16", GL_R16, GLSL_TYPE_FLOAT }, + { "r8", GL_R8, GLSL_TYPE_FLOAT }, + { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT }, + { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT }, + { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT }, + { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT }, + { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT }, + { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT } + }; + + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier($1, map[i].name, state) == 0) { + $$.flags.q.explicit_image_format = 1; + $$.image_format = map[i].format; + $$.image_base_type = map[i].base_type; + break; + } + } + } + + if (!$$.flags.i && + match_layout_qualifier($1, "early_fragment_tests", state) == 0) { + $$.flags.q.early_fragment_tests = 1; } } if (!$$.flags.i) { _mesa_glsl_error(& @1, state, "unrecognized layout identifier " - "`%s'\n", $1); + "`%s'", $1); YYERROR; } } @@ -1232,36 +1316,114 @@ layout_qualifier_id: { memset(& $$, 0, sizeof($$)); - if (state->ARB_explicit_attrib_location_enable) { - if (strcmp("location", $1) == 0) { - $$.flags.q.explicit_location = 1; + if (match_layout_qualifier("location", $1, state) == 0) { + $$.flags.q.explicit_location = 1; - if ($3 >= 0) { - $$.location = $3; - } else { + if ($$.flags.q.attribute == 1 && + state->ARB_explicit_attrib_location_warn) { + _mesa_glsl_warning(& @1, state, + "GL_ARB_explicit_attrib_location layout " + "identifier `%s' used", $1); + } + + if ($3 >= 0) { + $$.location = $3; + } else { + _mesa_glsl_error(& @3, state, "invalid location %d specified", $3); + YYERROR; + } + } + + if (match_layout_qualifier("index", $1, state) == 0) { + $$.flags.q.explicit_index = 1; + + if ($3 >= 0) { + $$.index = $3; + } else { + _mesa_glsl_error(& @3, state, "invalid index %d specified", $3); + YYERROR; + } + } + + if ((state->ARB_shading_language_420pack_enable || + state->ARB_shader_atomic_counters_enable) && + match_layout_qualifier("binding", $1, state) == 0) { + $$.flags.q.explicit_binding = 1; + $$.binding = $3; + } + + if (state->ARB_shader_atomic_counters_enable && + match_layout_qualifier("offset", $1, state) == 0) { + $$.flags.q.explicit_offset = 1; + $$.offset = $3; + } + + if (match_layout_qualifier("max_vertices", $1, state) == 0) { + $$.flags.q.max_vertices = 1; + + if ($3 < 0) { + _mesa_glsl_error(& @3, state, + "invalid max_vertices %d specified", $3); + YYERROR; + } else { + $$.max_vertices = $3; + if (!state->is_version(150, 0)) { _mesa_glsl_error(& @3, state, - "invalid location %d specified\n", $3); - YYERROR; + "#version 150 max_vertices qualifier " + "specified", $3); } } + } - if (strcmp("index", $1) == 0) { - $$.flags.q.explicit_index = 1; - - if ($3 >= 0) { - $$.index = $3; - } else { + static const char * const local_size_qualifiers[3] = { + "local_size_x", + "local_size_y", + "local_size_z", + }; + for (int i = 0; i < 3; i++) { + if (match_layout_qualifier(local_size_qualifiers[i], $1, + state) == 0) { + if ($3 <= 0) { _mesa_glsl_error(& @3, state, - "invalid index %d specified\n", $3); + "invalid %s of %d specified", + local_size_qualifiers[i], $3); YYERROR; + } else if (!state->is_version(430, 0) && + !state->ARB_compute_shader_enable) { + _mesa_glsl_error(& @3, state, + "%s qualifier requires GLSL 4.30 or " + "ARB_compute_shader", + local_size_qualifiers[i]); + YYERROR; + } else { + $$.flags.q.local_size |= (1 << i); + $$.local_size[i] = $3; } + break; } } - if (state->ARB_shading_language_420pack_enable && - strcmp("binding", $1) == 0) { - $$.flags.q.explicit_binding = 1; - $$.binding = $3; + if (match_layout_qualifier("invocations", $1, state) == 0) { + $$.flags.q.invocations = 1; + + if ($3 <= 0) { + _mesa_glsl_error(& @3, state, + "invalid invocations %d specified", $3); + YYERROR; + } else if ($3 > MAX_GEOMETRY_SHADER_INVOCATIONS) { + _mesa_glsl_error(& @3, state, + "invocations (%d) exceeds " + "GL_MAX_GEOMETRY_SHADER_INVOCATIONS", $3); + YYERROR; + } else { + $$.invocations = $3; + if (!state->is_version(400, 0) && + !state->ARB_gpu_shader5_enable) { + _mesa_glsl_error(& @3, state, + "GL_ARB_gpu_shader5 invocations " + "qualifier specified", $3); + } + } } /* If the identifier didn't match any known layout identifiers, @@ -1269,26 +1431,22 @@ layout_qualifier_id: */ if (!$$.flags.i) { _mesa_glsl_error(& @1, state, "unrecognized layout identifier " - "`%s'\n", $1); + "`%s'", $1); YYERROR; - } else if (state->ARB_explicit_attrib_location_warn) { - _mesa_glsl_warning(& @1, state, - "GL_ARB_explicit_attrib_location layout " - "identifier `%s' used\n", $1); } } | interface_block_layout_qualifier { $$ = $1; /* Layout qualifiers for ARB_uniform_buffer_object. */ - if ($$.flags.q.uniform && !state->ARB_uniform_buffer_object_enable) { + if ($$.flags.q.uniform && !state->has_uniform_buffer_objects()) { _mesa_glsl_error(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", $1); + "layout qualifier `%s' is used", $1); } else if ($$.flags.q.uniform && state->ARB_uniform_buffer_object_warn) { _mesa_glsl_warning(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " - "layout qualifier `%s' is used\n", $1); + "layout qualifier `%s' is used", $1); } } ; @@ -1297,6 +1455,10 @@ layout_qualifier_id: * (due to them being reserved keywords) instead of identifiers like * most qualifiers. See the any_identifier path of * layout_qualifier_id for the others. + * + * Note that since layout qualifiers are case-insensitive in desktop + * GLSL, all of these qualifiers need to be handled as identifiers as + * well (by the any_identifier path of layout_qualifier_id). */ interface_block_layout_qualifier: ROW_MAJOR @@ -1361,11 +1523,11 @@ type_qualifier: | INVARIANT type_qualifier { if ($2.flags.q.invariant) - _mesa_glsl_error(&@1, state, "Duplicate \"invariant\" qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate \"invariant\" qualifier"); if ($2.has_layout()) { _mesa_glsl_error(&@1, state, - "\"invariant\" cannot be used with layout(...).\n"); + "\"invariant\" cannot be used with layout(...)"); } $$ = $2; @@ -1384,16 +1546,16 @@ type_qualifier: * only one after all, and the 1.40 text is a clarification, not a change. */ if ($2.has_interpolation()) - _mesa_glsl_error(&@1, state, "Duplicate interpolation qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate interpolation qualifier"); if ($2.has_layout()) { - _mesa_glsl_error(&@1, state, "Interpolation qualifiers cannot be used " - "with layout(...).\n"); + _mesa_glsl_error(&@1, state, "interpolation qualifiers cannot be used " + "with layout(...)"); } if (!state->ARB_shading_language_420pack_enable && $2.flags.q.invariant) { - _mesa_glsl_error(&@1, state, "Interpolation qualifiers must come " - "after \"invariant\".\n"); + _mesa_glsl_error(&@1, state, "interpolation qualifiers must come " + "after \"invariant\""); } $$ = $1; @@ -1408,15 +1570,15 @@ type_qualifier: * qualifier, but always seems to in examples. */ if (!state->ARB_shading_language_420pack_enable && $2.has_layout()) - _mesa_glsl_error(&@1, state, "Duplicate layout(...) qualifiers.\n"); + _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers"); if ($2.flags.q.invariant) _mesa_glsl_error(&@1, state, "layout(...) cannot be used with " - "the \"invariant\" qualifier\n"); + "the \"invariant\" qualifier"); if ($2.has_interpolation()) { _mesa_glsl_error(&@1, state, "layout(...) cannot be used with " - "interpolation qualifiers.\n"); + "interpolation qualifiers"); } $$ = $1; @@ -1426,16 +1588,16 @@ type_qualifier: { if ($2.has_auxiliary_storage()) { _mesa_glsl_error(&@1, state, - "Duplicate auxiliary storage qualifier (centroid).\n"); + "duplicate auxiliary storage qualifier (centroid or sample)"); } if (!state->ARB_shading_language_420pack_enable && ($2.flags.q.invariant || $2.has_interpolation() || $2.has_layout())) { - _mesa_glsl_error(&@1, state, "Auxiliary storage qualifiers must come " - "just before storage qualifiers.\n"); + _mesa_glsl_error(&@1, state, "auxiliary storage qualifiers must come " + "just before storage qualifiers"); } $$ = $1; - $$.flags.i |= $2.flags.i; + $$.merge_qualifier(&@1, state, $2); } | storage_qualifier type_qualifier { @@ -1444,14 +1606,14 @@ type_qualifier: * 1.30 clarifies this to "may have one storage qualifier". */ if ($2.has_storage()) - _mesa_glsl_error(&@1, state, "Duplicate storage qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate storage qualifier"); if (!state->ARB_shading_language_420pack_enable && ($2.flags.q.invariant || $2.has_interpolation() || $2.has_layout() || $2.has_auxiliary_storage())) { - _mesa_glsl_error(&@1, state, "Storage qualifiers must come after " + _mesa_glsl_error(&@1, state, "storage qualifiers must come after " "invariant, interpolation, layout and auxiliary " - "storage qualifiers.\n"); + "storage qualifiers"); } $$ = $1; @@ -1460,10 +1622,10 @@ type_qualifier: | precision_qualifier type_qualifier { if ($2.precision != ast_precision_none) - _mesa_glsl_error(&@1, state, "Duplicate precision qualifier.\n"); + _mesa_glsl_error(&@1, state, "duplicate precision qualifier"); if (!state->ARB_shading_language_420pack_enable && $2.flags.i != 0) - _mesa_glsl_error(&@1, state, "Precision qualifiers must come last.\n"); + _mesa_glsl_error(&@1, state, "precision qualifiers must come last"); $$ = $2; $$.precision = $1; @@ -1476,7 +1638,12 @@ auxiliary_storage_qualifier: memset(& $$, 0, sizeof($$)); $$.flags.q.centroid = 1; } - /* TODO: "sample" and "patch" also go here someday. */ + | SAMPLE + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.sample = 1; + } + /* TODO: "patch" also goes here someday. */ storage_qualifier: CONST_TOK @@ -1509,21 +1676,81 @@ storage_qualifier: memset(& $$, 0, sizeof($$)); $$.flags.q.uniform = 1; } + | COHERENT + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.coherent = 1; + } + | VOLATILE + { + memset(& $$, 0, sizeof($$)); + $$.flags.q._volatile = 1; + } + | RESTRICT + { + STATIC_ASSERT(sizeof($$.flags.q) <= sizeof($$.flags.i)); + memset(& $$, 0, sizeof($$)); + $$.flags.q.restrict_flag = 1; + } + | READONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.read_only = 1; + } + | WRITEONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.write_only = 1; + } ; -type_specifier: - type_specifier_nonarray - | type_specifier_nonarray '[' ']' +array_specifier: + '[' ']' + { + void *ctx = state; + $$ = new(ctx) ast_array_specifier(@1); + $$->set_location_range(@1, @2); + } + | '[' constant_expression ']' + { + void *ctx = state; + $$ = new(ctx) ast_array_specifier(@1, $2); + $$->set_location_range(@1, @3); + } + | array_specifier '[' ']' { $$ = $1; - $$->is_array = true; - $$->array_size = NULL; + + if (!state->ARB_arrays_of_arrays_enable) { + _mesa_glsl_error(& @1, state, + "GL_ARB_arrays_of_arrays " + "required for defining arrays of arrays"); + } else { + _mesa_glsl_error(& @1, state, + "only the outermost array dimension can " + "be unsized"); + } } - | type_specifier_nonarray '[' constant_expression ']' + | array_specifier '[' constant_expression ']' { $$ = $1; - $$->is_array = true; - $$->array_size = $3; + + if (!state->ARB_arrays_of_arrays_enable) { + _mesa_glsl_error(& @1, state, + "GL_ARB_arrays_of_arrays " + "required for defining arrays of arrays"); + } + + $$->add_dimension($3); + } + ; + +type_specifier: + type_specifier_nonarray + | type_specifier_nonarray array_specifier + { + $$ = $1; + $$->array_specifier = $2; } ; @@ -1532,19 +1759,19 @@ type_specifier_nonarray: { void *ctx = state; $$ = new(ctx) ast_type_specifier($1); - $$->set_location(yylloc); + $$->set_location(@1); } | struct_specifier { void *ctx = state; $$ = new(ctx) ast_type_specifier($1); - $$->set_location(yylloc); + $$->set_location(@1); } | TYPE_IDENTIFIER { void *ctx = state; $$ = new(ctx) ast_type_specifier($1); - $$->set_location(yylloc); + $$->set_location(@1); } ; @@ -1616,6 +1843,40 @@ basic_type_specifier_nonarray: | SAMPLER2DMSARRAY { $$ = "sampler2DMSArray"; } | ISAMPLER2DMSARRAY { $$ = "isampler2DMSArray"; } | USAMPLER2DMSARRAY { $$ = "usampler2DMSArray"; } + | IMAGE1D { $$ = "image1D"; } + | IMAGE2D { $$ = "image2D"; } + | IMAGE3D { $$ = "image3D"; } + | IMAGE2DRECT { $$ = "image2DRect"; } + | IMAGECUBE { $$ = "imageCube"; } + | IMAGEBUFFER { $$ = "imageBuffer"; } + | IMAGE1DARRAY { $$ = "image1DArray"; } + | IMAGE2DARRAY { $$ = "image2DArray"; } + | IMAGECUBEARRAY { $$ = "imageCubeArray"; } + | IMAGE2DMS { $$ = "image2DMS"; } + | IMAGE2DMSARRAY { $$ = "image2DMSArray"; } + | IIMAGE1D { $$ = "iimage1D"; } + | IIMAGE2D { $$ = "iimage2D"; } + | IIMAGE3D { $$ = "iimage3D"; } + | IIMAGE2DRECT { $$ = "iimage2DRect"; } + | IIMAGECUBE { $$ = "iimageCube"; } + | IIMAGEBUFFER { $$ = "iimageBuffer"; } + | IIMAGE1DARRAY { $$ = "iimage1DArray"; } + | IIMAGE2DARRAY { $$ = "iimage2DArray"; } + | IIMAGECUBEARRAY { $$ = "iimageCubeArray"; } + | IIMAGE2DMS { $$ = "iimage2DMS"; } + | IIMAGE2DMSARRAY { $$ = "iimage2DMSArray"; } + | UIMAGE1D { $$ = "uimage1D"; } + | UIMAGE2D { $$ = "uimage2D"; } + | UIMAGE3D { $$ = "uimage3D"; } + | UIMAGE2DRECT { $$ = "uimage2DRect"; } + | UIMAGECUBE { $$ = "uimageCube"; } + | UIMAGEBUFFER { $$ = "uimageBuffer"; } + | UIMAGE1DARRAY { $$ = "uimage1DArray"; } + | UIMAGE2DARRAY { $$ = "uimage2DArray"; } + | UIMAGECUBEARRAY { $$ = "uimageCubeArray"; } + | UIMAGE2DMS { $$ = "uimage2DMS"; } + | UIMAGE2DMSARRAY { $$ = "uimage2DMSArray"; } + | ATOMIC_UINT { $$ = "atomic_uint"; } ; precision_qualifier: @@ -1641,15 +1902,14 @@ struct_specifier: { void *ctx = state; $$ = new(ctx) ast_struct_specifier($2, $4); - $$->set_location(yylloc); + $$->set_location_range(@2, @5); state->symbols->add_type($2, glsl_type::void_type); - state->symbols->add_type_ast($2, new(ctx) ast_type_specifier($$)); } | STRUCT '{' struct_declaration_list '}' { void *ctx = state; $$ = new(ctx) ast_struct_specifier(NULL, $3); - $$->set_location(yylloc); + $$->set_location_range(@2, @4); } ; @@ -1671,7 +1931,7 @@ struct_declaration: { void *ctx = state; ast_fully_specified_type *const type = $1; - type->set_location(yylloc); + type->set_location(@1); if (type->qualifier.flags.i != 0) _mesa_glsl_error(&@1, state, @@ -1679,7 +1939,7 @@ struct_declaration: "structure members"); $$ = new(ctx) ast_declarator_list(type); - $$->set_location(yylloc); + $$->set_location(@2); $$->declarations.push_degenerate_list_at_head(& $2->link); } @@ -1702,14 +1962,14 @@ struct_declarator: any_identifier { void *ctx = state; - $$ = new(ctx) ast_declaration($1, false, NULL, NULL); - $$->set_location(yylloc); + $$ = new(ctx) ast_declaration($1, NULL, NULL); + $$->set_location(@1); } - | any_identifier '[' constant_expression ']' + | any_identifier array_specifier { void *ctx = state; - $$ = new(ctx) ast_declaration($1, true, $3, NULL); - $$->set_location(yylloc); + $$ = new(ctx) ast_declaration($1, $2, NULL); + $$->set_location_range(@1, @2); } ; @@ -1730,7 +1990,7 @@ initializer_list: { void *ctx = state; $$ = new(ctx) ast_aggregate_initializer(); - $$->set_location(yylloc); + $$->set_location(@1); $$->expressions.push_tail(& $1->link); } | initializer_list ',' initializer @@ -1764,7 +2024,7 @@ compound_statement: { void *ctx = state; $$ = new(ctx) ast_compound_statement(true, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } | '{' { @@ -1774,7 +2034,7 @@ compound_statement: { void *ctx = state; $$ = new(ctx) ast_compound_statement(true, $3); - $$->set_location(yylloc); + $$->set_location_range(@1, @4); state->symbols->pop_scope(); } ; @@ -1789,13 +2049,13 @@ compound_statement_no_new_scope: { void *ctx = state; $$ = new(ctx) ast_compound_statement(false, NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } | '{' statement_list '}' { void *ctx = state; $$ = new(ctx) ast_compound_statement(false, $2); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -1803,7 +2063,7 @@ statement_list: statement { if ($1 == NULL) { - _mesa_glsl_error(& @1, state, "<nil> statement\n"); + _mesa_glsl_error(& @1, state, "<nil> statement"); assert($1 != NULL); } @@ -1813,7 +2073,7 @@ statement_list: | statement_list statement { if ($2 == NULL) { - _mesa_glsl_error(& @2, state, "<nil> statement\n"); + _mesa_glsl_error(& @2, state, "<nil> statement"); assert($2 != NULL); } $$ = $1; @@ -1826,13 +2086,13 @@ expression_statement: { void *ctx = state; $$ = new(ctx) ast_expression_statement(NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | expression ';' { void *ctx = state; $$ = new(ctx) ast_expression_statement($1); - $$->set_location(yylloc); + $$->set_location(@1); } ; @@ -1841,7 +2101,7 @@ selection_statement: { $$ = new(state) ast_selection_statement($3, $5.then_statement, $5.else_statement); - $$->set_location(yylloc); + $$->set_location_range(@1, @5); } ; @@ -1866,10 +2126,10 @@ condition: | fully_specified_type any_identifier '=' initializer { void *ctx = state; - ast_declaration *decl = new(ctx) ast_declaration($2, false, NULL, $4); + ast_declaration *decl = new(ctx) ast_declaration($2, NULL, $4); ast_declarator_list *declarator = new(ctx) ast_declarator_list($1); - decl->set_location(yylloc); - declarator->set_location(yylloc); + decl->set_location_range(@2, @4); + declarator->set_location(@1); declarator->declarations.push_tail(&decl->link); $$ = declarator; @@ -1884,7 +2144,7 @@ switch_statement: SWITCH '(' expression ')' switch_body { $$ = new(state) ast_switch_statement($3, $5); - $$->set_location(yylloc); + $$->set_location_range(@1, @5); } ; @@ -1892,12 +2152,12 @@ switch_body: '{' '}' { $$ = new(state) ast_switch_body(NULL); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } | '{' case_statement_list '}' { $$ = new(state) ast_switch_body($2); - $$->set_location(yylloc); + $$->set_location_range(@1, @3); } ; @@ -1905,12 +2165,12 @@ case_label: CASE expression ':' { $$ = new(state) ast_case_label($2); - $$->set_location(yylloc); + $$->set_location(@2); } | DEFAULT ':' { $$ = new(state) ast_case_label(NULL); - $$->set_location(yylloc); + $$->set_location(@2); } ; @@ -1921,7 +2181,7 @@ case_label_list: labels->labels.push_tail(& $1->link); $$ = labels; - $$->set_location(yylloc); + $$->set_location(@1); } | case_label_list case_label { @@ -1934,7 +2194,7 @@ case_statement: case_label_list statement { ast_case_statement *stmts = new(state) ast_case_statement($1); - stmts->set_location(yylloc); + stmts->set_location(@2); stmts->stmts.push_tail(& $2->link); $$ = stmts; @@ -1950,7 +2210,7 @@ case_statement_list: case_statement { ast_case_statement_list *cases= new(state) ast_case_statement_list(); - cases->set_location(yylloc); + cases->set_location(@1); cases->cases.push_tail(& $1->link); $$ = cases; @@ -1968,21 +2228,21 @@ iteration_statement: void *ctx = state; $$ = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while, NULL, $3, NULL, $5); - $$->set_location(yylloc); + $$->set_location_range(@1, @4); } | DO statement WHILE '(' expression ')' ';' { void *ctx = state; $$ = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while, NULL, $5, NULL, $2); - $$->set_location(yylloc); + $$->set_location_range(@1, @6); } | FOR '(' for_init_statement for_rest_statement ')' statement_no_new_scope { void *ctx = state; $$ = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for, $3, $4.cond, $4.rest, $6); - $$->set_location(yylloc); + $$->set_location_range(@1, @6); } ; @@ -2018,31 +2278,31 @@ jump_statement: { void *ctx = state; $$ = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | BREAK ';' { void *ctx = state; $$ = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | RETURN ';' { void *ctx = state; $$ = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } | RETURN expression ';' { void *ctx = state; $$ = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, $2); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); } | DISCARD ';' // Fragment shader only. { void *ctx = state; $$ = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL); - $$->set_location(yylloc); + $$->set_location(@1); } ; @@ -2050,7 +2310,7 @@ external_declaration: function_definition { $$ = $1; } | declaration { $$ = $1; } | pragma_statement { $$ = NULL; } - | layout_defaults { $$ = NULL; } + | layout_defaults { $$ = $1; } ; function_definition: @@ -2058,7 +2318,7 @@ function_definition: { void *ctx = state; $$ = new(ctx) ast_function_definition(); - $$->set_location(yylloc); + $$->set_location_range(@1, @2); $$->prototype = $1; $$->body = $2; @@ -2091,20 +2351,20 @@ basic_interface_block: block->declarations.push_degenerate_list_at_head(& $4->link); if ($1.flags.q.uniform) { - if (!state->ARB_uniform_buffer_object_enable) { + if (!state->has_uniform_buffer_objects()) { _mesa_glsl_error(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); + "required for defining uniform blocks"); } else if (state->ARB_uniform_buffer_object_warn) { _mesa_glsl_warning(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); + "required for defining uniform blocks"); } } else { if (state->es_shader || state->language_version < 150) { _mesa_glsl_error(& @1, state, "#version 150 required for using " - "interface blocks.\n"); + "interface blocks"); } } @@ -2112,14 +2372,14 @@ basic_interface_block: * "It is illegal to have an input block in a vertex shader * or an output block in a fragment shader" */ - if ((state->target == vertex_shader) && $1.flags.q.in) { + if ((state->stage == MESA_SHADER_VERTEX) && $1.flags.q.in) { _mesa_glsl_error(& @1, state, "`in' interface block is not allowed for " - "a vertex shader\n"); - } else if ((state->target == fragment_shader) && $1.flags.q.out) { + "a vertex shader"); + } else if ((state->stage == MESA_SHADER_FRAGMENT) && $1.flags.q.out) { _mesa_glsl_error(& @1, state, "`out' interface block is not allowed for " - "a fragment shader\n"); + "a fragment shader"); } /* Since block arrays require names, and both features are added in @@ -2131,7 +2391,7 @@ basic_interface_block: "an instance name are not allowed"); } - unsigned interface_type_mask; + uint64_t interface_type_mask; struct ast_type_qualifier temp_type_qualifier; /* Get a bitmask containing only the in/out/uniform flags, allowing us @@ -2147,7 +2407,7 @@ basic_interface_block: * production rule guarantees that only one bit will be set (and * it will be in/out/uniform). */ - unsigned block_interface_qualifier = $1.flags.i; + uint64_t block_interface_qualifier = $1.flags.i; block->layout.flags.i |= block_interface_qualifier; @@ -2171,7 +2431,7 @@ basic_interface_block: _mesa_glsl_error(& @1, state, "uniform/in/out qualifier on " "interface block member does not match " - "the interface block\n"); + "the interface block"); } } @@ -2207,19 +2467,13 @@ instance_name_opt: { $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, $1, NULL); + $$->set_location(@1); } - | NEW_IDENTIFIER '[' constant_expression ']' - { - $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, - $1, $3); - } - | NEW_IDENTIFIER '[' ']' + | NEW_IDENTIFIER array_specifier { - _mesa_glsl_error(& @1, state, - "instance block arrays must be explicitly sized\n"); - $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, - $1, NULL); + $1, $2); + $$->set_location_range(@1, @2); } ; @@ -2241,20 +2495,20 @@ member_declaration: { void *ctx = state; ast_fully_specified_type *type = $1; - type->set_location(yylloc); + type->set_location(@1); if (type->qualifier.flags.q.attribute) { _mesa_glsl_error(& @1, state, "keyword 'attribute' cannot be used with " - "interface block member\n"); + "interface block member"); } else if (type->qualifier.flags.q.varying) { _mesa_glsl_error(& @1, state, "keyword 'varying' cannot be used with " - "interface block member\n"); + "interface block member"); } $$ = new(ctx) ast_declarator_list(type); - $$->set_location(yylloc); + $$->set_location(@2); $$->declarations.push_degenerate_list_at_head(& $2->link); } @@ -2266,4 +2520,39 @@ layout_defaults: if (!state->default_uniform_qualifier->merge_qualifier(& @1, state, $1)) { YYERROR; } + $$ = NULL; + } + + | layout_qualifier IN_TOK ';' + { + $$ = NULL; + if (!state->in_qualifier->merge_in_qualifier(& @1, state, $1, $$)) { + YYERROR; + } + } + + | layout_qualifier OUT_TOK ';' + { + if (state->stage != MESA_SHADER_GEOMETRY) { + _mesa_glsl_error(& @1, state, + "out layout qualifiers only valid in " + "geometry shaders"); + } else { + if ($1.flags.q.prim_type) { + /* Make sure this is a valid output primitive type. */ + switch ($1.prim_type) { + case GL_POINTS: + case GL_LINE_STRIP: + case GL_TRIANGLE_STRIP: + break; + default: + _mesa_glsl_error(&@1, state, "invalid geometry shader output " + "primitive type"); + break; + } + } + if (!state->out_qualifier->merge_qualifier(& @1, state, $1)) + YYERROR; + } + $$ = NULL; } diff --git a/dist/Mesa/src/glsl/glsl_parser_extras.cpp b/dist/Mesa/src/glsl/glsl_parser_extras.cpp index e97461d6c..d3339e779 100644 --- a/dist/Mesa/src/glsl/glsl_parser_extras.cpp +++ b/dist/Mesa/src/glsl/glsl_parser_extras.cpp @@ -49,30 +49,30 @@ glsl_compute_version_string(void *mem_ctx, bool is_es, unsigned version) } -static unsigned known_desktop_glsl_versions[] = - { 110, 120, 130, 140, 150, 330, 400, 410, 420, 430 }; +static const unsigned known_desktop_glsl_versions[] = + { 110, 120, 130, 140, 150, 330, 400, 410, 420, 430, 440 }; _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, - GLenum target, void *mem_ctx) - : ctx(_ctx) + gl_shader_stage stage, + void *mem_ctx) + : ctx(_ctx), cs_input_local_size_specified(false), cs_input_local_size(), + switch_state() { - switch (target) { - case GL_VERTEX_SHADER: this->target = vertex_shader; break; - case GL_FRAGMENT_SHADER: this->target = fragment_shader; break; - case GL_GEOMETRY_SHADER: this->target = geometry_shader; break; - } + assert(stage < MESA_SHADER_STAGES); + this->stage = stage; this->scanner = NULL; this->translation_unit.make_empty(); this->symbols = new(mem_ctx) glsl_symbol_table; + this->info_log = ralloc_strdup(mem_ctx, ""); this->error = false; this->loop_nesting_ast = NULL; - this->switch_state.switch_nesting_ast = NULL; this->struct_specifier_depth = 0; - this->num_builtins_to_link = 0; + + this->uses_builtin_functions = false; /* Set default language version and extensions */ this->language_version = ctx->Const.ForceGLSLVersion ? @@ -93,18 +93,54 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->Const.MaxClipPlanes = ctx->Const.MaxClipPlanes; this->Const.MaxTextureUnits = ctx->Const.MaxTextureUnits; this->Const.MaxTextureCoords = ctx->Const.MaxTextureCoordUnits; - this->Const.MaxVertexAttribs = ctx->Const.VertexProgram.MaxAttribs; - this->Const.MaxVertexUniformComponents = ctx->Const.VertexProgram.MaxUniformComponents; - this->Const.MaxVaryingFloats = ctx->Const.MaxVarying * 4; - this->Const.MaxVertexTextureImageUnits = ctx->Const.VertexProgram.MaxTextureImageUnits; + this->Const.MaxVertexAttribs = ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs; + this->Const.MaxVertexUniformComponents = ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents; + this->Const.MaxVertexTextureImageUnits = ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits; this->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxCombinedTextureImageUnits; - this->Const.MaxTextureImageUnits = ctx->Const.FragmentProgram.MaxTextureImageUnits; - this->Const.MaxFragmentUniformComponents = ctx->Const.FragmentProgram.MaxUniformComponents; + this->Const.MaxTextureImageUnits = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits; + this->Const.MaxFragmentUniformComponents = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents; this->Const.MinProgramTexelOffset = ctx->Const.MinProgramTexelOffset; this->Const.MaxProgramTexelOffset = ctx->Const.MaxProgramTexelOffset; this->Const.MaxDrawBuffers = ctx->Const.MaxDrawBuffers; + /* 1.50 constants */ + this->Const.MaxVertexOutputComponents = ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents; + this->Const.MaxGeometryInputComponents = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxInputComponents; + this->Const.MaxGeometryOutputComponents = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxOutputComponents; + this->Const.MaxFragmentInputComponents = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents; + this->Const.MaxGeometryTextureImageUnits = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits; + this->Const.MaxGeometryOutputVertices = ctx->Const.MaxGeometryOutputVertices; + this->Const.MaxGeometryTotalOutputComponents = ctx->Const.MaxGeometryTotalOutputComponents; + this->Const.MaxGeometryUniformComponents = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxUniformComponents; + + this->Const.MaxVertexAtomicCounters = ctx->Const.Program[MESA_SHADER_VERTEX].MaxAtomicCounters; + this->Const.MaxGeometryAtomicCounters = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxAtomicCounters; + this->Const.MaxFragmentAtomicCounters = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxAtomicCounters; + this->Const.MaxCombinedAtomicCounters = ctx->Const.MaxCombinedAtomicCounters; + this->Const.MaxAtomicBufferBindings = ctx->Const.MaxAtomicBufferBindings; + + /* Compute shader constants */ + for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupCount); i++) + this->Const.MaxComputeWorkGroupCount[i] = ctx->Const.MaxComputeWorkGroupCount[i]; + for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupSize); i++) + this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i]; + + this->Const.MaxImageUnits = ctx->Const.MaxImageUnits; + this->Const.MaxCombinedImageUnitsAndFragmentOutputs = ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs; + this->Const.MaxImageSamples = ctx->Const.MaxImageSamples; + this->Const.MaxVertexImageUniforms = ctx->Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms; + this->Const.MaxGeometryImageUniforms = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxImageUniforms; + this->Const.MaxFragmentImageUniforms = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms; + this->Const.MaxCombinedImageUniforms = ctx->Const.MaxCombinedImageUniforms; + + this->current_function = NULL; + this->toplevel_ir = NULL; + this->found_return = false; + this->all_invariant = false; + this->user_structures = NULL; + this->num_user_structures = 0; + /* Populate the list of supported GLSL versions */ /* FINISHME: Once the OpenGL 3.0 'forward compatible' context or * the OpenGL 3.2 Core context is supported, this logic will need @@ -160,6 +196,20 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->default_uniform_qualifier = new(this) ast_type_qualifier(); this->default_uniform_qualifier->flags.q.shared = 1; this->default_uniform_qualifier->flags.q.column_major = 1; + + this->fs_uses_gl_fragcoord = false; + this->fs_redeclares_gl_fragcoord = false; + this->fs_origin_upper_left = false; + this->fs_pixel_center_integer = false; + this->fs_redeclares_gl_fragcoord_with_no_layout_qualifiers = false; + + this->gs_input_prim_type_specified = false; + this->gs_input_size = 0; + this->in_qualifier = new(this) ast_type_qualifier(); + this->out_qualifier = new(this) ast_type_qualifier(); + this->early_fragment_tests = false; + memset(this->atomic_counter_offsets, 0, + sizeof(this->atomic_counter_offsets)); } /** @@ -206,7 +256,7 @@ _mesa_glsl_parse_state::check_version(unsigned required_glsl_version, requirement_string = ralloc_asprintf(this, " (%s required)", glsl_es_version_string); } - _mesa_glsl_error(locp, this, "%s in %s%s.", + _mesa_glsl_error(locp, this, "%s in %s%s", problem, this->get_version_string(), requirement_string); @@ -236,15 +286,15 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, */ } else if (strcmp(ident, "compatibility") == 0) { _mesa_glsl_error(locp, this, - "The compatibility profile is not supported.\n"); + "the compatibility profile is not supported"); } else { _mesa_glsl_error(locp, this, "\"%s\" is not a valid shading language profile; " - "if present, it must be \"core\".\n", ident); + "if present, it must be \"core\"", ident); } } else { _mesa_glsl_error(locp, this, - "Illegal text following version number\n"); + "illegal text following version number"); } } @@ -253,12 +303,16 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, if (es_token_present) { _mesa_glsl_error(locp, this, "GLSL 1.00 ES should be selected using " - "`#version 100'\n"); + "`#version 100'"); } else { this->es_shader = true; } } + if (this->es_shader) { + this->ARB_texture_rectangle_enable = false; + } + this->language_version = version; bool supported = false; @@ -272,7 +326,7 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, if (!supported) { _mesa_glsl_error(locp, this, "%s is not supported. " - "Supported versions are: %s\n", + "Supported versions are: %s", this->get_version_string(), this->supported_version_string); @@ -295,58 +349,20 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, break; } } - - if (this->language_version >= 140) { - this->ARB_uniform_buffer_object_enable = true; - } - - if (this->language_version == 300 && this->es_shader) { - this->ARB_explicit_attrib_location_enable = true; - } -} - -extern "C" { - -/** - * The most common use of _mesa_glsl_shader_target_name(), which is - * shared with C code in Mesa core to translate a GLenum to a short - * shader stage name in debug printouts. - * - * It recognizes the PROGRAM variants of the names so it can be used - * with a struct gl_program->Target, not just a struct - * gl_shader->Type. - */ -const char * -_mesa_glsl_shader_target_name(GLenum type) -{ - switch (type) { - case GL_VERTEX_SHADER: - case GL_VERTEX_PROGRAM_ARB: - return "vertex"; - case GL_FRAGMENT_SHADER: - case GL_FRAGMENT_PROGRAM_ARB: - return "fragment"; - case GL_GEOMETRY_SHADER: - return "geometry"; - default: - assert(!"Should not get here."); - return "unknown"; - } } -} /* extern "C" */ /** - * Overloaded C++ variant usable within the compiler for translating - * our internal enum into short stage names. + * Translate a gl_shader_stage to a short shader stage name for debug + * printouts and error messages. */ const char * -_mesa_glsl_shader_target_name(enum _mesa_glsl_parser_targets target) +_mesa_shader_stage_to_string(unsigned stage) { - switch (target) { - case vertex_shader: return "vertex"; - case fragment_shader: return "fragment"; - case geometry_shader: return "geometry"; + switch (stage) { + case MESA_SHADER_VERTEX: return "vertex"; + case MESA_SHADER_FRAGMENT: return "fragment"; + case MESA_SHADER_GEOMETRY: return "geometry"; } assert(!"Should not get here."); @@ -432,15 +448,6 @@ struct _mesa_glsl_extension { */ const char *name; - /** True if this extension is available to vertex shaders */ - bool avail_in_VS; - - /** True if this extension is available to geometry shaders */ - bool avail_in_GS; - - /** True if this extension is available to fragment shaders */ - bool avail_in_FS; - /** True if this extension is available to desktop GL shaders */ bool avail_in_GL; @@ -487,9 +494,9 @@ struct _mesa_glsl_extension { void set_flags(_mesa_glsl_parse_state *state, ext_behavior behavior) const; }; -#define EXT(NAME, VS, GS, FS, GL, ES, SUPPORTED_FLAG) \ - { "GL_" #NAME, VS, GS, FS, GL, ES, &gl_extensions::SUPPORTED_FLAG, \ - &_mesa_glsl_parse_state::NAME##_enable, \ +#define EXT(NAME, GL, ES, SUPPORTED_FLAG) \ + { "GL_" #NAME, GL, ES, &gl_extensions::SUPPORTED_FLAG, \ + &_mesa_glsl_parse_state::NAME##_enable, \ &_mesa_glsl_parse_state::NAME##_warn } /** @@ -497,31 +504,55 @@ struct _mesa_glsl_extension { * and the conditions under which they are supported. */ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { - /* target availability API availability */ - /* name VS GS FS GL ES supported flag */ - EXT(ARB_conservative_depth, false, false, true, true, false, ARB_conservative_depth), - EXT(ARB_draw_buffers, false, false, true, true, false, dummy_true), - EXT(ARB_draw_instanced, true, false, false, true, false, ARB_draw_instanced), - EXT(ARB_explicit_attrib_location, true, false, true, true, false, ARB_explicit_attrib_location), - EXT(ARB_fragment_coord_conventions, true, false, true, true, false, ARB_fragment_coord_conventions), - EXT(ARB_texture_rectangle, true, false, true, true, false, dummy_true), - EXT(EXT_texture_array, true, false, true, true, false, EXT_texture_array), - EXT(ARB_shader_texture_lod, true, false, true, true, false, ARB_shader_texture_lod), - EXT(ARB_shader_stencil_export, false, false, true, true, false, ARB_shader_stencil_export), - EXT(AMD_conservative_depth, false, false, true, true, false, ARB_conservative_depth), - EXT(AMD_shader_stencil_export, false, false, true, true, false, ARB_shader_stencil_export), - EXT(OES_texture_3D, true, false, true, false, true, EXT_texture3D), - EXT(OES_EGL_image_external, true, false, true, false, true, OES_EGL_image_external), - EXT(ARB_shader_bit_encoding, true, true, true, true, false, ARB_shader_bit_encoding), - EXT(ARB_uniform_buffer_object, true, false, true, true, false, ARB_uniform_buffer_object), - EXT(OES_standard_derivatives, false, false, true, false, true, OES_standard_derivatives), - EXT(ARB_texture_cube_map_array, true, false, true, true, false, ARB_texture_cube_map_array), - EXT(ARB_shading_language_packing, true, false, true, true, false, ARB_shading_language_packing), - EXT(ARB_shading_language_420pack, true, true, true, true, false, ARB_shading_language_420pack), - EXT(ARB_texture_multisample, true, false, true, true, false, ARB_texture_multisample), - EXT(ARB_texture_query_lod, false, false, true, true, false, ARB_texture_query_lod), - EXT(ARB_gpu_shader5, true, true, true, true, false, ARB_gpu_shader5), - EXT(AMD_vertex_shader_layer, true, false, false, true, false, AMD_vertex_shader_layer), + /* API availability */ + /* name GL ES supported flag */ + + /* ARB extensions go here, sorted alphabetically. + */ + EXT(ARB_arrays_of_arrays, true, false, ARB_arrays_of_arrays), + EXT(ARB_compute_shader, true, false, ARB_compute_shader), + EXT(ARB_conservative_depth, true, false, ARB_conservative_depth), + EXT(ARB_draw_buffers, true, false, dummy_true), + EXT(ARB_draw_instanced, true, false, ARB_draw_instanced), + EXT(ARB_explicit_attrib_location, true, false, ARB_explicit_attrib_location), + EXT(ARB_fragment_coord_conventions, true, false, ARB_fragment_coord_conventions), + EXT(ARB_gpu_shader5, true, false, ARB_gpu_shader5), + EXT(ARB_sample_shading, true, false, ARB_sample_shading), + EXT(ARB_separate_shader_objects, true, false, dummy_true), + EXT(ARB_shader_atomic_counters, true, false, ARB_shader_atomic_counters), + EXT(ARB_shader_bit_encoding, true, false, ARB_shader_bit_encoding), + EXT(ARB_shader_image_load_store, true, false, ARB_shader_image_load_store), + EXT(ARB_shader_stencil_export, true, false, ARB_shader_stencil_export), + EXT(ARB_shader_texture_lod, true, false, ARB_shader_texture_lod), + EXT(ARB_shading_language_420pack, true, false, ARB_shading_language_420pack), + EXT(ARB_shading_language_packing, true, false, ARB_shading_language_packing), + EXT(ARB_texture_cube_map_array, true, false, ARB_texture_cube_map_array), + EXT(ARB_texture_gather, true, false, ARB_texture_gather), + EXT(ARB_texture_multisample, true, false, ARB_texture_multisample), + EXT(ARB_texture_query_levels, true, false, ARB_texture_query_levels), + EXT(ARB_texture_query_lod, true, false, ARB_texture_query_lod), + EXT(ARB_texture_rectangle, true, false, dummy_true), + EXT(ARB_uniform_buffer_object, true, false, ARB_uniform_buffer_object), + EXT(ARB_viewport_array, true, false, ARB_viewport_array), + + /* KHR extensions go here, sorted alphabetically. + */ + + /* OES extensions go here, sorted alphabetically. + */ + EXT(OES_EGL_image_external, false, true, OES_EGL_image_external), + EXT(OES_standard_derivatives, false, true, OES_standard_derivatives), + EXT(OES_texture_3D, false, true, EXT_texture3D), + + /* All other extensions go here, sorted alphabetically. + */ + EXT(AMD_conservative_depth, true, false, ARB_conservative_depth), + EXT(AMD_shader_stencil_export, true, false, ARB_shader_stencil_export), + EXT(AMD_shader_trinary_minmax, true, false, dummy_true), + EXT(AMD_vertex_shader_layer, true, false, AMD_vertex_shader_layer), + EXT(EXT_separate_shader_objects, false, true, dummy_true), + EXT(EXT_shader_integer_mix, true, true, EXT_shader_integer_mix), + EXT(EXT_texture_array, true, false, EXT_texture_array), }; #undef EXT @@ -534,30 +565,6 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { bool _mesa_glsl_extension::compatible_with_state(const _mesa_glsl_parse_state * state) const { - /* Check that this extension matches the type of shader we are - * compiling to. - */ - switch (state->target) { - case vertex_shader: - if (!this->avail_in_VS) { - return false; - } - break; - case geometry_shader: - if (!this->avail_in_GS) { - return false; - } - break; - case fragment_shader: - if (!this->avail_in_FS) { - return false; - } - break; - default: - assert (!"Unrecognized shader target"); - return false; - } - /* Check that this extension matches whether we are compiling * for desktop GL or GLES. */ @@ -623,14 +630,14 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, behavior = extension_disable; } else { _mesa_glsl_error(behavior_locp, state, - "Unknown extension behavior `%s'", + "unknown extension behavior `%s'", behavior_string); return false; } if (strcmp(name, "all") == 0) { if ((behavior == extension_enable) || (behavior == extension_require)) { - _mesa_glsl_error(name_locp, state, "Cannot %s all extensions", + _mesa_glsl_error(name_locp, state, "cannot %s all extensions", (behavior == extension_enable) ? "enable" : "require"); return false; @@ -649,15 +656,15 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, if (extension && extension->compatible_with_state(state)) { extension->set_flags(state, behavior); } else { - static const char *const fmt = "extension `%s' unsupported in %s shader"; + static const char fmt[] = "extension `%s' unsupported in %s shader"; if (behavior == extension_require) { _mesa_glsl_error(name_locp, state, fmt, - name, _mesa_glsl_shader_target_name(state->target)); + name, _mesa_shader_stage_to_string(state->stage)); return false; } else { _mesa_glsl_warning(name_locp, state, fmt, - name, _mesa_glsl_shader_target_name(state->target)); + name, _mesa_shader_stage_to_string(state->stage)); } } } @@ -667,25 +674,6 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, /** - * Returns the name of the type of a column of a matrix. E.g., - * - * "mat3" -> "vec3" - * "mat4x2" -> "vec2" - */ -static const char * -_mesa_ast_get_matrix_column_type_name(const char *matrix_type_name) -{ - static const char *vec_name[] = { "vec2", "vec3", "vec4" }; - - /* The number of elements in a row of a matrix is specified by the last - * character of the matrix type name. - */ - long rows = strtol(matrix_type_name + strlen(matrix_type_name) - 1, - NULL, 10); - return vec_name[rows - 2]; -} - -/** * Recurses through <type> and <expr> if <expr> is an aggregate initializer * and sets <expr>'s <constructor_type> field to <type>. Gives later functions * (process_array_constructor, et al) sufficient information to do type @@ -732,37 +720,19 @@ _mesa_ast_get_matrix_column_type_name(const char *matrix_type_name) * doesn't contain sufficient information to determine if the types match. */ void -_mesa_ast_set_aggregate_type(const ast_type_specifier *type, - ast_expression *expr, - _mesa_glsl_parse_state *state) +_mesa_ast_set_aggregate_type(const glsl_type *type, + ast_expression *expr) { - void *ctx = state; ast_aggregate_initializer *ai = (ast_aggregate_initializer *)expr; - ai->constructor_type = (ast_type_specifier *)type; - - bool is_declaration = ai->constructor_type->structure != NULL; - if (!is_declaration) { - /* Look up <type> name in the symbol table to see if it's a struct. */ - const ast_type_specifier *struct_type = - state->symbols->get_type_ast(type->type_name); - ai->constructor_type->structure = - struct_type ? new(ctx) ast_struct_specifier(*struct_type->structure) - : NULL; - } + ai->constructor_type = type; /* If the aggregate is an array, recursively set its elements' types. */ - if (type->is_array) { - /* We want to set the element type which is not an array itself, so make - * a copy of the array type and set its is_array field to false. + if (type->is_array()) { + /* Each array element has the type type->element_type(). * * E.g., if <type> if struct S[2] we want to set each element's type to * struct S. - * - * FINISHME: Update when ARB_array_of_arrays is supported. */ - const ast_type_specifier *non_array_type = - new(ctx) ast_type_specifier(type, false, NULL); - for (exec_node *expr_node = ai->expressions.head; !expr_node->is_tail_sentinel(); expr_node = expr_node->next) { @@ -770,84 +740,33 @@ _mesa_ast_set_aggregate_type(const ast_type_specifier *type, link); if (expr->oper == ast_aggregate) - _mesa_ast_set_aggregate_type(non_array_type, expr, state); + _mesa_ast_set_aggregate_type(type->element_type(), expr); } /* If the aggregate is a struct, recursively set its fields' types. */ - } else if (ai->constructor_type->structure) { - ai->constructor_type->structure->is_declaration = is_declaration; + } else if (type->is_record()) { exec_node *expr_node = ai->expressions.head; - /* Iterate through the struct's fields' declarations. E.g., iterate from - * "float a, b" to "int c" in the struct below. - * - * struct { - * float a, b; - * int c; - * } s; - */ - for (exec_node *decl_list_node = - ai->constructor_type->structure->declarations.head; - !decl_list_node->is_tail_sentinel(); - decl_list_node = decl_list_node->next) { - ast_declarator_list *decl_list = exec_node_data(ast_declarator_list, - decl_list_node, link); - - for (exec_node *decl_node = decl_list->declarations.head; - !decl_node->is_tail_sentinel() && !expr_node->is_tail_sentinel(); - decl_node = decl_node->next, expr_node = expr_node->next) { - ast_declaration *decl = exec_node_data(ast_declaration, decl_node, - link); - ast_expression *expr = exec_node_data(ast_expression, expr_node, - link); - - bool is_array = decl_list->type->specifier->is_array; - ast_expression *array_size = decl_list->type->specifier->array_size; - - /* Recognize variable declarations with the bracketed size attached - * to the type rather than the variable name as arrays. E.g., - * - * float a[2]; - * float[2] b; - * - * are both arrays, but <a>'s array_size is decl->array_size, while - * <b>'s array_size is decl_list->type->specifier->array_size. - */ - if (!is_array) { - /* FINISHME: Update when ARB_array_of_arrays is supported. */ - is_array = decl->is_array; - array_size = decl->array_size; - } - - /* Declaration shadows the <type> parameter. */ - ast_type_specifier *type = - new(ctx) ast_type_specifier(decl_list->type->specifier, - is_array, array_size); + /* Iterate through the struct's fields. */ + for (unsigned i = 0; !expr_node->is_tail_sentinel() && i < type->length; + i++, expr_node = expr_node->next) { + ast_expression *expr = exec_node_data(ast_expression, expr_node, + link); - if (expr->oper == ast_aggregate) - _mesa_ast_set_aggregate_type(type, expr, state); + if (expr->oper == ast_aggregate) { + _mesa_ast_set_aggregate_type(type->fields.structure[i].type, expr); } } - } else { - /* If the aggregate is a matrix, set its columns' types. */ - const char *name; - const glsl_type *const constructor_type = - ai->constructor_type->glsl_type(&name, state); - - if (constructor_type->is_matrix()) { - for (exec_node *expr_node = ai->expressions.head; - !expr_node->is_tail_sentinel(); - expr_node = expr_node->next) { - ast_expression *expr = exec_node_data(ast_expression, expr_node, - link); - - /* Declaration shadows the <type> parameter. */ - ast_type_specifier *type = new(ctx) - ast_type_specifier(_mesa_ast_get_matrix_column_type_name(name)); - - if (expr->oper == ast_aggregate) - _mesa_ast_set_aggregate_type(type, expr, state); - } + /* If the aggregate is a matrix, set its columns' types. */ + } else if (type->is_matrix()) { + for (exec_node *expr_node = ai->expressions.head; + !expr_node->is_tail_sentinel(); + expr_node = expr_node->next) { + ast_expression *expr = exec_node_data(ast_expression, expr_node, + link); + + if (expr->oper == ast_aggregate) + _mesa_ast_set_aggregate_type(type->column_type(), expr); } } } @@ -880,6 +799,8 @@ _mesa_ast_type_qualifier_print(const struct ast_type_qualifier *q) if (q->flags.q.centroid) printf("centroid "); + if (q->flags.q.sample) + printf("sample "); if (q->flags.q.uniform) printf("uniform "); if (q->flags.q.smooth) @@ -901,22 +822,18 @@ ast_node::print(void) const ast_node::ast_node(void) { this->location.source = 0; - this->location.line = 0; - this->location.column = 0; + this->location.first_line = 0; + this->location.first_column = 0; + this->location.last_line = 0; + this->location.last_column = 0; } static void -ast_opt_array_size_print(bool is_array, const ast_expression *array_size) +ast_opt_array_dimensions_print(const ast_array_specifier *array_specifier) { - if (is_array) { - printf("[ "); - - if (array_size) - array_size->print(); - - printf("] "); - } + if (array_specifier) + array_specifier->print(); } @@ -1074,7 +991,8 @@ ast_expression::print(void) const ast_expression::ast_expression(int oper, ast_expression *ex0, ast_expression *ex1, - ast_expression *ex2) + ast_expression *ex2) : + primary_expression() { this->oper = ast_operators(oper); this->subexpressions[0] = ex0; @@ -1117,7 +1035,8 @@ ast_function::print(void) const ast_function::ast_function(void) - : is_definition(false), signature(NULL) + : return_type(NULL), identifier(NULL), is_definition(false), + signature(NULL) { /* empty */ } @@ -1137,7 +1056,7 @@ ast_parameter_declarator::print(void) const type->print(); if (identifier) printf("%s ", identifier); - ast_opt_array_size_print(is_array, array_size); + ast_opt_array_dimensions_print(array_specifier); } @@ -1153,7 +1072,7 @@ void ast_declaration::print(void) const { printf("%s ", identifier); - ast_opt_array_size_print(is_array, array_size); + ast_opt_array_dimensions_print(array_specifier); if (initializer) { printf("= "); @@ -1162,13 +1081,12 @@ ast_declaration::print(void) const } -ast_declaration::ast_declaration(const char *identifier, bool is_array, - ast_expression *array_size, +ast_declaration::ast_declaration(const char *identifier, + ast_array_specifier *array_specifier, ast_expression *initializer) { this->identifier = identifier; - this->is_array = is_array; - this->array_size = array_size; + this->array_specifier = array_specifier; this->initializer = initializer; } @@ -1442,6 +1360,77 @@ ast_struct_specifier::ast_struct_specifier(const char *identifier, is_declaration = true; } +static void +set_shader_inout_layout(struct gl_shader *shader, + struct _mesa_glsl_parse_state *state) +{ + if (shader->Stage != MESA_SHADER_GEOMETRY) { + /* Should have been prevented by the parser. */ + assert(!state->in_qualifier->flags.i); + assert(!state->out_qualifier->flags.i); + } + + if (shader->Stage != MESA_SHADER_COMPUTE) { + /* Should have been prevented by the parser. */ + assert(!state->cs_input_local_size_specified); + } + + if (shader->Stage != MESA_SHADER_FRAGMENT) { + /* Should have been prevented by the parser. */ + assert(!state->fs_uses_gl_fragcoord); + assert(!state->fs_redeclares_gl_fragcoord); + assert(!state->fs_pixel_center_integer); + assert(!state->fs_origin_upper_left); + } + + switch (shader->Stage) { + case MESA_SHADER_GEOMETRY: + shader->Geom.VerticesOut = 0; + if (state->out_qualifier->flags.q.max_vertices) + shader->Geom.VerticesOut = state->out_qualifier->max_vertices; + + if (state->gs_input_prim_type_specified) { + shader->Geom.InputType = state->in_qualifier->prim_type; + } else { + shader->Geom.InputType = PRIM_UNKNOWN; + } + + if (state->out_qualifier->flags.q.prim_type) { + shader->Geom.OutputType = state->out_qualifier->prim_type; + } else { + shader->Geom.OutputType = PRIM_UNKNOWN; + } + + shader->Geom.Invocations = 0; + if (state->in_qualifier->flags.q.invocations) + shader->Geom.Invocations = state->in_qualifier->invocations; + break; + + case MESA_SHADER_COMPUTE: + if (state->cs_input_local_size_specified) { + for (int i = 0; i < 3; i++) + shader->Comp.LocalSize[i] = state->cs_input_local_size[i]; + } else { + for (int i = 0; i < 3; i++) + shader->Comp.LocalSize[i] = 0; + } + break; + + case MESA_SHADER_FRAGMENT: + shader->redeclares_gl_fragcoord = state->fs_redeclares_gl_fragcoord; + shader->uses_gl_fragcoord = state->fs_uses_gl_fragcoord; + shader->pixel_center_integer = state->fs_pixel_center_integer; + shader->origin_upper_left = state->fs_origin_upper_left; + shader->ARB_fragment_coord_conventions_enable = + state->ARB_fragment_coord_conventions_enable; + break; + + default: + /* Nothing to do. */ + break; + } +} + extern "C" { void @@ -1449,7 +1438,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, bool dump_ast, bool dump_hir) { struct _mesa_glsl_parse_state *state = - new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader); + new(shader) _mesa_glsl_parse_state(ctx, shader->Stage, shader); const char *source = shader->Source; state->error = glcpp_preprocess(state, &source, &state->info_log, @@ -1479,19 +1468,20 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, /* Print out the unoptimized IR. */ if (dump_hir) { - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); } } if (!state->error && !shader->ir->is_empty()) { struct gl_shader_compiler_options *options = - &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(shader->Type)]; + &ctx->ShaderCompilerOptions[shader->Stage]; /* Do some optimization at compile time to reduce shader IR size * and reduce later work if the same shader is linked multiple times */ - while (do_common_optimization(shader->ir, false, false, 32, options)) + while (do_common_optimization(shader->ir, false, false, options, + ctx->Const.NativeIntegers)) ; validate_ir_tree(shader->ir); @@ -1504,18 +1494,11 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, shader->CompileStatus = !state->error; shader->InfoLog = state->info_log; shader->Version = state->language_version; - shader->InfoLog = state->info_log; shader->IsES = state->es_shader; + shader->uses_builtin_functions = state->uses_builtin_functions; - memcpy(shader->builtins_to_link, state->builtins_to_link, - sizeof(shader->builtins_to_link[0]) * state->num_builtins_to_link); - shader->num_builtins_to_link = state->num_builtins_to_link; - - if (shader->UniformBlocks) - ralloc_free(shader->UniformBlocks); - shader->NumUniformBlocks = state->num_uniform_blocks; - shader->UniformBlocks = state->uniform_blocks; - ralloc_steal(shader, shader->UniformBlocks); + if (!state->error) + set_shader_inout_layout(shader, state); /* Retain any live IR, but trash the rest. */ reparent_ir(shader->ir, shader->ir); @@ -1545,8 +1528,8 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, bool do_common_optimization(exec_list *ir, bool linked, bool uniform_locations_assigned, - unsigned max_unroll_iterations, - const struct gl_shader_compiler_options *options) + const struct gl_shader_compiler_options *options, + bool native_integers) { GLboolean progress = GL_FALSE; @@ -1562,9 +1545,13 @@ do_common_optimization(exec_list *ir, bool linked, progress = do_copy_propagation(ir) || progress; progress = do_copy_propagation_elements(ir) || progress; - if (options->PreferDP4 && !linked) + if (options->OptimizeForAOS && !linked) progress = opt_flip_matrices(ir) || progress; + if (linked && options->OptimizeForAOS) { + progress = do_vectorize(ir) || progress; + } + if (linked) progress = do_dead_code(ir, uniform_locations_assigned) || progress; else @@ -1577,7 +1564,8 @@ do_common_optimization(exec_list *ir, bool linked, else progress = do_constant_variable_unlinked(ir) || progress; progress = do_constant_folding(ir) || progress; - progress = do_algebraic(ir) || progress; + progress = do_cse(ir) || progress; + progress = do_algebraic(ir, native_integers) || progress; progress = do_lower_jumps(ir) || progress; progress = do_vec_index_to_swizzle(ir) || progress; progress = lower_vector_insert(ir, false) || progress; @@ -1590,7 +1578,7 @@ do_common_optimization(exec_list *ir, bool linked, loop_state *ls = analyze_loop_variables(ir); if (ls->loop_found) { progress = set_loop_controls(ir, ls) || progress; - progress = unroll_loops(ir, ls, max_unroll_iterations) || progress; + progress = unroll_loops(ir, ls, options) || progress; } delete ls; @@ -1622,7 +1610,7 @@ _mesa_destroy_shader_compiler(void) void _mesa_destroy_shader_compiler_caches(void) { - _mesa_glsl_release_functions(); + _mesa_glsl_release_builtin_functions(); } } diff --git a/dist/Mesa/src/glsl/glsl_parser_extras.h b/dist/Mesa/src/glsl/glsl_parser_extras.h index dec13ac7e..0416a9c72 100644 --- a/dist/Mesa/src/glsl/glsl_parser_extras.h +++ b/dist/Mesa/src/glsl/glsl_parser_extras.h @@ -34,12 +34,6 @@ #include <stdlib.h> #include "glsl_symbol_table.h" -enum _mesa_glsl_parser_targets { - vertex_shader, - geometry_shader, - fragment_shader -}; - struct gl_context; struct glsl_switch_state { @@ -69,26 +63,15 @@ typedef struct YYLTYPE { # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 -struct _mesa_glsl_parse_state { - _mesa_glsl_parse_state(struct gl_context *_ctx, GLenum target, - void *mem_ctx); +extern void _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state, + const char *fmt, ...); - /* Callers of this ralloc-based new need not call delete. It's - * easier to just ralloc_free 'ctx' (or any of its ancestors). */ - static void* operator new(size_t size, void *ctx) - { - void *mem = rzalloc_size(ctx, size); - assert(mem != NULL); - return mem; - } +struct _mesa_glsl_parse_state { + _mesa_glsl_parse_state(struct gl_context *_ctx, gl_shader_stage stage, + void *mem_ctx); - /* If the user *does* call delete, that's OK, we will just - * ralloc_free in that case. */ - static void operator delete(void *mem) - { - ralloc_free(mem); - } + DECLARE_RALLOC_CXX_OPERATORS(_mesa_glsl_parse_state); /** * Generate a string representing the GLSL version currently being compiled @@ -113,7 +96,7 @@ struct _mesa_glsl_parse_state { * feature. */ bool is_version(unsigned required_glsl_version, - unsigned required_glsl_es_version) + unsigned required_glsl_es_version) const { unsigned required_version = this->es_shader ? required_glsl_es_version : required_glsl_version; @@ -136,6 +119,54 @@ struct _mesa_glsl_parse_state { return check_version(130, 300, locp, "bit-wise operations are forbidden"); } + bool check_explicit_attrib_location_allowed(YYLTYPE *locp, + const ir_variable *var) + { + if (!this->has_explicit_attrib_location()) { + const char *const requirement = this->es_shader + ? "GLSL ES 300" + : "GL_ARB_explicit_attrib_location extension or GLSL 330"; + + _mesa_glsl_error(locp, this, "%s explicit location requires %s", + mode_string(var), requirement); + return false; + } + + return true; + } + + bool check_separate_shader_objects_allowed(YYLTYPE *locp, + const ir_variable *var) + { + if (!this->has_separate_shader_objects()) { + const char *const requirement = this->es_shader + ? "GL_EXT_separate_shader_objects extension" + : "GL_ARB_separate_shader_objects extension or GLSL 420"; + + _mesa_glsl_error(locp, this, "%s explicit location requires %s", + mode_string(var), requirement); + return false; + } + + return true; + } + + bool has_explicit_attrib_location() const + { + return ARB_explicit_attrib_location_enable || is_version(330, 300); + } + + bool has_uniform_buffer_objects() const + { + return ARB_uniform_buffer_object_enable || is_version(140, 300); + } + + bool has_separate_shader_objects() const + { + return ARB_separate_shader_objects_enable || is_version(410, 0) + || EXT_separate_shader_objects_enable; + } + void process_version_directive(YYLTYPE *locp, int version, const char *ident); @@ -144,10 +175,6 @@ struct _mesa_glsl_parse_state { exec_list translation_unit; glsl_symbol_table *symbols; - unsigned num_uniform_blocks; - unsigned uniform_block_array_size; - struct gl_uniform_block *uniform_blocks; - unsigned num_supported_versions; struct { unsigned ver; @@ -156,7 +183,7 @@ struct _mesa_glsl_parse_state { bool es_shader; unsigned language_version; - enum _mesa_glsl_parser_targets target; + gl_shader_stage stage; /** * Number of nested struct_specifier levels @@ -173,6 +200,48 @@ struct _mesa_glsl_parse_state { struct ast_type_qualifier *default_uniform_qualifier; /** + * Variables to track different cases if a fragment shader redeclares + * built-in variable gl_FragCoord. + * + * Note: These values are computed at ast_to_hir time rather than at parse + * time. + */ + bool fs_redeclares_gl_fragcoord; + bool fs_origin_upper_left; + bool fs_pixel_center_integer; + bool fs_redeclares_gl_fragcoord_with_no_layout_qualifiers; + + /** + * True if a geometry shader input primitive type was specified using a + * layout directive. + * + * Note: this value is computed at ast_to_hir time rather than at parse + * time. + */ + bool gs_input_prim_type_specified; + + /** Input layout qualifiers from GLSL 1.50. (geometry shader controls)*/ + struct ast_type_qualifier *in_qualifier; + + /** + * True if a compute shader input local size was specified using a layout + * directive. + * + * Note: this value is computed at ast_to_hir time rather than at parse + * time. + */ + bool cs_input_local_size_specified; + + /** + * If cs_input_local_size_specified is true, the local size that was + * specified. Otherwise ignored. + */ + unsigned cs_input_local_size[3]; + + /** Output layout qualifiers from GLSL 1.50. (geometry shader controls)*/ + struct ast_type_qualifier *out_qualifier; + + /** * Printable list of GLSL versions supported by the current context * * \note @@ -195,7 +264,6 @@ struct _mesa_glsl_parse_state { unsigned MaxTextureCoords; unsigned MaxVertexAttribs; unsigned MaxVertexUniformComponents; - unsigned MaxVaryingFloats; unsigned MaxVertexTextureImageUnits; unsigned MaxCombinedTextureImageUnits; unsigned MaxTextureImageUnits; @@ -207,6 +275,36 @@ struct _mesa_glsl_parse_state { /* 3.00 ES */ int MinProgramTexelOffset; int MaxProgramTexelOffset; + + /* 1.50 */ + unsigned MaxVertexOutputComponents; + unsigned MaxGeometryInputComponents; + unsigned MaxGeometryOutputComponents; + unsigned MaxFragmentInputComponents; + unsigned MaxGeometryTextureImageUnits; + unsigned MaxGeometryOutputVertices; + unsigned MaxGeometryTotalOutputComponents; + unsigned MaxGeometryUniformComponents; + + /* ARB_shader_atomic_counters */ + unsigned MaxVertexAtomicCounters; + unsigned MaxGeometryAtomicCounters; + unsigned MaxFragmentAtomicCounters; + unsigned MaxCombinedAtomicCounters; + unsigned MaxAtomicBufferBindings; + + /* ARB_compute_shader */ + unsigned MaxComputeWorkGroupCount[3]; + unsigned MaxComputeWorkGroupSize[3]; + + /* ARB_shader_image_load_store */ + unsigned MaxImageUnits; + unsigned MaxCombinedImageUnitsAndFragmentOutputs; + unsigned MaxImageSamples; + unsigned MaxVertexImageUniforms; + unsigned MaxGeometryImageUniforms; + unsigned MaxFragmentImageUniforms; + unsigned MaxCombinedImageUniforms; } Const; /** @@ -251,6 +349,14 @@ struct _mesa_glsl_parse_state { * \name Enable bits for GLSL extensions */ /*@{*/ + /* ARB extensions go here, sorted alphabetically. + */ + bool ARB_arrays_of_arrays_enable; + bool ARB_arrays_of_arrays_warn; + bool ARB_compute_shader_enable; + bool ARB_compute_shader_warn; + bool ARB_conservative_depth_enable; + bool ARB_conservative_depth_warn; bool ARB_draw_buffers_enable; bool ARB_draw_buffers_warn; bool ARB_draw_instanced_enable; @@ -259,52 +365,92 @@ struct _mesa_glsl_parse_state { bool ARB_explicit_attrib_location_warn; bool ARB_fragment_coord_conventions_enable; bool ARB_fragment_coord_conventions_warn; - bool ARB_texture_rectangle_enable; - bool ARB_texture_rectangle_warn; - bool EXT_texture_array_enable; - bool EXT_texture_array_warn; - bool ARB_shader_texture_lod_enable; - bool ARB_shader_texture_lod_warn; - bool ARB_shader_stencil_export_enable; - bool ARB_shader_stencil_export_warn; - bool AMD_conservative_depth_enable; - bool AMD_conservative_depth_warn; - bool ARB_conservative_depth_enable; - bool ARB_conservative_depth_warn; - bool AMD_shader_stencil_export_enable; - bool AMD_shader_stencil_export_warn; - bool OES_texture_3D_enable; - bool OES_texture_3D_warn; - bool OES_EGL_image_external_enable; - bool OES_EGL_image_external_warn; + bool ARB_gpu_shader5_enable; + bool ARB_gpu_shader5_warn; + bool ARB_sample_shading_enable; + bool ARB_sample_shading_warn; + bool ARB_separate_shader_objects_enable; + bool ARB_separate_shader_objects_warn; + bool ARB_shader_atomic_counters_enable; + bool ARB_shader_atomic_counters_warn; bool ARB_shader_bit_encoding_enable; bool ARB_shader_bit_encoding_warn; - bool ARB_uniform_buffer_object_enable; - bool ARB_uniform_buffer_object_warn; - bool OES_standard_derivatives_enable; - bool OES_standard_derivatives_warn; - bool ARB_texture_cube_map_array_enable; - bool ARB_texture_cube_map_array_warn; + bool ARB_shader_image_load_store_enable; + bool ARB_shader_image_load_store_warn; + bool ARB_shader_stencil_export_enable; + bool ARB_shader_stencil_export_warn; + bool ARB_shader_texture_lod_enable; + bool ARB_shader_texture_lod_warn; + bool ARB_shading_language_420pack_enable; + bool ARB_shading_language_420pack_warn; bool ARB_shading_language_packing_enable; bool ARB_shading_language_packing_warn; + bool ARB_texture_cube_map_array_enable; + bool ARB_texture_cube_map_array_warn; + bool ARB_texture_gather_enable; + bool ARB_texture_gather_warn; bool ARB_texture_multisample_enable; bool ARB_texture_multisample_warn; + bool ARB_texture_query_levels_enable; + bool ARB_texture_query_levels_warn; bool ARB_texture_query_lod_enable; bool ARB_texture_query_lod_warn; - bool ARB_gpu_shader5_enable; - bool ARB_gpu_shader5_warn; + bool ARB_texture_rectangle_enable; + bool ARB_texture_rectangle_warn; + bool ARB_uniform_buffer_object_enable; + bool ARB_uniform_buffer_object_warn; + bool ARB_viewport_array_enable; + bool ARB_viewport_array_warn; + + /* KHR extensions go here, sorted alphabetically. + */ + + /* OES extensions go here, sorted alphabetically. + */ + bool OES_EGL_image_external_enable; + bool OES_EGL_image_external_warn; + bool OES_standard_derivatives_enable; + bool OES_standard_derivatives_warn; + bool OES_texture_3D_enable; + bool OES_texture_3D_warn; + + /* All other extensions go here, sorted alphabetically. + */ + bool AMD_conservative_depth_enable; + bool AMD_conservative_depth_warn; + bool AMD_shader_stencil_export_enable; + bool AMD_shader_stencil_export_warn; + bool AMD_shader_trinary_minmax_enable; + bool AMD_shader_trinary_minmax_warn; bool AMD_vertex_shader_layer_enable; bool AMD_vertex_shader_layer_warn; - bool ARB_shading_language_420pack_enable; - bool ARB_shading_language_420pack_warn; + bool EXT_separate_shader_objects_enable; + bool EXT_separate_shader_objects_warn; + bool EXT_shader_integer_mix_enable; + bool EXT_shader_integer_mix_warn; + bool EXT_texture_array_enable; + bool EXT_texture_array_warn; /*@}*/ /** Extensions supported by the OpenGL implementation. */ const struct gl_extensions *extensions; - /** Shaders containing built-in functions that are used for linking. */ - struct gl_shader *builtins_to_link[16]; - unsigned num_builtins_to_link; + bool uses_builtin_functions; + bool fs_uses_gl_fragcoord; + + /** + * For geometry shaders, size of the most recently seen input declaration + * that was a sized array, or 0 if no sized input array declarations have + * been seen. + * + * Unused for other shader types. + */ + unsigned gs_input_size; + + bool early_fragment_tests; + + /** Atomic counter offsets by binding */ + unsigned atomic_counter_offsets[MAX_COMBINED_ATOMIC_BUFFERS]; }; # define YYLLOC_DEFAULT(Current, Rhs, N) \ @@ -326,9 +472,6 @@ do { \ (Current).source = 0; \ } while (0) -extern void _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state, - const char *fmt, ...); - /** * Emit a warning to the shader log * @@ -361,13 +504,6 @@ extern bool _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, YYLTYPE *behavior_locp, _mesa_glsl_parse_state *state); -/** - * Get the textual name of the specified shader target - */ -extern const char * -_mesa_glsl_shader_target_name(enum _mesa_glsl_parser_targets target); - - #endif /* __cplusplus */ @@ -378,8 +514,12 @@ _mesa_glsl_shader_target_name(enum _mesa_glsl_parser_targets target); extern "C" { #endif +/** + * Get the textual name of the specified shader stage (which is a + * gl_shader_stage). + */ extern const char * -_mesa_glsl_shader_target_name(GLenum type); +_mesa_shader_stage_to_string(unsigned stage); extern int glcpp_preprocess(void *ctx, const char **shader, char **info_log, const struct gl_extensions *extensions, struct gl_context *gl_ctx); diff --git a/dist/Mesa/src/glsl/glsl_symbol_table.cpp b/dist/Mesa/src/glsl/glsl_symbol_table.cpp index 4c96620bf..a05236203 100644 --- a/dist/Mesa/src/glsl/glsl_symbol_table.cpp +++ b/dist/Mesa/src/glsl/glsl_symbol_table.cpp @@ -26,20 +26,7 @@ class symbol_table_entry { public: - /* Callers of this ralloc-based new need not call delete. It's - * easier to just ralloc_free 'ctx' (or any of its ancestors). */ - static void* operator new(size_t size, void *ctx) - { - void *entry = ralloc_size(ctx, size); - assert(entry != NULL); - return entry; - } - - /* If the user *does* call delete, that's OK, we will just ralloc_free. */ - static void operator delete(void *entry) - { - ralloc_free(entry); - } + DECLARE_RALLOC_CXX_OPERATORS(symbol_table_entry); bool add_interface(const glsl_type *i, enum ir_variable_mode mode) { @@ -175,23 +162,6 @@ bool glsl_symbol_table::add_type(const char *name, const glsl_type *t) return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0; } -static char *make_ast_name(const char *name) -{ - char *ast_name = new char[strlen("#ast.") + strlen(name) + 1]; - strcpy(ast_name, "#ast."); - strcat(ast_name + strlen("#ast."), name); - return ast_name; -} - -bool glsl_symbol_table::add_type_ast(const char *name, const class ast_type_specifier *a) -{ - symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(a); - char *ast_name = make_ast_name(name); - bool ret = _mesa_symbol_table_add_symbol(table, -1, ast_name, entry) == 0; - delete [] ast_name; - return ret; -} - bool glsl_symbol_table::add_interface(const char *name, const glsl_type *i, enum ir_variable_mode mode) { @@ -243,14 +213,6 @@ const glsl_type *glsl_symbol_table::get_type(const char *name) return entry != NULL ? entry->t : NULL; } -const class ast_type_specifier *glsl_symbol_table::get_type_ast(const char *name) -{ - char *ast_name = make_ast_name(name); - symbol_table_entry *entry = get_entry(ast_name); - delete [] ast_name; - return entry != NULL ? entry->a : NULL; -} - const glsl_type *glsl_symbol_table::get_interface(const char *name, enum ir_variable_mode mode) { @@ -269,3 +231,18 @@ symbol_table_entry *glsl_symbol_table::get_entry(const char *name) return (symbol_table_entry *) _mesa_symbol_table_find_symbol(table, -1, name); } + +void +glsl_symbol_table::disable_variable(const char *name) +{ + /* Ideally we would remove the variable's entry from the symbol table, but + * that would be difficult. Fortunately, since this is only used for + * built-in variables, it won't be possible for the shader to re-introduce + * the variable later, so all we really need to do is to make sure that + * further attempts to access it using get_variable() will return NULL. + */ + symbol_table_entry *entry = get_entry(name); + if (entry != NULL) { + entry->v = NULL; + } +} diff --git a/dist/Mesa/src/glsl/glsl_types.cpp b/dist/Mesa/src/glsl/glsl_types.cpp index 8324b8ade..849a79af4 100644 --- a/dist/Mesa/src/glsl/glsl_types.cpp +++ b/dist/Mesa/src/glsl/glsl_types.cpp @@ -64,20 +64,26 @@ glsl_type::glsl_type(GLenum gl_type, memset(& fields, 0, sizeof(fields)); } -glsl_type::glsl_type(GLenum gl_type, +glsl_type::glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name) : gl_type(gl_type), - base_type(GLSL_TYPE_SAMPLER), + base_type(base_type), sampler_dimensionality(dim), sampler_shadow(shadow), sampler_array(array), sampler_type(type), interface_packing(0), - vector_elements(0), matrix_columns(0), length(0) { init_ralloc_type_ctx(); assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); memset(& fields, 0, sizeof(fields)); + + if (base_type == GLSL_TYPE_SAMPLER) { + /* Samplers take no storage whatsoever. */ + matrix_columns = vector_elements = 0; + } else { + matrix_columns = vector_elements = 1; + } } glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, @@ -100,6 +106,10 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, this->fields.structure[i].type = fields[i].type; this->fields.structure[i].name = ralloc_strdup(this->fields.structure, fields[i].name); + this->fields.structure[i].location = fields[i].location; + this->fields.structure[i].interpolation = fields[i].interpolation; + this->fields.structure[i].centroid = fields[i].centroid; + this->fields.structure[i].sample = fields[i].sample; this->fields.structure[i].row_major = fields[i].row_major; } } @@ -124,6 +134,10 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, this->fields.structure[i].type = fields[i].type; this->fields.structure[i].name = ralloc_strdup(this->fields.structure, fields[i].name); + this->fields.structure[i].location = fields[i].location; + this->fields.structure[i].interpolation = fields[i].interpolation; + this->fields.structure[i].centroid = fields[i].centroid; + this->fields.structure[i].sample = fields[i].sample; this->fields.structure[i].row_major = fields[i].row_major; } } @@ -162,6 +176,25 @@ glsl_type::contains_integer() const } } +bool +glsl_type::contains_opaque() const { + switch (base_type) { + case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: + case GLSL_TYPE_ATOMIC_UINT: + return true; + case GLSL_TYPE_ARRAY: + return element_type()->contains_opaque(); + case GLSL_TYPE_STRUCT: + for (unsigned int i = 0; i < length; i++) { + if (fields.structure[i].type->contains_opaque()) + return true; + } + return false; + default: + return false; + } +} gl_texture_index glsl_type::sampler_index() const @@ -193,6 +226,21 @@ glsl_type::sampler_index() const } } +bool +glsl_type::contains_image() const +{ + if (this->is_array()) { + return this->fields.array->contains_image(); + } else if (this->is_record()) { + for (unsigned int i = 0; i < this->length; i++) { + if (this->fields.structure[i].type->contains_image()) + return true; + } + return false; + } else { + return this->is_image(); + } +} const glsl_type *glsl_type::get_base_type() const { @@ -274,8 +322,20 @@ glsl_type::glsl_type(const glsl_type *array, unsigned length) : if (length == 0) snprintf(n, name_length, "%s[]", array->name); - else - snprintf(n, name_length, "%s[%u]", array->name, length); + else { + /* insert outermost dimensions in the correct spot + * otherwise the dimension order will be backwards + */ + const char *pos = strchr(array->name, '['); + if (pos) { + int idx = pos - array->name; + snprintf(n, idx+1, "%s", array->name); + snprintf(n + idx, name_length - idx, "[%u]%s", + length, array->name + idx); + } else { + snprintf(n, name_length, "%s[%u]", array->name, length); + } + } this->name = n; } @@ -423,6 +483,42 @@ glsl_type::get_array_instance(const glsl_type *base, unsigned array_size) } +bool +glsl_type::record_compare(const glsl_type *b) const +{ + if (this->length != b->length) + return false; + + if (this->interface_packing != b->interface_packing) + return false; + + for (unsigned i = 0; i < this->length; i++) { + if (this->fields.structure[i].type != b->fields.structure[i].type) + return false; + if (strcmp(this->fields.structure[i].name, + b->fields.structure[i].name) != 0) + return false; + if (this->fields.structure[i].row_major + != b->fields.structure[i].row_major) + return false; + if (this->fields.structure[i].location + != b->fields.structure[i].location) + return false; + if (this->fields.structure[i].interpolation + != b->fields.structure[i].interpolation) + return false; + if (this->fields.structure[i].centroid + != b->fields.structure[i].centroid) + return false; + if (this->fields.structure[i].sample + != b->fields.structure[i].sample) + return false; + } + + return true; +} + + int glsl_type::record_key_compare(const void *a, const void *b) { @@ -435,24 +531,7 @@ glsl_type::record_key_compare(const void *a, const void *b) if (strcmp(key1->name, key2->name) != 0) return 1; - if (key1->length != key2->length) - return 1; - - if (key1->interface_packing != key2->interface_packing) - return 1; - - for (unsigned i = 0; i < key1->length; i++) { - if (key1->fields.structure[i].type != key2->fields.structure[i].type) - return 1; - if (strcmp(key1->fields.structure[i].name, - key2->fields.structure[i].name) != 0) - return 1; - if (key1->fields.structure[i].row_major - != key2->fields.structure[i].row_major) - return 1; - } - - return 0; + return !key1->record_compare(key2); } @@ -507,9 +586,9 @@ const glsl_type * glsl_type::get_interface_instance(const glsl_struct_field *fields, unsigned num_fields, enum glsl_interface_packing packing, - const char *name) + const char *block_name) { - const glsl_type key(fields, num_fields, packing, name); + const glsl_type key(fields, num_fields, packing, block_name); if (interface_types == NULL) { interface_types = hash_table_ctor(64, record_key_hash, record_key_compare); @@ -517,14 +596,14 @@ glsl_type::get_interface_instance(const glsl_struct_field *fields, const glsl_type *t = (glsl_type *) hash_table_find(interface_types, & key); if (t == NULL) { - t = new glsl_type(fields, num_fields, packing, name); + t = new glsl_type(fields, num_fields, packing, block_name); hash_table_insert(interface_types, (void *) t, t); } assert(t->base_type == GLSL_TYPE_INTERFACE); assert(t->length == num_fields); - assert(strcmp(t->name, name) == 0); + assert(strcmp(t->name, block_name) == 0); return t; } @@ -585,7 +664,11 @@ glsl_type::component_slots() const case GLSL_TYPE_ARRAY: return this->length * this->fields.array->component_slots(); + case GLSL_TYPE_IMAGE: + return 1; + case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: break; @@ -828,3 +911,93 @@ glsl_type::std140_size(bool row_major) const assert(!"not reached"); return -1; } + + +unsigned +glsl_type::count_attribute_slots() const +{ + /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec: + * + * "A scalar input counts the same amount against this limit as a vec4, + * so applications may want to consider packing groups of four + * unrelated float inputs together into a vector to better utilize the + * capabilities of the underlying hardware. A matrix input will use up + * multiple locations. The number of locations used will equal the + * number of columns in the matrix." + * + * The spec does not explicitly say how arrays are counted. However, it + * should be safe to assume the total number of slots consumed by an array + * is the number of entries in the array multiplied by the number of slots + * consumed by a single element of the array. + * + * The spec says nothing about how structs are counted, because vertex + * attributes are not allowed to be (or contain) structs. However, Mesa + * allows varying structs, the number of varying slots taken up by a + * varying struct is simply equal to the sum of the number of slots taken + * up by each element. + */ + switch (this->base_type) { + case GLSL_TYPE_UINT: + case GLSL_TYPE_INT: + case GLSL_TYPE_FLOAT: + case GLSL_TYPE_BOOL: + return this->matrix_columns; + + case GLSL_TYPE_STRUCT: + case GLSL_TYPE_INTERFACE: { + unsigned size = 0; + + for (unsigned i = 0; i < this->length; i++) + size += this->fields.structure[i].type->count_attribute_slots(); + + return size; + } + + case GLSL_TYPE_ARRAY: + return this->length * this->fields.array->count_attribute_slots(); + + case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: + case GLSL_TYPE_ATOMIC_UINT: + case GLSL_TYPE_VOID: + case GLSL_TYPE_ERROR: + break; + } + + assert(!"Unexpected type in count_attribute_slots()"); + + return 0; +} + +int +glsl_type::coordinate_components() const +{ + int size; + + switch (sampler_dimensionality) { + case GLSL_SAMPLER_DIM_1D: + case GLSL_SAMPLER_DIM_BUF: + size = 1; + break; + case GLSL_SAMPLER_DIM_2D: + case GLSL_SAMPLER_DIM_RECT: + case GLSL_SAMPLER_DIM_MS: + case GLSL_SAMPLER_DIM_EXTERNAL: + size = 2; + break; + case GLSL_SAMPLER_DIM_3D: + case GLSL_SAMPLER_DIM_CUBE: + size = 3; + break; + default: + assert(!"Should not get here."); + size = 1; + break; + } + + /* Array textures need an additional component for the array index. */ + if (sampler_array) + size += 1; + + return size; +} diff --git a/dist/Mesa/src/glsl/glsl_types.h b/dist/Mesa/src/glsl/glsl_types.h index 8172309a7..dca5492ac 100644 --- a/dist/Mesa/src/glsl/glsl_types.h +++ b/dist/Mesa/src/glsl/glsl_types.h @@ -53,6 +53,8 @@ enum glsl_base_type { GLSL_TYPE_FLOAT, GLSL_TYPE_BOOL, GLSL_TYPE_SAMPLER, + GLSL_TYPE_IMAGE, + GLSL_TYPE_ATOMIC_UINT, GLSL_TYPE_STRUCT, GLSL_TYPE_INTERFACE, GLSL_TYPE_ARRAY, @@ -88,8 +90,9 @@ struct glsl_type { unsigned sampler_dimensionality:3; /**< \see glsl_sampler_dim */ unsigned sampler_shadow:1; unsigned sampler_array:1; - unsigned sampler_type:2; /**< Type of data returned using this sampler. - * only \c GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, + unsigned sampler_type:2; /**< Type of data returned using this + * sampler or image. Only \c + * GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, * and \c GLSL_TYPE_UINT are valid. */ unsigned interface_packing:2; @@ -177,7 +180,7 @@ struct glsl_type { /**@}*/ /** - * For numeric and boolean derrived types returns the basic scalar type + * For numeric and boolean derived types returns the basic scalar type * * If the type is a numeric or boolean scalar, vector, or matrix type, * this function gets the scalar type of the individual components. For @@ -234,7 +237,7 @@ struct glsl_type { static const glsl_type *get_interface_instance(const glsl_struct_field *fields, unsigned num_fields, enum glsl_interface_packing packing, - const char *name); + const char *block_name); /** * Query the total number of scalars that make up a scalar, vector or matrix @@ -253,6 +256,18 @@ struct glsl_type { unsigned component_slots() const; /** + * Calculate the number of attribute slots required to hold this type + * + * This implements the language rules of GLSL 1.50 for counting the number + * of slots used by a vertex attribute. It also determines the number of + * varying slots the type will use up in the absence of varying packing + * (and thus, it can be used to measure the number of varying slots used by + * the varyings that are generated by lower_packed_varyings). + */ + unsigned count_attribute_slots() const; + + + /** * Alignment in bytes of the start of this type in a std140 uniform * block. */ @@ -389,6 +404,20 @@ struct glsl_type { gl_texture_index sampler_index() const; /** + * Query whether or not type is an image, or for struct and array + * types, contains an image. + */ + bool contains_image() const; + + /** + * Query whether or not a type is an image + */ + bool is_image() const + { + return base_type == GLSL_TYPE_IMAGE; + } + + /** * Query whether or not a type is an array */ bool is_array() const @@ -429,6 +458,32 @@ struct glsl_type { } /** + * Return the amount of atomic counter storage required for a type. + */ + unsigned atomic_size() const + { + if (base_type == GLSL_TYPE_ATOMIC_UINT) + return ATOMIC_COUNTER_SIZE; + else if (is_array()) + return length * element_type()->atomic_size(); + else + return 0; + } + + /** + * Return whether a type contains any atomic counters. + */ + bool contains_atomic() const + { + return atomic_size() > 0; + } + + /** + * Return whether a type contains any opaque types. + */ + bool contains_opaque() const; + + /** * Query the full type of a matrix row * * \return @@ -456,7 +511,6 @@ struct glsl_type { : error_type; } - /** * Get the type of a structure field * @@ -466,13 +520,11 @@ struct glsl_type { */ const glsl_type *field_type(const char *name) const; - /** * Get the location of a filed within a record type */ int field_index(const char *name) const; - /** * Query the number of elements in an array type * @@ -486,6 +538,34 @@ struct glsl_type { return is_array() ? length : -1; } + /** + * Query whether the array size for all dimensions has been declared. + */ + bool is_unsized_array() const + { + return is_array() && length == 0; + } + + /** + * Return the number of coordinate components needed for this + * sampler or image type. + * + * This is based purely on the sampler's dimensionality. For example, this + * returns 1 for sampler1D, and 3 for sampler2DArray. + * + * Note that this is often different than actual coordinate type used in + * a texturing built-in function, since those pack additional values (such + * as the shadow comparitor or projector) into the coordinate type. + */ + int coordinate_components() const; + + /** + * Compare a record type against another record type. + * + * This is useful for matching record types declared across shader stages. + */ + bool record_compare(const glsl_type *b) const; + private: /** * ralloc context for all glsl_type allocations @@ -501,8 +581,8 @@ private: glsl_base_type base_type, unsigned vector_elements, unsigned matrix_columns, const char *name); - /** Constructor for sampler types */ - glsl_type(GLenum gl_type, + /** Constructor for sampler or image types */ + glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name); @@ -557,6 +637,33 @@ struct glsl_struct_field { const struct glsl_type *type; const char *name; bool row_major; + + /** + * For interface blocks, gl_varying_slot corresponding to the input/output + * if this is a built-in input/output (i.e. a member of the built-in + * gl_PerVertex interface block); -1 otherwise. + * + * Ignored for structs. + */ + int location; + + /** + * For interface blocks, the interpolation mode (as in + * ir_variable::interpolation). 0 otherwise. + */ + unsigned interpolation:2; + + /** + * For interface blocks, 1 if this variable uses centroid interpolation (as + * in ir_variable::centroid). 0 otherwise. + */ + unsigned centroid:1; + + /** + * For interface blocks, 1 if this variable uses sample interpolation (as + * in ir_variable::sample). 0 otherwise. + */ + unsigned sample:1; }; static inline unsigned int diff --git a/dist/Mesa/src/glsl/ir.cpp b/dist/Mesa/src/glsl/ir.cpp index dad58deeb..ba8a8394f 100644 --- a/dist/Mesa/src/glsl/ir.cpp +++ b/dist/Mesa/src/glsl/ir.cpp @@ -250,6 +250,7 @@ ir_expression::ir_expression(int op, ir_rvalue *op0) case ir_unop_cos_reduced: case ir_unop_dFdx: case ir_unop_dFdy: + case ir_unop_bitfield_reverse: this->type = op0->type; break; @@ -257,6 +258,9 @@ ir_expression::ir_expression(int op, ir_rvalue *op0) case ir_unop_b2i: case ir_unop_u2i: case ir_unop_bitcast_f2i: + case ir_unop_bit_count: + case ir_unop_find_msb: + case ir_unop_find_lsb: this->type = glsl_type::get_instance(GLSL_TYPE_INT, op0->type->vector_elements, 1); break; @@ -394,8 +398,13 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1) this->type = glsl_type::uint_type; break; + case ir_binop_imul_high: + case ir_binop_carry: + case ir_binop_borrow: case ir_binop_lshift: case ir_binop_rshift: + case ir_binop_bfm: + case ir_binop_ldexp: this->type = op0->type; break; @@ -409,6 +418,38 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1) } } +ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1, + ir_rvalue *op2) +{ + this->ir_type = ir_type_expression; + + this->operation = ir_expression_operation(op); + this->operands[0] = op0; + this->operands[1] = op1; + this->operands[2] = op2; + this->operands[3] = NULL; + + assert(op > ir_last_binop && op <= ir_last_triop); + + switch (this->operation) { + case ir_triop_fma: + case ir_triop_lrp: + case ir_triop_bitfield_extract: + case ir_triop_vector_insert: + this->type = op0->type; + break; + + case ir_triop_bfi: + case ir_triop_csel: + this->type = op1->type; + break; + + default: + assert(!"not reached: missing automatic type setup for ir_expression"); + this->type = glsl_type::float_type; + } +} + unsigned int ir_expression::get_num_operands(ir_expression_operation op) { @@ -489,7 +530,10 @@ static const char *const operator_strs[] = { "+", "-", "*", + "imul_high", "/", + "carry", + "borrow", "%", "<", ">", @@ -514,8 +558,11 @@ static const char *const operator_strs[] = { "packHalf2x16_split", "bfm", "ubo_load", + "ldexp", "vector_extract", + "fma", "lrp", + "csel", "bfi", "bitfield_extract", "vector_insert", @@ -578,42 +625,54 @@ ir_constant::ir_constant(const struct glsl_type *type, memcpy(& this->value, data, sizeof(this->value)); } -ir_constant::ir_constant(float f) +ir_constant::ir_constant(float f, unsigned vector_elements) { + assert(vector_elements <= 4); this->ir_type = ir_type_constant; - this->type = glsl_type::float_type; - this->value.f[0] = f; - for (int i = 1; i < 16; i++) { + this->type = glsl_type::get_instance(GLSL_TYPE_FLOAT, vector_elements, 1); + for (unsigned i = 0; i < vector_elements; i++) { + this->value.f[i] = f; + } + for (unsigned i = vector_elements; i < 16; i++) { this->value.f[i] = 0; } } -ir_constant::ir_constant(unsigned int u) +ir_constant::ir_constant(unsigned int u, unsigned vector_elements) { + assert(vector_elements <= 4); this->ir_type = ir_type_constant; - this->type = glsl_type::uint_type; - this->value.u[0] = u; - for (int i = 1; i < 16; i++) { + this->type = glsl_type::get_instance(GLSL_TYPE_UINT, vector_elements, 1); + for (unsigned i = 0; i < vector_elements; i++) { + this->value.u[i] = u; + } + for (unsigned i = vector_elements; i < 16; i++) { this->value.u[i] = 0; } } -ir_constant::ir_constant(int i) +ir_constant::ir_constant(int integer, unsigned vector_elements) { + assert(vector_elements <= 4); this->ir_type = ir_type_constant; - this->type = glsl_type::int_type; - this->value.i[0] = i; - for (int i = 1; i < 16; i++) { + this->type = glsl_type::get_instance(GLSL_TYPE_INT, vector_elements, 1); + for (unsigned i = 0; i < vector_elements; i++) { + this->value.i[i] = integer; + } + for (unsigned i = vector_elements; i < 16; i++) { this->value.i[i] = 0; } } -ir_constant::ir_constant(bool b) +ir_constant::ir_constant(bool b, unsigned vector_elements) { + assert(vector_elements <= 4); this->ir_type = ir_type_constant; - this->type = glsl_type::bool_type; - this->value.b[0] = b; - for (int i = 1; i < 16; i++) { + this->type = glsl_type::get_instance(GLSL_TYPE_BOOL, vector_elements, 1); + for (unsigned i = 0; i < vector_elements; i++) { + this->value.b[i] = b; + } + for (unsigned i = vector_elements; i < 16; i++) { this->value.b[i] = false; } } @@ -1063,27 +1122,31 @@ ir_constant::has_value(const ir_constant *c) const } bool -ir_constant::is_zero() const +ir_constant::is_value(float f, int i) const { if (!this->type->is_scalar() && !this->type->is_vector()) return false; + /* Only accept boolean values for 0/1. */ + if (int(bool(i)) != i && this->type->is_boolean()) + return false; + for (unsigned c = 0; c < this->type->vector_elements; c++) { switch (this->type->base_type) { case GLSL_TYPE_FLOAT: - if (this->value.f[c] != 0.0) + if (this->value.f[c] != f) return false; break; case GLSL_TYPE_INT: - if (this->value.i[c] != 0) + if (this->value.i[c] != i) return false; break; case GLSL_TYPE_UINT: - if (this->value.u[c] != 0) + if (this->value.u[c] != unsigned(i)) return false; break; case GLSL_TYPE_BOOL: - if (this->value.b[c] != false) + if (this->value.b[c] != bool(i)) return false; break; default: @@ -1100,76 +1163,21 @@ ir_constant::is_zero() const } bool -ir_constant::is_one() const +ir_constant::is_zero() const { - if (!this->type->is_scalar() && !this->type->is_vector()) - return false; - - for (unsigned c = 0; c < this->type->vector_elements; c++) { - switch (this->type->base_type) { - case GLSL_TYPE_FLOAT: - if (this->value.f[c] != 1.0) - return false; - break; - case GLSL_TYPE_INT: - if (this->value.i[c] != 1) - return false; - break; - case GLSL_TYPE_UINT: - if (this->value.u[c] != 1) - return false; - break; - case GLSL_TYPE_BOOL: - if (this->value.b[c] != true) - return false; - break; - default: - /* The only other base types are structures, arrays, and samplers. - * Samplers cannot be constants, and the others should have been - * filtered out above. - */ - assert(!"Should not get here."); - return false; - } - } + return is_value(0.0, 0); +} - return true; +bool +ir_constant::is_one() const +{ + return is_value(1.0, 1); } bool ir_constant::is_negative_one() const { - if (!this->type->is_scalar() && !this->type->is_vector()) - return false; - - if (this->type->is_boolean()) - return false; - - for (unsigned c = 0; c < this->type->vector_elements; c++) { - switch (this->type->base_type) { - case GLSL_TYPE_FLOAT: - if (this->value.f[c] != -1.0) - return false; - break; - case GLSL_TYPE_INT: - if (this->value.i[c] != -1) - return false; - break; - case GLSL_TYPE_UINT: - if (int(this->value.u[c]) != -1) - return false; - break; - default: - /* The only other base types are structures, arrays, samplers, and - * booleans. Samplers cannot be constants, and the others should - * have been filtered out above. - */ - assert(!"Should not get here."); - return false; - } - } - - return true; + return is_value(-1.0, -1); } bool @@ -1215,14 +1223,18 @@ ir_constant::is_basis() const return ones == 1; } +bool +ir_constant::is_uint16_constant() const +{ + if (!type->is_integer()) + return false; + + return value.u[0] < (1 << 16); +} + ir_loop::ir_loop() { this->ir_type = ir_type_loop; - this->cmp = ir_unop_neg; - this->from = NULL; - this->to = NULL; - this->increment = NULL; - this->counter = NULL; } @@ -1305,23 +1317,23 @@ ir_dereference::is_lvalue() const /* Every l-value derference chain eventually ends in a variable. */ - if ((var == NULL) || var->read_only) + if ((var == NULL) || var->data.read_only) return false; - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be - * assigned into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ - if (this->type->contains_sampler()) + if (this->type->contains_opaque()) return false; return true; } -static const char *tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf", "txf_ms", "txs", "lod" }; +static const char * const tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf", "txf_ms", "txs", "lod", "tg4", "query_levels" }; const char *ir_texture::opcode_string() { @@ -1350,7 +1362,7 @@ ir_texture::set_sampler(ir_dereference *sampler, const glsl_type *type) this->sampler = sampler; this->type = type; - if (this->op == ir_txs) { + if (this->op == ir_txs || this->op == ir_query_levels) { assert(type->base_type == GLSL_TYPE_INT); } else if (this->op == ir_lod) { assert(type->vector_elements == 2); @@ -1525,33 +1537,54 @@ ir_swizzle::variable_referenced() const ir_variable::ir_variable(const struct glsl_type *type, const char *name, ir_variable_mode mode) - : max_array_access(0), read_only(false), centroid(false), invariant(false), - mode(mode), interpolation(INTERP_QUALIFIER_NONE) + : max_ifc_array_access(NULL) { this->ir_type = ir_type_variable; this->type = type; this->name = ralloc_strdup(this, name); - this->explicit_location = false; - this->has_initializer = false; - this->location = -1; - this->location_frac = 0; + this->data.explicit_location = false; + this->data.has_initializer = false; + this->data.location = -1; + this->data.location_frac = 0; this->warn_extension = NULL; this->constant_value = NULL; this->constant_initializer = NULL; - this->origin_upper_left = false; - this->pixel_center_integer = false; - this->depth_layout = ir_depth_layout_none; - this->used = false; - - if (type && type->base_type == GLSL_TYPE_SAMPLER) - this->read_only = true; + this->data.origin_upper_left = false; + this->data.pixel_center_integer = false; + this->data.depth_layout = ir_depth_layout_none; + this->data.used = false; + this->data.read_only = false; + this->data.centroid = false; + this->data.sample = false; + this->data.invariant = false; + this->data.how_declared = ir_var_declared_normally; + this->data.mode = mode; + this->data.interpolation = INTERP_QUALIFIER_NONE; + this->data.max_array_access = 0; + this->data.atomic.buffer_index = 0; + this->data.atomic.offset = 0; + this->data.image.read_only = false; + this->data.image.write_only = false; + this->data.image.coherent = false; + this->data.image._volatile = false; + this->data.image.restrict_flag = false; + + if (type != NULL) { + if (type->base_type == GLSL_TYPE_SAMPLER) + this->data.read_only = true; + + if (type->is_interface()) + this->init_interface_type(type); + else if (type->is_array() && type->fields.array->is_interface()) + this->init_interface_type(type->fields.array); + } } const char * -ir_variable::interpolation_string() const +interpolation_string(unsigned interpolation) { - switch (this->interpolation) { + switch (interpolation) { case INTERP_QUALIFIER_NONE: return "no"; case INTERP_QUALIFIER_SMOOTH: return "smooth"; case INTERP_QUALIFIER_FLAT: return "flat"; @@ -1566,9 +1599,9 @@ ir_variable::interpolation_string() const glsl_interp_qualifier ir_variable::determine_interpolation_mode(bool flat_shade) { - if (this->interpolation != INTERP_QUALIFIER_NONE) - return (glsl_interp_qualifier) this->interpolation; - int location = this->location; + if (this->data.interpolation != INTERP_QUALIFIER_NONE) + return (glsl_interp_qualifier) this->data.interpolation; + int location = this->data.location; bool is_gl_Color = location == VARYING_SLOT_COL0 || location == VARYING_SLOT_COL1; if (flat_shade && is_gl_Color) @@ -1578,15 +1611,40 @@ ir_variable::determine_interpolation_mode(bool flat_shade) } -ir_function_signature::ir_function_signature(const glsl_type *return_type) - : return_type(return_type), is_defined(false), _function(NULL) +ir_function_signature::ir_function_signature(const glsl_type *return_type, + builtin_available_predicate b) + : return_type(return_type), is_defined(false), is_intrinsic(false), + builtin_avail(b), _function(NULL) { this->ir_type = ir_type_function_signature; - this->is_builtin = false; this->origin = NULL; } +bool +ir_function_signature::is_builtin() const +{ + return builtin_avail != NULL; +} + + +bool +ir_function_signature::is_builtin_available(const _mesa_glsl_parse_state *state) const +{ + /* We can't call the predicate without a state pointer, so just say that + * the signature is available. At compile time, we need the filtering, + * but also receive a valid state pointer. At link time, we're resolving + * imported built-in prototypes to their definitions, which will always + * be an exact match. So we can skip the filtering. + */ + if (state == NULL) + return true; + + assert(builtin_avail != NULL); + return builtin_avail(state); +} + + static bool modes_match(unsigned a, unsigned b) { @@ -1605,25 +1663,25 @@ modes_match(unsigned a, unsigned b) const char * ir_function_signature::qualifiers_match(exec_list *params) { - exec_list_iterator iter_a = parameters.iterator(); - exec_list_iterator iter_b = params->iterator(); - /* check that the qualifiers match. */ - while (iter_a.has_next()) { - ir_variable *a = (ir_variable *)iter_a.get(); - ir_variable *b = (ir_variable *)iter_b.get(); - - if (a->read_only != b->read_only || - !modes_match(a->mode, b->mode) || - a->interpolation != b->interpolation || - a->centroid != b->centroid) { + foreach_two_lists(a_node, &this->parameters, b_node, params) { + ir_variable *a = (ir_variable *) a_node; + ir_variable *b = (ir_variable *) b_node; + + if (a->data.read_only != b->data.read_only || + !modes_match(a->data.mode, b->data.mode) || + a->data.interpolation != b->data.interpolation || + a->data.centroid != b->data.centroid || + a->data.sample != b->data.sample || + a->data.image.read_only != b->data.image.read_only || + a->data.image.write_only != b->data.image.write_only || + a->data.image.coherent != b->data.image.coherent || + a->data.image._volatile != b->data.image._volatile || + a->data.image.restrict_flag != b->data.image.restrict_flag) { /* parameter a's qualifiers don't match */ return a->name; } - - iter_a.next(); - iter_b.next(); } return NULL; } @@ -1636,12 +1694,6 @@ ir_function_signature::replace_parameters(exec_list *new_params) * parameter information comes from the function prototype, it may either * specify incorrect parameter names or not have names at all. */ - foreach_iter(exec_list_iterator, iter, parameters) { - assert(((ir_instruction *) iter.get())->as_variable() != NULL); - - iter.remove(); - } - new_params->move_nodes_to(¶meters); } @@ -1658,7 +1710,7 @@ ir_function::has_user_signature() { foreach_list(n, &this->signatures) { ir_function_signature *const sig = (ir_function_signature *) n; - if (!sig->is_builtin) + if (!sig->is_builtin()) return true; } return false; @@ -1678,8 +1730,8 @@ ir_rvalue::error_value(void *mem_ctx) void visit_exec_list(exec_list *list, ir_visitor *visitor) { - foreach_iter(exec_list_iterator, iter, *list) { - ((ir_instruction *)iter.get())->accept(visitor); + foreach_list_safe(n, list) { + ((ir_instruction *) n)->accept(visitor); } } @@ -1700,8 +1752,8 @@ steal_memory(ir_instruction *ir, void *new_ctx) */ if (constant != NULL) { if (constant->type->is_record()) { - foreach_iter(exec_list_iterator, iter, constant->components) { - ir_constant *field = (ir_constant *)iter.get(); + foreach_list(n, &constant->components) { + ir_constant *field = (ir_constant *) n; steal_memory(field, ir); } } else if (constant->type->is_array()) { @@ -1778,3 +1830,67 @@ ir_rvalue::as_rvalue_to_saturate() return NULL; } + + +unsigned +vertices_per_prim(GLenum prim) +{ + switch (prim) { + case GL_POINTS: + return 1; + case GL_LINES: + return 2; + case GL_TRIANGLES: + return 3; + case GL_LINES_ADJACENCY: + return 4; + case GL_TRIANGLES_ADJACENCY: + return 6; + default: + assert(!"Bad primitive"); + return 3; + } +} + +/** + * Generate a string describing the mode of a variable + */ +const char * +mode_string(const ir_variable *var) +{ + switch (var->data.mode) { + case ir_var_auto: + return (var->data.read_only) ? "global constant" : "global variable"; + + case ir_var_uniform: + return "uniform"; + + case ir_var_shader_in: + return "shader input"; + + case ir_var_shader_out: + return "shader output"; + + case ir_var_function_in: + case ir_var_const_in: + return "function input"; + + case ir_var_function_out: + return "function output"; + + case ir_var_function_inout: + return "function inout"; + + case ir_var_system_value: + return "shader input"; + + case ir_var_temporary: + return "compiler temporary"; + + case ir_var_mode_count: + break; + } + + assert(!"Should not get here."); + return "invalid variable"; +} diff --git a/dist/Mesa/src/glsl/ir.h b/dist/Mesa/src/glsl/ir.h index 7ac291cf4..6c7c60a27 100644 --- a/dist/Mesa/src/glsl/ir.h +++ b/dist/Mesa/src/glsl/ir.h @@ -81,9 +81,12 @@ enum ir_node_type { ir_type_return, ir_type_swizzle, ir_type_texture, + ir_type_emit_vertex, + ir_type_end_primitive, ir_type_max /**< maximum ir_type enum number, for validation */ }; + /** * Base class of all IR instructions */ @@ -103,6 +106,7 @@ public: /** ir_print_visitor helper for debugging. */ void print(void) const; + void fprint(FILE *f) const; virtual void accept(ir_visitor *) = 0; virtual ir_visitor_status accept(ir_hierarchical_visitor *) = 0; @@ -131,11 +135,22 @@ public: virtual class ir_return * as_return() { return NULL; } virtual class ir_if * as_if() { return NULL; } virtual class ir_swizzle * as_swizzle() { return NULL; } + virtual class ir_texture * as_texture() { return NULL; } virtual class ir_constant * as_constant() { return NULL; } virtual class ir_discard * as_discard() { return NULL; } virtual class ir_jump * as_jump() { return NULL; } /*@}*/ + /** + * IR equality method: Return true if the referenced instruction would + * return the same value as this one. + * + * This intended to be used for CSE and algebraic optimizations, on rvalues + * in particular. No support for other instruction types (assignments, + * jumps, calls, etc.) is planned. + */ + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + protected: ir_instruction() { @@ -250,6 +265,13 @@ public: */ virtual bool is_basis() const; + /** + * Determine if an r-value is an unsigned integer constant which can be + * stored in 16 bits. + * + * \sa ir_constant::is_uint16_constant. + */ + virtual bool is_uint16_constant() const { return false; } /** * Return a generic value of error_type. @@ -281,6 +303,34 @@ enum ir_variable_mode { }; /** + * Enum keeping track of how a variable was declared. For error checking of + * the gl_PerVertex redeclaration rules. + */ +enum ir_var_declaration_type { + /** + * Normal declaration (for most variables, this means an explicit + * declaration. Exception: temporaries are always implicitly declared, but + * they still use ir_var_declared_normally). + * + * Note: an ir_variable that represents a named interface block uses + * ir_var_declared_normally. + */ + ir_var_declared_normally = 0, + + /** + * Variable was explicitly declared (or re-declared) in an unnamed + * interface block. + */ + ir_var_declared_in_block, + + /** + * Variable is an implicitly declared built-in that has not been explicitly + * re-declared by the shader. + */ + ir_var_declared_implicitly, +}; + +/** * \brief Layout qualifiers for gl_FragDepth. * * The AMD/ARB_conservative_depth extensions allow gl_FragDepth to be redeclared @@ -310,6 +360,22 @@ struct ir_state_slot { int swizzle; }; + +/** + * Get the string value for an interpolation qualifier + * + * \return The string that would be used in a shader to specify \c + * mode will be returned. + * + * This function is used to generate error messages of the form "shader + * uses %s interpolation qualifier", so in the case where there is no + * interpolation qualifier, it returns "no". + * + * This function should only be used on a shader input or output variable. + */ +const char *interpolation_string(unsigned interpolation); + + class ir_variable : public ir_instruction { public: ir_variable(const struct glsl_type *, const char *, ir_variable_mode); @@ -330,20 +396,6 @@ public: /** - * Get the string value for the interpolation qualifier - * - * \return The string that would be used in a shader to specify \c - * mode will be returned. - * - * This function is used to generate error messages of the form "shader - * uses %s interpolation qualifier", so in the case where there is no - * interpolation qualifier, it returns "no". - * - * This function should only be used on a shader input or output variable. - */ - const char *interpolation_string() const; - - /** * Determine how this variable should be interpolated based on its * interpolation qualifier (if present), whether it is gl_Color or * gl_SecondaryColor, and whether flatshading is enabled in the current GL @@ -359,7 +411,7 @@ public: */ inline bool is_in_uniform_block() const { - return this->mode == ir_var_uniform && this->interface_type != NULL; + return this->data.mode == ir_var_uniform && this->interface_type != NULL; } /** @@ -390,157 +442,284 @@ public: } /** - * Declared type of the variable + * Set this->interface_type on a newly created variable. */ - const struct glsl_type *type; + void init_interface_type(const struct glsl_type *type) + { + assert(this->interface_type == NULL); + this->interface_type = type; + if (this->is_interface_instance()) { + this->max_ifc_array_access = + rzalloc_array(this, unsigned, type->length); + } + } /** - * Declared name of the variable + * Change this->interface_type on a variable that previously had a + * different, but compatible, interface_type. This is used during linking + * to set the size of arrays in interface blocks. */ - const char *name; + void change_interface_type(const struct glsl_type *type) + { + if (this->max_ifc_array_access != NULL) { + /* max_ifc_array_access has already been allocated, so make sure the + * new interface has the same number of fields as the old one. + */ + assert(this->interface_type->length == type->length); + } + this->interface_type = type; + } /** - * Highest element accessed with a constant expression array index - * - * Not used for non-array variables. + * Change this->interface_type on a variable that previously had a + * different, and incompatible, interface_type. This is used during + * compilation to handle redeclaration of the built-in gl_PerVertex + * interface block. */ - unsigned max_array_access; + void reinit_interface_type(const struct glsl_type *type) + { + if (this->max_ifc_array_access != NULL) { +#ifndef NDEBUG + /* Redeclaring gl_PerVertex is only allowed if none of the built-ins + * it defines have been accessed yet; so it's safe to throw away the + * old max_ifc_array_access pointer, since all of its values are + * zero. + */ + for (unsigned i = 0; i < this->interface_type->length; i++) + assert(this->max_ifc_array_access[i] == 0); +#endif + ralloc_free(this->max_ifc_array_access); + this->max_ifc_array_access = NULL; + } + this->interface_type = NULL; + init_interface_type(type); + } - /** - * Is the variable read-only? - * - * This is set for variables declared as \c const, shader inputs, - * and uniforms. - */ - unsigned read_only:1; - unsigned centroid:1; - unsigned invariant:1; + const glsl_type *get_interface_type() const + { + return this->interface_type; + } /** - * Has this variable been used for reading or writing? - * - * Several GLSL semantic checks require knowledge of whether or not a - * variable has been used. For example, it is an error to redeclare a - * variable as invariant after it has been used. - * - * This is only maintained in the ast_to_hir.cpp path, not in - * Mesa's fixed function or ARB program paths. + * Declared type of the variable */ - unsigned used:1; + const struct glsl_type *type; /** - * Has this variable been statically assigned? - * - * This answers whether the variable was assigned in any path of - * the shader during ast_to_hir. This doesn't answer whether it is - * still written after dead code removal, nor is it maintained in - * non-ast_to_hir.cpp (GLSL parsing) paths. + * Declared name of the variable */ - unsigned assigned:1; + const char *name; /** - * Storage class of the variable. + * For variables which satisfy the is_interface_instance() predicate, this + * points to an array of integers such that if the ith member of the + * interface block is an array, max_ifc_array_access[i] is the maximum + * array element of that member that has been accessed. If the ith member + * of the interface block is not an array, max_ifc_array_access[i] is + * unused. * - * \sa ir_variable_mode + * For variables whose type is not an interface block, this pointer is + * NULL. */ - unsigned mode:4; + unsigned *max_ifc_array_access; - /** - * Interpolation mode for shader inputs / outputs - * - * \sa ir_variable_interpolation - */ - unsigned interpolation:2; + struct ir_variable_data { - /** - * \name ARB_fragment_coord_conventions - * @{ - */ - unsigned origin_upper_left:1; - unsigned pixel_center_integer:1; - /*@}*/ + /** + * Is the variable read-only? + * + * This is set for variables declared as \c const, shader inputs, + * and uniforms. + */ + unsigned read_only:1; + unsigned centroid:1; + unsigned sample:1; + unsigned invariant:1; + + /** + * Has this variable been used for reading or writing? + * + * Several GLSL semantic checks require knowledge of whether or not a + * variable has been used. For example, it is an error to redeclare a + * variable as invariant after it has been used. + * + * This is only maintained in the ast_to_hir.cpp path, not in + * Mesa's fixed function or ARB program paths. + */ + unsigned used:1; + + /** + * Has this variable been statically assigned? + * + * This answers whether the variable was assigned in any path of + * the shader during ast_to_hir. This doesn't answer whether it is + * still written after dead code removal, nor is it maintained in + * non-ast_to_hir.cpp (GLSL parsing) paths. + */ + unsigned assigned:1; - /** - * Was the location explicitly set in the shader? - * - * If the location is explicitly set in the shader, it \b cannot be changed - * by the linker or by the API (e.g., calls to \c glBindAttribLocation have - * no effect). - */ - unsigned explicit_location:1; - unsigned explicit_index:1; + /** + * Enum indicating how the variable was declared. See + * ir_var_declaration_type. + * + * This is used to detect certain kinds of illegal variable redeclarations. + */ + unsigned how_declared:2; - /** - * Was an initial binding explicitly set in the shader? - * - * If so, constant_value contains an integer ir_constant representing the - * initial binding point. - */ - unsigned explicit_binding:1; + /** + * Storage class of the variable. + * + * \sa ir_variable_mode + */ + unsigned mode:4; - /** - * Does this variable have an initializer? - * - * This is used by the linker to cross-validiate initializers of global - * variables. - */ - unsigned has_initializer:1; + /** + * Interpolation mode for shader inputs / outputs + * + * \sa ir_variable_interpolation + */ + unsigned interpolation:2; - /** - * Is this variable a generic output or input that has not yet been matched - * up to a variable in another stage of the pipeline? - * - * This is used by the linker as scratch storage while assigning locations - * to generic inputs and outputs. - */ - unsigned is_unmatched_generic_inout:1; + /** + * \name ARB_fragment_coord_conventions + * @{ + */ + unsigned origin_upper_left:1; + unsigned pixel_center_integer:1; + /*@}*/ + + /** + * Was the location explicitly set in the shader? + * + * If the location is explicitly set in the shader, it \b cannot be changed + * by the linker or by the API (e.g., calls to \c glBindAttribLocation have + * no effect). + */ + unsigned explicit_location:1; + unsigned explicit_index:1; + + /** + * Was an initial binding explicitly set in the shader? + * + * If so, constant_value contains an integer ir_constant representing the + * initial binding point. + */ + unsigned explicit_binding:1; - /** - * If non-zero, then this variable may be packed along with other variables - * into a single varying slot, so this offset should be applied when - * accessing components. For example, an offset of 1 means that the x - * component of this variable is actually stored in component y of the - * location specified by \c location. - */ - unsigned location_frac:2; + /** + * Does this variable have an initializer? + * + * This is used by the linker to cross-validiate initializers of global + * variables. + */ + unsigned has_initializer:1; + + /** + * Is this variable a generic output or input that has not yet been matched + * up to a variable in another stage of the pipeline? + * + * This is used by the linker as scratch storage while assigning locations + * to generic inputs and outputs. + */ + unsigned is_unmatched_generic_inout:1; + + /** + * If non-zero, then this variable may be packed along with other variables + * into a single varying slot, so this offset should be applied when + * accessing components. For example, an offset of 1 means that the x + * component of this variable is actually stored in component y of the + * location specified by \c location. + */ + unsigned location_frac:2; + + /** + * Non-zero if this variable was created by lowering a named interface + * block which was not an array. + * + * Note that this variable and \c from_named_ifc_block_array will never + * both be non-zero. + */ + unsigned from_named_ifc_block_nonarray:1; + + /** + * Non-zero if this variable was created by lowering a named interface + * block which was an array. + * + * Note that this variable and \c from_named_ifc_block_nonarray will never + * both be non-zero. + */ + unsigned from_named_ifc_block_array:1; - /** - * \brief Layout qualifier for gl_FragDepth. - * - * This is not equal to \c ir_depth_layout_none if and only if this - * variable is \c gl_FragDepth and a layout qualifier is specified. - */ - ir_depth_layout depth_layout; + /** + * \brief Layout qualifier for gl_FragDepth. + * + * This is not equal to \c ir_depth_layout_none if and only if this + * variable is \c gl_FragDepth and a layout qualifier is specified. + */ + ir_depth_layout depth_layout; + + /** + * Storage location of the base of this variable + * + * The precise meaning of this field depends on the nature of the variable. + * + * - Vertex shader input: one of the values from \c gl_vert_attrib. + * - Vertex shader output: one of the values from \c gl_varying_slot. + * - Geometry shader input: one of the values from \c gl_varying_slot. + * - Geometry shader output: one of the values from \c gl_varying_slot. + * - Fragment shader input: one of the values from \c gl_varying_slot. + * - Fragment shader output: one of the values from \c gl_frag_result. + * - Uniforms: Per-stage uniform slot number for default uniform block. + * - Uniforms: Index within the uniform block definition for UBO members. + * - Other: This field is not currently used. + * + * If the variable is a uniform, shader input, or shader output, and the + * slot has not been assigned, the value will be -1. + */ + int location; - /** - * Storage location of the base of this variable - * - * The precise meaning of this field depends on the nature of the variable. - * - * - Vertex shader input: one of the values from \c gl_vert_attrib. - * - Vertex shader output: one of the values from \c gl_varying_slot. - * - Fragment shader input: one of the values from \c gl_varying_slot. - * - Fragment shader output: one of the values from \c gl_frag_result. - * - Uniforms: Per-stage uniform slot number for default uniform block. - * - Uniforms: Index within the uniform block definition for UBO members. - * - Other: This field is not currently used. - * - * If the variable is a uniform, shader input, or shader output, and the - * slot has not been assigned, the value will be -1. - */ - int location; + /** + * output index for dual source blending. + */ + int index; - /** - * output index for dual source blending. - */ - int index; + /** + * Initial binding point for a sampler or UBO. + * + * For array types, this represents the binding point for the first element. + */ + int binding; - /** - * Initial binding point for a sampler or UBO. - * - * For array types, this represents the binding point for the first element. - */ - int binding; + /** + * Location an atomic counter is stored at. + */ + struct { + unsigned buffer_index; + unsigned offset; + } atomic; + + /** + * ARB_shader_image_load_store qualifiers. + */ + struct { + bool read_only; /**< "readonly" qualifier. */ + bool write_only; /**< "writeonly" qualifier. */ + bool coherent; + bool _volatile; + bool restrict_flag; + + /** Image internal format if specified explicitly, otherwise GL_NONE. */ + GLenum format; + } image; + + /** + * Highest element accessed with a constant expression array index + * + * Not used for non-array variables. + */ + unsigned max_array_access; + + } data; /** * Built-in state that backs this uniform @@ -578,6 +757,7 @@ public: */ ir_constant *constant_initializer; +private: /** * For variables that are in an interface block or are an instance of an * interface block, this is the \c GLSL_TYPE_INTERFACE type for that block. @@ -587,6 +767,11 @@ public: const glsl_type *interface_type; }; +/** + * A function that returns whether a built-in function is available in the + * current shading language (based on version, ES or desktop, and extensions). + */ +typedef bool (*builtin_available_predicate)(const _mesa_glsl_parse_state *); /*@{*/ /** @@ -598,7 +783,8 @@ class ir_function_signature : public ir_instruction { * an ir_function. */ public: - ir_function_signature(const glsl_type *return_type); + ir_function_signature(const glsl_type *return_type, + builtin_available_predicate builtin_avail = NULL); virtual ir_function_signature *clone(void *mem_ctx, struct hash_table *ht) const; @@ -674,12 +860,27 @@ public: unsigned is_defined:1; /** Whether or not this function signature is a built-in. */ - unsigned is_builtin:1; + bool is_builtin() const; + + /** + * Whether or not this function is an intrinsic to be implemented + * by the driver. + */ + bool is_intrinsic; + + /** Whether or not a built-in is available for this shader. */ + bool is_builtin_available(const _mesa_glsl_parse_state *state) const; /** Body of instructions in the function. */ struct exec_list body; private: + /** + * A function pointer to a predicate that answers whether a built-in + * function is available in the current shader. NULL if not a built-in. + */ + builtin_available_predicate builtin_avail; + /** Function of which this signature is one overload. */ class ir_function *_function; @@ -735,31 +936,26 @@ public: } /** - * Get an iterator for the set of function signatures - */ - exec_list_iterator iterator() - { - return signatures.iterator(); - } - - /** * Find a signature that matches a set of actual parameters, taking implicit * conversions into account. Also flags whether the match was exact. */ - ir_function_signature *matching_signature(const exec_list *actual_param, + ir_function_signature *matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_param, bool *match_is_exact); /** * Find a signature that matches a set of actual parameters, taking implicit * conversions into account. */ - ir_function_signature *matching_signature(const exec_list *actual_param); + ir_function_signature *matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_param); /** * Find a signature that exactly matches a set of actual parameters without * any implicit type conversions. */ - ir_function_signature *exact_matching_signature(const exec_list *actual_ps); + ir_function_signature *exact_matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_ps); /** * Name of the function. @@ -836,44 +1032,8 @@ public: return this; } - /** - * Get an iterator for the instructions of the loop body - */ - exec_list_iterator iterator() - { - return body_instructions.iterator(); - } - /** List of ir_instruction that make up the body of the loop. */ exec_list body_instructions; - - /** - * \name Loop counter and controls - * - * Represents a loop like a FORTRAN \c do-loop. - * - * \note - * If \c from and \c to are the same value, the loop will execute once. - */ - /*@{*/ - ir_rvalue *from; /** Value of the loop counter on the first - * iteration of the loop. - */ - ir_rvalue *to; /** Value of the loop counter on the last - * iteration of the loop. - */ - ir_rvalue *increment; - ir_variable *counter; - - /** - * Comparison operation in the loop terminator. - * - * If any of the loop control fields are non-\c NULL, this field must be - * one of \c ir_binop_less, \c ir_binop_greater, \c ir_binop_lequal, - * \c ir_binop_gequal, \c ir_binop_equal, or \c ir_binop_nequal. - */ - int cmp; - /*@}*/ }; @@ -1069,10 +1229,26 @@ enum ir_expression_operation { ir_binop_add, ir_binop_sub, - ir_binop_mul, + ir_binop_mul, /**< Floating-point or low 32-bit integer multiply. */ + ir_binop_imul_high, /**< Calculates the high 32-bits of a 64-bit multiply. */ ir_binop_div, /** + * Returns the carry resulting from the addition of the two arguments. + */ + /*@{*/ + ir_binop_carry, + /*@}*/ + + /** + * Returns the borrow resulting from the subtraction of the second argument + * from the first argument. + */ + /*@{*/ + ir_binop_borrow, + /*@}*/ + + /** * Takes one of two combinations of arguments: * * - mod(vecN, vecN) @@ -1153,6 +1329,13 @@ enum ir_expression_operation { ir_binop_ubo_load, /** + * \name Multiplies a number by two to a power, part of ARB_gpu_shader5. + */ + /*@{*/ + ir_binop_ldexp, + /*@}*/ + + /** * Extract a scalar from a vector * * operand0 is the vector @@ -1165,9 +1348,28 @@ enum ir_expression_operation { */ ir_last_binop = ir_binop_vector_extract, + /** + * \name Fused floating-point multiply-add, part of ARB_gpu_shader5. + */ + /*@{*/ + ir_triop_fma, + /*@}*/ + ir_triop_lrp, /** + * \name Conditional Select + * + * A vector conditional select instruction (like ?:, but operating per- + * component on vectors). + * + * \see lower_instructions_visitor::ldexp_to_arith + */ + /*@{*/ + ir_triop_csel, + /*@}*/ + + /** * \name Second half of a lowered bitfieldInsert() operation. * * \see lower_instructions::bitfield_insert_to_bfm_bfi @@ -1223,11 +1425,18 @@ public: */ ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1); + /** + * Constructor for ternary operation expressions + */ + ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1, ir_rvalue *op2); + virtual ir_expression *as_expression() { return this; } + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + virtual ir_expression *clone(void *mem_ctx, struct hash_table *ht) const; /** @@ -1257,6 +1466,18 @@ public: } /** + * Return whether the expression operates on vectors horizontally. + */ + bool is_horizontal() const + { + return operation == ir_binop_all_equal || + operation == ir_binop_any_nequal || + operation == ir_unop_any || + operation == ir_binop_dot || + operation == ir_quadop_vector; + } + + /** * Return a string representing this expression's operator. */ const char *operator_string(); @@ -1298,7 +1519,7 @@ public: ir_type = ir_type_call; assert(callee->return_type != NULL); actual_parameters->move_nodes_to(& this->actual_parameters); - this->use_builtin = callee->is_builtin; + this->use_builtin = callee->is_builtin(); } virtual ir_call *clone(void *mem_ctx, struct hash_table *ht) const; @@ -1318,14 +1539,6 @@ public: virtual ir_visitor_status accept(ir_hierarchical_visitor *); /** - * Get an iterator for the set of acutal parameters - */ - exec_list_iterator iterator() - { - return actual_parameters.iterator(); - } - - /** * Get the name of the function being called. */ const char *callee_name() const @@ -1506,7 +1719,9 @@ enum ir_texture_opcode { ir_txf, /**< Texel fetch with explicit LOD */ ir_txf_ms, /**< Multisample texture fetch */ ir_txs, /**< Texture size */ - ir_lod /**< Texture lod query */ + ir_lod, /**< Texture lod query */ + ir_tg4, /**< Texture gather */ + ir_query_levels /**< Texture levels query */ }; @@ -1531,6 +1746,8 @@ enum ir_texture_opcode { * <type> <sampler> <coordinate> <sample_index>) * (txs <type> <sampler> <lod>) * (lod <type> <sampler> <coordinate>) + * (tg4 <type> <sampler> <coordinate> <offset> <component>) + * (query_levels <type> <sampler>) */ class ir_texture : public ir_rvalue { public: @@ -1539,6 +1756,7 @@ public: shadow_comparitor(NULL), offset(NULL) { this->ir_type = ir_type_texture; + memset(&lod_info, 0, sizeof(lod_info)); } virtual ir_texture *clone(void *mem_ctx, struct hash_table *) const; @@ -1550,8 +1768,15 @@ public: v->visit(this); } + virtual ir_texture *as_texture() + { + return this; + } + virtual ir_visitor_status accept(ir_hierarchical_visitor *); + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + /** * Return a string representing the ir_texture_opcode. */ @@ -1597,6 +1822,7 @@ public: ir_rvalue *lod; /**< Floating point LOD */ ir_rvalue *bias; /**< Floating point LOD bias */ ir_rvalue *sample_index; /**< MSAA sample index */ + ir_rvalue *component; /**< Gather component selector */ struct { ir_rvalue *dPdx; /**< Partial derivative of coordinate wrt X */ ir_rvalue *dPdy; /**< Partial derivative of coordinate wrt Y */ @@ -1655,6 +1881,8 @@ public: virtual ir_visitor_status accept(ir_hierarchical_visitor *); + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + bool is_lvalue() const { return val->is_lvalue() && !mask.has_duplicates; @@ -1693,15 +1921,6 @@ public: * Get the variable that is ultimately referenced by an r-value */ virtual ir_variable *variable_referenced() const = 0; - - /** - * Get the constant that is ultimately referenced by an r-value, - * in a constant expression evaluation context. - * - * The offset is used when the reference is to a specific column of - * a matrix. - */ - virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const = 0; }; @@ -1719,6 +1938,8 @@ public: return this; } + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + /** * Get the variable that is ultimately referenced by an r-value */ @@ -1727,15 +1948,6 @@ public: return this->var; } - /** - * Get the constant that is ultimately referenced by an r-value, - * in a constant expression evaluation context. - * - * The offset is used when the reference is to a specific column of - * a matrix. - */ - virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const; - virtual ir_variable *whole_variable_referenced() { /* ir_dereference_variable objects always dereference the entire @@ -1777,6 +1989,8 @@ public: return this; } + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + /** * Get the variable that is ultimately referenced by an r-value */ @@ -1785,15 +1999,6 @@ public: return this->array->variable_referenced(); } - /** - * Get the constant that is ultimately referenced by an r-value, - * in a constant expression evaluation context. - * - * The offset is used when the reference is to a specific column of - * a matrix. - */ - virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const; - virtual void accept(ir_visitor *v) { v->visit(this); @@ -1833,15 +2038,6 @@ public: return this->record->variable_referenced(); } - /** - * Get the constant that is ultimately referenced by an r-value, - * in a constant expression evaluation context. - * - * The offset is used when the reference is to a specific column of - * a matrix. - */ - virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const; - virtual void accept(ir_visitor *v) { v->visit(this); @@ -1868,10 +2064,10 @@ union ir_constant_data { class ir_constant : public ir_rvalue { public: ir_constant(const struct glsl_type *type, const ir_constant_data *data); - ir_constant(bool b); - ir_constant(unsigned int u); - ir_constant(int i); - ir_constant(float f); + ir_constant(bool b, unsigned vector_elements=1); + ir_constant(unsigned int u, unsigned vector_elements=1); + ir_constant(int i, unsigned vector_elements=1); + ir_constant(float f, unsigned vector_elements=1); /** * Construct an ir_constant from a list of ir_constant values @@ -1911,6 +2107,8 @@ public: virtual ir_visitor_status accept(ir_hierarchical_visitor *); + virtual bool equals(ir_instruction *ir, enum ir_node_type ignore = ir_type_unset); + /** * Get a particular component of a constant as a specific type * @@ -1962,12 +2160,26 @@ public: */ bool has_value(const ir_constant *) const; + /** + * Return true if this ir_constant represents the given value. + * + * For vectors, this checks that each component is the given value. + */ + virtual bool is_value(float f, int i) const; virtual bool is_zero() const; virtual bool is_one() const; virtual bool is_negative_one() const; virtual bool is_basis() const; /** + * Return true for constants that could be stored as 16-bit unsigned values. + * + * Note that this will return true even for signed integer ir_constants, as + * long as the value is non-negative and fits in 16-bits. + */ + virtual bool is_uint16_constant() const; + + /** * Value of the constant. * * The field used to back the values supplied by the constant is determined @@ -1989,6 +2201,53 @@ private: ir_constant(void); }; +/** + * IR instruction to emit a vertex in a geometry shader. + */ +class ir_emit_vertex : public ir_instruction { +public: + ir_emit_vertex() + { + ir_type = ir_type_emit_vertex; + } + + virtual void accept(ir_visitor *v) + { + v->visit(this); + } + + virtual ir_emit_vertex *clone(void *mem_ctx, struct hash_table *) const + { + return new(mem_ctx) ir_emit_vertex(); + } + + virtual ir_visitor_status accept(ir_hierarchical_visitor *); +}; + +/** + * IR instruction to complete the current primitive and start a new one in a + * geometry shader. + */ +class ir_end_primitive : public ir_instruction { +public: + ir_end_primitive() + { + ir_type = ir_type_end_primitive; + } + + virtual void accept(ir_visitor *v) + { + v->visit(this); + } + + virtual ir_end_primitive *clone(void *mem_ctx, struct hash_table *) const + { + return new(mem_ctx) ir_end_primitive(); + } + + virtual ir_visitor_status accept(ir_hierarchical_visitor *); +}; + /*@}*/ /** @@ -2045,9 +2304,22 @@ extern void _mesa_glsl_initialize_functions(_mesa_glsl_parse_state *state); extern void +_mesa_glsl_initialize_builtin_functions(); + +extern ir_function_signature * +_mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state, + const char *name, exec_list *actual_parameters); + +extern gl_shader * +_mesa_glsl_get_builtin_function_shader(void); + +extern void _mesa_glsl_release_functions(void); extern void +_mesa_glsl_release_builtin_functions(void); + +extern void reparent_ir(exec_list *list, void *mem_ctx); struct glsl_symbol_table; @@ -2061,20 +2333,26 @@ ir_has_call(ir_instruction *ir); extern void do_set_program_inouts(exec_list *instructions, struct gl_program *prog, - bool is_fragment_shader); + gl_shader_stage shader_stage); extern char * prototype_string(const glsl_type *return_type, const char *name, exec_list *parameters); +const char * +mode_string(const ir_variable *var); + extern "C" { #endif /* __cplusplus */ -extern void _mesa_print_ir(struct exec_list *instructions, +extern void _mesa_print_ir(FILE *f, struct exec_list *instructions, struct _mesa_glsl_parse_state *state); #ifdef __cplusplus } /* extern "C" */ #endif +unsigned +vertices_per_prim(GLenum prim); + #endif /* IR_H */ diff --git a/dist/Mesa/src/glsl/ir_clone.cpp b/dist/Mesa/src/glsl/ir_clone.cpp index 9d4178de8..c00adc564 100644 --- a/dist/Mesa/src/glsl/ir_clone.cpp +++ b/dist/Mesa/src/glsl/ir_clone.cpp @@ -28,7 +28,7 @@ #include "program/hash_table.h" ir_rvalue * -ir_rvalue::clone(void *mem_ctx, struct hash_table *ht) const +ir_rvalue::clone(void *mem_ctx, struct hash_table *) const { /* The only possible instantiation is the generic error value. */ return error_value(mem_ctx); @@ -41,24 +41,19 @@ ir_variable * ir_variable::clone(void *mem_ctx, struct hash_table *ht) const { ir_variable *var = new(mem_ctx) ir_variable(this->type, this->name, - (ir_variable_mode) this->mode); - - var->max_array_access = this->max_array_access; - var->read_only = this->read_only; - var->centroid = this->centroid; - var->invariant = this->invariant; - var->interpolation = this->interpolation; - var->location = this->location; - var->index = this->index; - var->binding = this->binding; + (ir_variable_mode) this->data.mode); + + var->data.max_array_access = this->data.max_array_access; + if (this->is_interface_instance()) { + var->max_ifc_array_access = + rzalloc_array(var, unsigned, this->interface_type->length); + memcpy(var->max_ifc_array_access, this->max_ifc_array_access, + this->interface_type->length * sizeof(unsigned)); + } + + memcpy(&var->data, &this->data, sizeof(var->data)); + var->warn_extension = this->warn_extension; - var->origin_upper_left = this->origin_upper_left; - var->pixel_center_integer = this->pixel_center_integer; - var->explicit_location = this->explicit_location; - var->explicit_index = this->explicit_index; - var->explicit_binding = this->explicit_binding; - var->has_initializer = this->has_initializer; - var->depth_layout = this->depth_layout; var->num_state_slots = this->num_state_slots; if (this->state_slots) { @@ -128,13 +123,13 @@ ir_if::clone(void *mem_ctx, struct hash_table *ht) const { ir_if *new_if = new(mem_ctx) ir_if(this->condition->clone(mem_ctx, ht)); - foreach_iter(exec_list_iterator, iter, this->then_instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, &this->then_instructions) { + ir_instruction *ir = (ir_instruction *) n; new_if->then_instructions.push_tail(ir->clone(mem_ctx, ht)); } - foreach_iter(exec_list_iterator, iter, this->else_instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, &this->else_instructions) { + ir_instruction *ir = (ir_instruction *) n; new_if->else_instructions.push_tail(ir->clone(mem_ctx, ht)); } @@ -146,20 +141,11 @@ ir_loop::clone(void *mem_ctx, struct hash_table *ht) const { ir_loop *new_loop = new(mem_ctx) ir_loop(); - if (this->from) - new_loop->from = this->from->clone(mem_ctx, ht); - if (this->to) - new_loop->to = this->to->clone(mem_ctx, ht); - if (this->increment) - new_loop->increment = this->increment->clone(mem_ctx, ht); - new_loop->counter = counter; - - foreach_iter(exec_list_iterator, iter, this->body_instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, &this->body_instructions) { + ir_instruction *ir = (ir_instruction *) n; new_loop->body_instructions.push_tail(ir->clone(mem_ctx, ht)); } - new_loop->cmp = this->cmp; return new_loop; } @@ -172,8 +158,8 @@ ir_call::clone(void *mem_ctx, struct hash_table *ht) const exec_list new_parameters; - foreach_iter(exec_list_iterator, iter, this->actual_parameters) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, &this->actual_parameters) { + ir_instruction *ir = (ir_instruction *) n; new_parameters.push_tail(ir->clone(mem_ctx, ht)); } @@ -246,6 +232,7 @@ ir_texture::clone(void *mem_ctx, struct hash_table *ht) const switch (this->op) { case ir_tex: case ir_lod: + case ir_query_levels: break; case ir_txb: new_tex->lod_info.bias = this->lod_info.bias->clone(mem_ctx, ht); @@ -262,6 +249,9 @@ ir_texture::clone(void *mem_ctx, struct hash_table *ht) const new_tex->lod_info.grad.dPdx = this->lod_info.grad.dPdx->clone(mem_ctx, ht); new_tex->lod_info.grad.dPdy = this->lod_info.grad.dPdy->clone(mem_ctx, ht); break; + case ir_tg4: + new_tex->lod_info.component = this->lod_info.component->clone(mem_ctx, ht); + break; } return new_tex; @@ -275,10 +265,12 @@ ir_assignment::clone(void *mem_ctx, struct hash_table *ht) const if (this->condition) new_condition = this->condition->clone(mem_ctx, ht); - return new(mem_ctx) ir_assignment(this->lhs->clone(mem_ctx, ht), - this->rhs->clone(mem_ctx, ht), - new_condition, - this->write_mask); + ir_assignment *cloned = + new(mem_ctx) ir_assignment(this->lhs->clone(mem_ctx, ht), + this->rhs->clone(mem_ctx, ht), + new_condition); + cloned->write_mask = this->write_mask; + return cloned; } ir_function * @@ -327,7 +319,7 @@ ir_function_signature::clone_prototype(void *mem_ctx, struct hash_table *ht) con new(mem_ctx) ir_function_signature(this->return_type); copy->is_defined = false; - copy->is_builtin = this->is_builtin; + copy->builtin_avail = this->builtin_avail; copy->origin = this; /* Clone the parameter list, but NOT the body. @@ -383,6 +375,8 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const } case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: + case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: case GLSL_TYPE_INTERFACE: diff --git a/dist/Mesa/src/glsl/ir_constant_expression.cpp b/dist/Mesa/src/glsl/ir_constant_expression.cpp index 0a725b45b..8afe8f776 100644 --- a/dist/Mesa/src/glsl/ir_constant_expression.cpp +++ b/dist/Mesa/src/glsl/ir_constant_expression.cpp @@ -40,6 +40,26 @@ #include "glsl_types.h" #include "program/hash_table.h" +#if defined(_MSC_VER) && (_MSC_VER < 1800) +static int isnormal(double x) +{ + return _fpclass(x) == _FPCLASS_NN || _fpclass(x) == _FPCLASS_PN; +} +#elif defined(__SUNPRO_CC) +#include <ieeefp.h> +static int isnormal(double x) +{ + return fpclass(x) == FP_NORMAL; +} +#endif + +#if defined(_MSC_VER) +static double copysign(double x, double y) +{ + return _copysign(x, y); +} +#endif + static float dot(ir_constant *op0, ir_constant *op1) { @@ -366,8 +386,104 @@ unpack_half_1x16(uint16_t u) return _mesa_half_to_float(u); } +/** + * Get the constant that is ultimately referenced by an r-value, in a constant + * expression evaluation context. + * + * The offset is used when the reference is to a specific column of a matrix. + */ +static bool +constant_referenced(const ir_dereference *deref, + struct hash_table *variable_context, + ir_constant *&store, int &offset) +{ + store = NULL; + offset = 0; + + if (variable_context == NULL) + return false; + + switch (deref->ir_type) { + case ir_type_dereference_array: { + const ir_dereference_array *const da = + (const ir_dereference_array *) deref; + + ir_constant *const index_c = + da->array_index->constant_expression_value(variable_context); + + if (!index_c || !index_c->type->is_scalar() || !index_c->type->is_integer()) + break; + + const int index = index_c->type->base_type == GLSL_TYPE_INT ? + index_c->get_int_component(0) : + index_c->get_uint_component(0); + + ir_constant *substore; + int suboffset; + + const ir_dereference *const deref = da->array->as_dereference(); + if (!deref) + break; + + if (!constant_referenced(deref, variable_context, substore, suboffset)) + break; + + const glsl_type *const vt = da->array->type; + if (vt->is_array()) { + store = substore->get_array_element(index); + offset = 0; + } else if (vt->is_matrix()) { + store = substore; + offset = index * vt->vector_elements; + } else if (vt->is_vector()) { + store = substore; + offset = suboffset + index; + } + + break; + } + + case ir_type_dereference_record: { + const ir_dereference_record *const dr = + (const ir_dereference_record *) deref; + + const ir_dereference *const deref = dr->record->as_dereference(); + if (!deref) + break; + + ir_constant *substore; + int suboffset; + + if (!constant_referenced(deref, variable_context, substore, suboffset)) + break; + + /* Since we're dropping it on the floor... + */ + assert(suboffset == 0); + + store = substore->get_record_field(dr->field); + break; + } + + case ir_type_dereference_variable: { + const ir_dereference_variable *const dv = + (const ir_dereference_variable *) deref; + + store = (ir_constant *) hash_table_find(variable_context, dv->var); + break; + } + + default: + assert(!"Should not get here."); + break; + } + + return store != NULL; +} + + ir_constant * -ir_rvalue::constant_expression_value(struct hash_table *variable_context) +ir_rvalue::constant_expression_value(struct hash_table *) { assert(this->type->is_error()); return NULL; @@ -394,7 +510,9 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) switch (this->operation) { case ir_binop_lshift: case ir_binop_rshift: + case ir_binop_ldexp: case ir_binop_vector_extract: + case ir_triop_csel: case ir_triop_bitfield_extract: break; @@ -1375,6 +1493,43 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) break; } + case ir_binop_bfm: { + int bits = op[0]->value.i[0]; + int offset = op[1]->value.i[0]; + + for (unsigned c = 0; c < components; c++) { + if (bits == 0) + data.u[c] = op[0]->value.u[c]; + else if (offset < 0 || bits < 0) + data.u[c] = 0; /* Undefined for bitfieldInsert, per spec. */ + else if (offset + bits > 32) + data.u[c] = 0; /* Undefined for bitfieldInsert, per spec. */ + else + data.u[c] = ((1 << bits) - 1) << offset; + } + break; + } + + case ir_binop_ldexp: + for (unsigned c = 0; c < components; c++) { + data.f[c] = ldexp(op[0]->value.f[c], op[1]->value.i[c]); + /* Flush subnormal values to zero. */ + if (!isnormal(data.f[c])) + data.f[c] = copysign(0.0f, op[0]->value.f[c]); + } + break; + + case ir_triop_fma: + assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); + assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); + assert(op[2]->type->base_type == GLSL_TYPE_FLOAT); + + for (unsigned c = 0; c < components; c++) { + data.f[c] = op[0]->value.f[c] * op[1]->value.f[c] + + op[2]->value.f[c]; + } + break; + case ir_triop_lrp: { assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); @@ -1388,6 +1543,13 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) break; } + case ir_triop_csel: + for (unsigned c = 0; c < components; c++) { + data.u[c] = op[0]->value.b[c] ? op[1]->value.u[c] + : op[2]->value.u[c]; + } + break; + case ir_triop_vector_insert: { const unsigned idx = op[2]->value.u[0]; @@ -1468,7 +1630,7 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) ir_constant * -ir_texture::constant_expression_value(struct hash_table *variable_context) +ir_texture::constant_expression_value(struct hash_table *) { /* texture lookups aren't constant expressions */ return NULL; @@ -1504,19 +1666,6 @@ ir_swizzle::constant_expression_value(struct hash_table *variable_context) } -void -ir_dereference_variable::constant_referenced(struct hash_table *variable_context, - ir_constant *&store, int &offset) const -{ - if (variable_context) { - store = (ir_constant *)hash_table_find(variable_context, var); - offset = 0; - } else { - store = NULL; - offset = 0; - } -} - ir_constant * ir_dereference_variable::constant_expression_value(struct hash_table *variable_context) { @@ -1534,7 +1683,7 @@ ir_dereference_variable::constant_expression_value(struct hash_table *variable_c /* The constant_value of a uniform variable is its initializer, * not the lifetime constant value of the uniform. */ - if (var->mode == ir_var_uniform) + if (var->data.mode == ir_var_uniform) return NULL; if (!var->constant_value) @@ -1544,60 +1693,6 @@ ir_dereference_variable::constant_expression_value(struct hash_table *variable_c } -void -ir_dereference_array::constant_referenced(struct hash_table *variable_context, - ir_constant *&store, int &offset) const -{ - ir_constant *index_c = array_index->constant_expression_value(variable_context); - - if (!index_c || !index_c->type->is_scalar() || !index_c->type->is_integer()) { - store = 0; - offset = 0; - return; - } - - int index = index_c->type->base_type == GLSL_TYPE_INT ? - index_c->get_int_component(0) : - index_c->get_uint_component(0); - - ir_constant *substore; - int suboffset; - const ir_dereference *deref = array->as_dereference(); - if (!deref) { - store = 0; - offset = 0; - return; - } - - deref->constant_referenced(variable_context, substore, suboffset); - - if (!substore) { - store = 0; - offset = 0; - return; - } - - const glsl_type *vt = array->type; - if (vt->is_array()) { - store = substore->get_array_element(index); - offset = 0; - return; - } - if (vt->is_matrix()) { - store = substore; - offset = index * vt->vector_elements; - return; - } - if (vt->is_vector()) { - store = substore; - offset = suboffset + index; - return; - } - - store = 0; - offset = 0; -} - ir_constant * ir_dereference_array::constant_expression_value(struct hash_table *variable_context) { @@ -1653,33 +1748,8 @@ ir_dereference_array::constant_expression_value(struct hash_table *variable_cont } -void -ir_dereference_record::constant_referenced(struct hash_table *variable_context, - ir_constant *&store, int &offset) const -{ - ir_constant *substore; - int suboffset; - const ir_dereference *deref = record->as_dereference(); - if (!deref) { - store = 0; - offset = 0; - return; - } - - deref->constant_referenced(variable_context, substore, suboffset); - - if (!substore) { - store = 0; - offset = 0; - return; - } - - store = substore->get_record_field(field); - offset = 0; -} - ir_constant * -ir_dereference_record::constant_expression_value(struct hash_table *variable_context) +ir_dereference_record::constant_expression_value(struct hash_table *) { ir_constant *v = this->record->constant_expression_value(); @@ -1688,7 +1758,7 @@ ir_dereference_record::constant_expression_value(struct hash_table *variable_con ir_constant * -ir_assignment::constant_expression_value(struct hash_table *variable_context) +ir_assignment::constant_expression_value(struct hash_table *) { /* FINISHME: Handle CEs involving assignment (return RHS) */ return NULL; @@ -1696,7 +1766,7 @@ ir_assignment::constant_expression_value(struct hash_table *variable_context) ir_constant * -ir_constant::constant_expression_value(struct hash_table *variable_context) +ir_constant::constant_expression_value(struct hash_table *) { return this; } @@ -1737,9 +1807,8 @@ bool ir_function_signature::constant_expression_evaluate_expression_list(const s ir_constant *store = NULL; int offset = 0; - asg->lhs->constant_referenced(variable_context, store, offset); - if (!store) + if (!constant_referenced(asg->lhs, variable_context, store, offset)) return false; ir_constant *value = asg->rhs->constant_expression_value(variable_context); @@ -1770,9 +1839,9 @@ bool ir_function_signature::constant_expression_evaluate_expression_list(const s ir_constant *store = NULL; int offset = 0; - call->return_deref->constant_referenced(variable_context, store, offset); - if (!store) + if (!constant_referenced(call->return_deref, variable_context, + store, offset)) return false; ir_constant *value = call->constant_expression_value(variable_context); @@ -1829,7 +1898,7 @@ ir_function_signature::constant_expression_value(exec_list *actual_parameters, s * "Function calls to user-defined functions (non-built-in functions) * cannot be used to form constant expressions." */ - if (!this->is_builtin) + if (!this->is_builtin()) return NULL; /* diff --git a/dist/Mesa/src/glsl/ir_function.cpp b/dist/Mesa/src/glsl/ir_function.cpp index fe4209c77..40cf5894a 100644 --- a/dist/Mesa/src/glsl/ir_function.cpp +++ b/dist/Mesa/src/glsl/ir_function.cpp @@ -66,7 +66,7 @@ parameter_lists_match(const exec_list *list_a, const exec_list *list_b) /* Try to find an implicit conversion from actual to param. */ inexact_match = true; - switch ((enum ir_variable_mode)(param->mode)) { + switch ((enum ir_variable_mode)(param->data.mode)) { case ir_var_auto: case ir_var_uniform: case ir_var_temporary: @@ -116,14 +116,16 @@ parameter_lists_match(const exec_list *list_a, const exec_list *list_b) ir_function_signature * -ir_function::matching_signature(const exec_list *actual_parameters) +ir_function::matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_parameters) { bool is_exact; - return matching_signature(actual_parameters, &is_exact); + return matching_signature(state, actual_parameters, &is_exact); } ir_function_signature * -ir_function::matching_signature(const exec_list *actual_parameters, +ir_function::matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_parameters, bool *is_exact) { ir_function_signature *match = NULL; @@ -139,9 +141,12 @@ ir_function::matching_signature(const exec_list *actual_parameters, * multiple ways to apply these conversions to the actual arguments of a * call such that the call can be made to match multiple signatures." */ - foreach_iter(exec_list_iterator, iter, signatures) { - ir_function_signature *const sig = - (ir_function_signature *) iter.get(); + foreach_list(n, &this->signatures) { + ir_function_signature *const sig = (ir_function_signature *) n; + + /* Skip over any built-ins that aren't available in this shader. */ + if (sig->is_builtin() && !sig->is_builtin_available(state)) + continue; switch (parameter_lists_match(& sig->parameters, actual_parameters)) { case PARAMETER_LIST_EXACT_MATCH: @@ -203,11 +208,15 @@ parameter_lists_match_exact(const exec_list *list_a, const exec_list *list_b) } ir_function_signature * -ir_function::exact_matching_signature(const exec_list *actual_parameters) +ir_function::exact_matching_signature(_mesa_glsl_parse_state *state, + const exec_list *actual_parameters) { - foreach_iter(exec_list_iterator, iter, signatures) { - ir_function_signature *const sig = - (ir_function_signature *) iter.get(); + foreach_list(n, &this->signatures) { + ir_function_signature *const sig = (ir_function_signature *) n; + + /* Skip over any built-ins that aren't available in this shader. */ + if (sig->is_builtin() && !sig->is_builtin_available(state)) + continue; if (parameter_lists_match_exact(&sig->parameters, actual_parameters)) return sig; diff --git a/dist/Mesa/src/glsl/ir_function_detect_recursion.cpp b/dist/Mesa/src/glsl/ir_function_detect_recursion.cpp index 4b39f9724..5813315b6 100644 --- a/dist/Mesa/src/glsl/ir_function_detect_recursion.cpp +++ b/dist/Mesa/src/glsl/ir_function_detect_recursion.cpp @@ -127,6 +127,8 @@ #include "program/hash_table.h" #include "program.h" +namespace { + struct call_node : public exec_node { class function *func; }; @@ -139,25 +141,7 @@ public: /* empty */ } - - /* Callers of this ralloc-based new need not call delete. It's - * easier to just ralloc_free 'ctx' (or any of its ancestors). */ - static void* operator new(size_t size, void *ctx) - { - void *node; - - node = ralloc_size(ctx, size); - assert(node != NULL); - - return node; - } - - /* If the user *does* call delete, that's OK, we will just - * ralloc_free in that case. */ - static void operator delete(void *node) - { - ralloc_free(node); - } + DECLARE_RALLOC_CXX_OPERATORS(function) ir_function_signature *sig; @@ -240,6 +224,8 @@ public: bool progress; }; +} /* anonymous namespace */ + static void destroy_links(exec_list *list, function *f) { @@ -298,7 +284,7 @@ emit_errors_unlinked(const void *key, void *data, void *closure) memset(&loc, 0, sizeof(loc)); _mesa_glsl_error(&loc, state, - "function `%s' has static recursion.", + "function `%s' has static recursion", proto); ralloc_free(proto); } @@ -319,7 +305,6 @@ emit_errors_linked(const void *key, void *data, void *closure) linker_error(prog, "function `%s' has static recursion.\n", proto); ralloc_free(proto); - prog->LinkStatus = false; } diff --git a/dist/Mesa/src/glsl/ir_hierarchical_visitor.h b/dist/Mesa/src/glsl/ir_hierarchical_visitor.h index 1988ad091..647d2e002 100644 --- a/dist/Mesa/src/glsl/ir_hierarchical_visitor.h +++ b/dist/Mesa/src/glsl/ir_hierarchical_visitor.h @@ -87,6 +87,8 @@ public: virtual ir_visitor_status visit(class ir_variable *); virtual ir_visitor_status visit(class ir_constant *); virtual ir_visitor_status visit(class ir_loop_jump *); + virtual ir_visitor_status visit(class ir_emit_vertex *); + virtual ir_visitor_status visit(class ir_end_primitive *); /** * ir_dereference_variable isn't technically a leaf, but it is treated as a diff --git a/dist/Mesa/src/glsl/ir_hv_accept.cpp b/dist/Mesa/src/glsl/ir_hv_accept.cpp index 559b71af3..2a1f70e5b 100644 --- a/dist/Mesa/src/glsl/ir_hv_accept.cpp +++ b/dist/Mesa/src/glsl/ir_hv_accept.cpp @@ -91,26 +91,6 @@ ir_loop::accept(ir_hierarchical_visitor *v) if (s == visit_stop) return s; - if (s != visit_continue_with_parent) { - if (this->from) { - s = this->from->accept(v); - if (s != visit_continue) - return (s == visit_continue_with_parent) ? visit_continue : s; - } - - if (this->to) { - s = this->to->accept(v); - if (s != visit_continue) - return (s == visit_continue_with_parent) ? visit_continue : s; - } - - if (this->increment) { - s = this->increment->accept(v); - if (s != visit_continue) - return (s == visit_continue_with_parent) ? visit_continue : s; - } - } - return v->visit_leave(this); } @@ -214,6 +194,7 @@ ir_texture::accept(ir_hierarchical_visitor *v) switch (this->op) { case ir_tex: case ir_lod: + case ir_query_levels: break; case ir_txb: s = this->lod_info.bias->accept(v); @@ -241,6 +222,11 @@ ir_texture::accept(ir_hierarchical_visitor *v) if (s != visit_continue) return (s == visit_continue_with_parent) ? visit_continue : s; break; + case ir_tg4: + s = this->lod_info.component->accept(v); + if (s != visit_continue) + return (s == visit_continue_with_parent) ? visit_continue : s; + break; } return (s == visit_stop) ? s : v->visit_leave(this); @@ -415,3 +401,16 @@ ir_if::accept(ir_hierarchical_visitor *v) return v->visit_leave(this); } + +ir_visitor_status +ir_emit_vertex::accept(ir_hierarchical_visitor *v) +{ + return v->visit(this); +} + + +ir_visitor_status +ir_end_primitive::accept(ir_hierarchical_visitor *v) +{ + return v->visit(this); +} diff --git a/dist/Mesa/src/glsl/ir_import_prototypes.cpp b/dist/Mesa/src/glsl/ir_import_prototypes.cpp index 3585bf6b2..b0429fbc3 100644 --- a/dist/Mesa/src/glsl/ir_import_prototypes.cpp +++ b/dist/Mesa/src/glsl/ir_import_prototypes.cpp @@ -30,6 +30,8 @@ #include "ir.h" #include "glsl_symbol_table.h" +namespace { + /** * Visitor used to import function prototypes * @@ -99,6 +101,7 @@ private: void *mem_ctx; }; +} /* anonymous namespace */ /** * Import function prototypes from one IR tree into another diff --git a/dist/Mesa/src/glsl/ir_optimization.h b/dist/Mesa/src/glsl/ir_optimization.h index d9d90ddab..c63921c26 100644 --- a/dist/Mesa/src/glsl/ir_optimization.h +++ b/dist/Mesa/src/glsl/ir_optimization.h @@ -36,8 +36,10 @@ #define LOG_TO_LOG2 0x10 #define MOD_TO_FRACT 0x20 #define INT_DIV_TO_MUL_RCP 0x40 -#define LRP_TO_ARITH 0x80 -#define BITFIELD_INSERT_TO_BFM_BFI 0x100 +#define BITFIELD_INSERT_TO_BFM_BFI 0x80 +#define LDEXP_TO_ARITH 0x100 +#define CARRY_TO_ARITH 0x200 +#define BORROW_TO_ARITH 0x400 /** * \see class lower_packing_builtins_visitor @@ -66,16 +68,17 @@ enum lower_packing_builtins_op { bool do_common_optimization(exec_list *ir, bool linked, bool uniform_locations_assigned, - unsigned max_unroll_iterations, - const struct gl_shader_compiler_options *options); + const struct gl_shader_compiler_options *options, + bool native_integers); -bool do_algebraic(exec_list *instructions); +bool do_algebraic(exec_list *instructions, bool native_integers); bool do_constant_folding(exec_list *instructions); bool do_constant_variable(exec_list *instructions); bool do_constant_variable_unlinked(exec_list *instructions); bool do_copy_propagation(exec_list *instructions); bool do_copy_propagation_elements(exec_list *instructions); bool do_constant_propagation(exec_list *instructions); +bool do_cse(exec_list *instructions); void do_dead_builtin_varyings(struct gl_context *ctx, gl_shader *producer, gl_shader *consumer, unsigned num_tfeedback_decls, @@ -96,6 +99,7 @@ bool do_mat_op_to_vec(exec_list *instructions); bool do_noop_swizzle(exec_list *instructions); bool do_structure_splitting(exec_list *instructions); bool do_swizzle_swizzle(exec_list *instructions); +bool do_vectorize(exec_list *instructions); bool do_tree_grafting(exec_list *instructions); bool do_vec_index_to_cond_assign(exec_list *instructions); bool do_vec_index_to_swizzle(exec_list *instructions); @@ -110,13 +114,14 @@ bool lower_clip_distance(gl_shader *shader); void lower_output_reads(exec_list *instructions); bool lower_packing_builtins(exec_list *instructions, int op_mask); void lower_ubo_reference(struct gl_shader *shader, exec_list *instructions); -void lower_packed_varyings(void *mem_ctx, unsigned location_base, +void lower_packed_varyings(void *mem_ctx, unsigned locations_used, ir_variable_mode mode, - gl_shader *shader); + unsigned gs_input_vertices, gl_shader *shader); bool lower_vector_insert(exec_list *instructions, bool lower_nonconstant_index); void lower_named_interface_blocks(void *mem_ctx, gl_shader *shader); bool optimize_redundant_jumps(exec_list *instructions); bool optimize_split_arrays(exec_list *instructions, bool linked); +bool lower_offset_arrays(exec_list *instructions); ir_rvalue * compare_index_block(exec_list *instructions, ir_variable *index, diff --git a/dist/Mesa/src/glsl/ir_print_visitor.cpp b/dist/Mesa/src/glsl/ir_print_visitor.cpp index ca973a5f3..6f370b971 100644 --- a/dist/Mesa/src/glsl/ir_print_visitor.cpp +++ b/dist/Mesa/src/glsl/ir_print_visitor.cpp @@ -27,52 +27,59 @@ #include "main/macros.h" #include "program/hash_table.h" -static void print_type(const glsl_type *t); +static void print_type(FILE *f, const glsl_type *t); void ir_instruction::print(void) const { + this->fprint(stdout); +} + +void +ir_instruction::fprint(FILE *f) const +{ ir_instruction *deconsted = const_cast<ir_instruction *>(this); - ir_print_visitor v; + ir_print_visitor v(f); deconsted->accept(&v); } extern "C" { void -_mesa_print_ir(exec_list *instructions, +_mesa_print_ir(FILE *f, exec_list *instructions, struct _mesa_glsl_parse_state *state) { if (state) { for (unsigned i = 0; i < state->num_user_structures; i++) { const glsl_type *const s = state->user_structures[i]; - printf("(structure (%s) (%s@%p) (%u) (\n", - s->name, s->name, (void *) s, s->length); + fprintf(f, "(structure (%s) (%s@%p) (%u) (\n", + s->name, s->name, (void *) s, s->length); for (unsigned j = 0; j < s->length; j++) { - printf("\t(("); - print_type(s->fields.structure[j].type); - printf(")(%s))\n", s->fields.structure[j].name); + fprintf(f, "\t(("); + print_type(f, s->fields.structure[j].type); + fprintf(f, ")(%s))\n", s->fields.structure[j].name); } - printf(")\n"); + fprintf(f, ")\n"); } } - printf("(\n"); - foreach_iter(exec_list_iterator, iter, *instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); - ir->print(); + fprintf(f, "(\n"); + foreach_list(n, instructions) { + ir_instruction *ir = (ir_instruction *) n; + ir->fprint(f); if (ir->ir_type != ir_type_function) - printf("\n"); + fprintf(f, "\n"); } - printf("\n)"); + fprintf(f, "\n)"); } } /* extern "C" */ -ir_print_visitor::ir_print_visitor() +ir_print_visitor::ir_print_visitor(FILE *f) + : f(f) { indentation = 0; printable_names = @@ -91,7 +98,7 @@ ir_print_visitor::~ir_print_visitor() void ir_print_visitor::indent(void) { for (int i = 0; i < indentation; i++) - printf(" "); + fprintf(f, " "); } const char * @@ -125,31 +132,32 @@ ir_print_visitor::unique_name(ir_variable *var) } static void -print_type(const glsl_type *t) +print_type(FILE *f, const glsl_type *t) { if (t->base_type == GLSL_TYPE_ARRAY) { - printf("(array "); - print_type(t->fields.array); - printf(" %u)", t->length); + fprintf(f, "(array "); + print_type(f, t->fields.array); + fprintf(f, " %u)", t->length); } else if ((t->base_type == GLSL_TYPE_STRUCT) && (strncmp("gl_", t->name, 3) != 0)) { - printf("%s@%p", t->name, (void *) t); + fprintf(f, "%s@%p", t->name, (void *) t); } else { - printf("%s", t->name); + fprintf(f, "%s", t->name); } } -void ir_print_visitor::visit(ir_rvalue *ir) +void ir_print_visitor::visit(ir_rvalue *) { - printf("error"); + fprintf(f, "error"); } void ir_print_visitor::visit(ir_variable *ir) { - printf("(declare "); + fprintf(f, "(declare "); - const char *const cent = (ir->centroid) ? "centroid " : ""; - const char *const inv = (ir->invariant) ? "invariant " : ""; + const char *const cent = (ir->data.centroid) ? "centroid " : ""; + const char *const samp = (ir->data.sample) ? "sample " : ""; + const char *const inv = (ir->data.invariant) ? "invariant " : ""; const char *const mode[] = { "", "uniform ", "shader_in ", "shader_out ", "in ", "out ", "inout ", "const_in ", "sys ", "temporary " }; @@ -157,54 +165,54 @@ void ir_print_visitor::visit(ir_variable *ir) const char *const interp[] = { "", "smooth", "flat", "noperspective" }; STATIC_ASSERT(ARRAY_SIZE(interp) == INTERP_QUALIFIER_COUNT); - printf("(%s%s%s%s) ", - cent, inv, mode[ir->mode], interp[ir->interpolation]); + fprintf(f, "(%s%s%s%s%s) ", + cent, samp, inv, mode[ir->data.mode], interp[ir->data.interpolation]); - print_type(ir->type); - printf(" %s)", unique_name(ir)); + print_type(f, ir->type); + fprintf(f, " %s)", unique_name(ir)); } void ir_print_visitor::visit(ir_function_signature *ir) { _mesa_symbol_table_push_scope(symbols); - printf("(signature "); + fprintf(f, "(signature "); indentation++; - print_type(ir->return_type); - printf("\n"); + print_type(f, ir->return_type); + fprintf(f, "\n"); indent(); - printf("(parameters\n"); + fprintf(f, "(parameters\n"); indentation++; - foreach_iter(exec_list_iterator, iter, ir->parameters) { - ir_variable *const inst = (ir_variable *) iter.get(); + foreach_list(n, &ir->parameters) { + ir_variable *const inst = (ir_variable *) n; indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n"); + fprintf(f, ")\n"); indent(); - printf("(\n"); + fprintf(f, "(\n"); indentation++; - foreach_iter(exec_list_iterator, iter, ir->body) { - ir_instruction *const inst = (ir_instruction *) iter.get(); + foreach_list(n, &ir->body) { + ir_instruction *const inst = (ir_instruction *) n; indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); indentation--; _mesa_symbol_table_pop_scope(symbols); } @@ -212,79 +220,82 @@ void ir_print_visitor::visit(ir_function_signature *ir) void ir_print_visitor::visit(ir_function *ir) { - printf("(function %s\n", ir->name); + fprintf(f, "(function %s\n", ir->name); indentation++; - foreach_iter(exec_list_iterator, iter, *ir) { - ir_function_signature *const sig = (ir_function_signature *) iter.get(); + foreach_list(n, &ir->signatures) { + ir_function_signature *const sig = (ir_function_signature *) n; indent(); sig->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n\n"); + fprintf(f, ")\n\n"); } void ir_print_visitor::visit(ir_expression *ir) { - printf("(expression "); + fprintf(f, "(expression "); - print_type(ir->type); + print_type(f, ir->type); - printf(" %s ", ir->operator_string()); + fprintf(f, " %s ", ir->operator_string()); for (unsigned i = 0; i < ir->get_num_operands(); i++) { ir->operands[i]->accept(this); } - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_texture *ir) { - printf("(%s ", ir->opcode_string()); + fprintf(f, "(%s ", ir->opcode_string()); - print_type(ir->type); - printf(" "); + print_type(f, ir->type); + fprintf(f, " "); ir->sampler->accept(this); - printf(" "); + fprintf(f, " "); - if (ir->op != ir_txs) { + if (ir->op != ir_txs && ir->op != ir_query_levels) { ir->coordinate->accept(this); - printf(" "); + fprintf(f, " "); if (ir->offset != NULL) { ir->offset->accept(this); } else { - printf("0"); + fprintf(f, "0"); } - printf(" "); + fprintf(f, " "); } - if (ir->op != ir_txf && ir->op != ir_txf_ms && ir->op != ir_txs) { + if (ir->op != ir_txf && ir->op != ir_txf_ms && + ir->op != ir_txs && ir->op != ir_tg4 && + ir->op != ir_query_levels) { if (ir->projector) ir->projector->accept(this); else - printf("1"); + fprintf(f, "1"); if (ir->shadow_comparitor) { - printf(" "); + fprintf(f, " "); ir->shadow_comparitor->accept(this); } else { - printf(" ()"); + fprintf(f, " ()"); } } - printf(" "); + fprintf(f, " "); switch (ir->op) { case ir_tex: case ir_lod: + case ir_query_levels: break; case ir_txb: ir->lod_info.bias->accept(this); @@ -298,14 +309,17 @@ void ir_print_visitor::visit(ir_texture *ir) ir->lod_info.sample_index->accept(this); break; case ir_txd: - printf("("); + fprintf(f, "("); ir->lod_info.grad.dPdx->accept(this); - printf(" "); + fprintf(f, " "); ir->lod_info.grad.dPdy->accept(this); - printf(")"); + fprintf(f, ")"); + break; + case ir_tg4: + ir->lod_info.component->accept(this); break; }; - printf(")"); + fprintf(f, ")"); } @@ -318,43 +332,43 @@ void ir_print_visitor::visit(ir_swizzle *ir) ir->mask.w, }; - printf("(swiz "); + fprintf(f, "(swiz "); for (unsigned i = 0; i < ir->mask.num_components; i++) { - printf("%c", "xyzw"[swiz[i]]); + fprintf(f, "%c", "xyzw"[swiz[i]]); } - printf(" "); + fprintf(f, " "); ir->val->accept(this); - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_dereference_variable *ir) { ir_variable *var = ir->variable_referenced(); - printf("(var_ref %s) ", unique_name(var)); + fprintf(f, "(var_ref %s) ", unique_name(var)); } void ir_print_visitor::visit(ir_dereference_array *ir) { - printf("(array_ref "); + fprintf(f, "(array_ref "); ir->array->accept(this); ir->array_index->accept(this); - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_dereference_record *ir) { - printf("(record_ref "); + fprintf(f, "(record_ref "); ir->record->accept(this); - printf(" %s) ", ir->field); + fprintf(f, " %s) ", ir->field); } void ir_print_visitor::visit(ir_assignment *ir) { - printf("(assign "); + fprintf(f, "(assign "); if (ir->condition) ir->condition->accept(this); @@ -370,22 +384,22 @@ void ir_print_visitor::visit(ir_assignment *ir) } mask[j] = '\0'; - printf(" (%s) ", mask); + fprintf(f, " (%s) ", mask); ir->lhs->accept(this); - printf(" "); + fprintf(f, " "); ir->rhs->accept(this); - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_constant *ir) { - printf("(constant "); - print_type(ir->type); - printf(" ("); + fprintf(f, "(constant "); + print_type(f, ir->type); + fprintf(f, " ("); if (ir->type->is_array()) { for (unsigned i = 0; i < ir->type->length; i++) @@ -393,112 +407,122 @@ void ir_print_visitor::visit(ir_constant *ir) } else if (ir->type->is_record()) { ir_constant *value = (ir_constant *) ir->components.get_head(); for (unsigned i = 0; i < ir->type->length; i++) { - printf("(%s ", ir->type->fields.structure[i].name); + fprintf(f, "(%s ", ir->type->fields.structure[i].name); value->accept(this); - printf(")"); + fprintf(f, ")"); value = (ir_constant *) value->next; } } else { for (unsigned i = 0; i < ir->type->components(); i++) { if (i != 0) - printf(" "); + fprintf(f, " "); switch (ir->type->base_type) { - case GLSL_TYPE_UINT: printf("%u", ir->value.u[i]); break; - case GLSL_TYPE_INT: printf("%d", ir->value.i[i]); break; - case GLSL_TYPE_FLOAT: printf("%f", ir->value.f[i]); break; - case GLSL_TYPE_BOOL: printf("%d", ir->value.b[i]); break; + case GLSL_TYPE_UINT: fprintf(f, "%u", ir->value.u[i]); break; + case GLSL_TYPE_INT: fprintf(f, "%d", ir->value.i[i]); break; + case GLSL_TYPE_FLOAT: + if (ir->value.f[i] == 0.0f) + /* 0.0 == -0.0, so print with %f to get the proper sign. */ + fprintf(f, "%.1f", ir->value.f[i]); + else if (fabs(ir->value.f[i]) < 0.000001f) + fprintf(f, "%a", ir->value.f[i]); + else if (fabs(ir->value.f[i]) > 1000000.0f) + fprintf(f, "%e", ir->value.f[i]); + else + fprintf(f, "%f", ir->value.f[i]); + break; + case GLSL_TYPE_BOOL: fprintf(f, "%d", ir->value.b[i]); break; default: assert(0); } } } - printf(")) "); + fprintf(f, ")) "); } void ir_print_visitor::visit(ir_call *ir) { - printf("(call %s ", ir->callee_name()); + fprintf(f, "(call %s ", ir->callee_name()); if (ir->return_deref) ir->return_deref->accept(this); - printf(" ("); - foreach_iter(exec_list_iterator, iter, *ir) { - ir_instruction *const inst = (ir_instruction *) iter.get(); + fprintf(f, " ("); + foreach_list(n, &ir->actual_parameters) { + ir_rvalue *const param = (ir_rvalue *) n; - inst->accept(this); + param->accept(this); } - printf("))\n"); + fprintf(f, "))\n"); } void ir_print_visitor::visit(ir_return *ir) { - printf("(return"); + fprintf(f, "(return"); ir_rvalue *const value = ir->get_value(); if (value) { - printf(" "); + fprintf(f, " "); value->accept(this); } - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_discard *ir) { - printf("(discard "); + fprintf(f, "(discard "); if (ir->condition != NULL) { - printf(" "); + fprintf(f, " "); ir->condition->accept(this); } - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_if *ir) { - printf("(if "); + fprintf(f, "(if "); ir->condition->accept(this); - printf("(\n"); + fprintf(f, "(\n"); indentation++; - foreach_iter(exec_list_iterator, iter, ir->then_instructions) { - ir_instruction *const inst = (ir_instruction *) iter.get(); + foreach_list(n, &ir->then_instructions) { + ir_instruction *const inst = (ir_instruction *) n; indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n"); + fprintf(f, ")\n"); indent(); if (!ir->else_instructions.is_empty()) { - printf("(\n"); + fprintf(f, "(\n"); indentation++; - foreach_iter(exec_list_iterator, iter, ir->else_instructions) { - ir_instruction *const inst = (ir_instruction *) iter.get(); + foreach_list(n, &ir->else_instructions) { + ir_instruction *const inst = (ir_instruction *) n; indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); } else { - printf("())\n"); + fprintf(f, "())\n"); } } @@ -506,36 +530,36 @@ ir_print_visitor::visit(ir_if *ir) void ir_print_visitor::visit(ir_loop *ir) { - printf("(loop ("); - if (ir->counter != NULL) - ir->counter->accept(this); - printf(") ("); - if (ir->from != NULL) - ir->from->accept(this); - printf(") ("); - if (ir->to != NULL) - ir->to->accept(this); - printf(") ("); - if (ir->increment != NULL) - ir->increment->accept(this); - printf(") (\n"); + fprintf(f, "(loop (\n"); indentation++; - foreach_iter(exec_list_iterator, iter, ir->body_instructions) { - ir_instruction *const inst = (ir_instruction *) iter.get(); + foreach_list(n, &ir->body_instructions) { + ir_instruction *const inst = (ir_instruction *) n; indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); } void ir_print_visitor::visit(ir_loop_jump *ir) { - printf("%s", ir->is_break() ? "break" : "continue"); + fprintf(f, "%s", ir->is_break() ? "break" : "continue"); +} + +void +ir_print_visitor::visit(ir_emit_vertex *) +{ + fprintf(f, "(emit-vertex)"); +} + +void +ir_print_visitor::visit(ir_end_primitive *) +{ + fprintf(f, "(end-primitive)"); } diff --git a/dist/Mesa/src/glsl/ir_print_visitor.h b/dist/Mesa/src/glsl/ir_print_visitor.h index a84056d16..98f041d1a 100644 --- a/dist/Mesa/src/glsl/ir_print_visitor.h +++ b/dist/Mesa/src/glsl/ir_print_visitor.h @@ -38,7 +38,7 @@ extern "C" { */ class ir_print_visitor : public ir_visitor { public: - ir_print_visitor(); + ir_print_visitor(FILE *f); virtual ~ir_print_visitor(); void indent(void); @@ -69,6 +69,8 @@ public: virtual void visit(ir_if *); virtual void visit(ir_loop *); virtual void visit(ir_loop_jump *); + virtual void visit(ir_emit_vertex *); + virtual void visit(ir_end_primitive *); /*@}*/ private: @@ -85,6 +87,7 @@ private: _mesa_symbol_table *symbols; void *mem_ctx; + FILE *f; int indentation; }; diff --git a/dist/Mesa/src/glsl/ir_reader.cpp b/dist/Mesa/src/glsl/ir_reader.cpp index 51534ca7c..28923f3b8 100644 --- a/dist/Mesa/src/glsl/ir_reader.cpp +++ b/dist/Mesa/src/glsl/ir_reader.cpp @@ -28,6 +28,8 @@ const static bool debug = false; +namespace { + class ir_reader { public: ir_reader(_mesa_glsl_parse_state *); @@ -59,11 +61,15 @@ private: ir_swizzle *read_swizzle(s_expression *); ir_constant *read_constant(s_expression *); ir_texture *read_texture(s_expression *); + ir_emit_vertex *read_emit_vertex(s_expression *); + ir_end_primitive *read_end_primitive(s_expression *); ir_dereference *read_dereference(s_expression *); ir_dereference_variable *read_var_ref(s_expression *); }; +} /* anonymous namespace */ + ir_reader::ir_reader(_mesa_glsl_parse_state *state) : state(state) { this->mem_ctx = state; @@ -164,8 +170,8 @@ ir_reader::scan_for_prototypes(exec_list *instructions, s_expression *expr) return; } - foreach_iter(exec_list_iterator, it, list->subexpressions) { - s_list *sub = SX_AS_LIST(it.get()); + foreach_list(n, &list->subexpressions) { + s_list *sub = SX_AS_LIST(n); if (sub == NULL) continue; // not a (function ...); ignore it. @@ -199,16 +205,23 @@ ir_reader::read_function(s_expression *expr, bool skip_body) assert(added); } - exec_list_iterator it = ((s_list *) expr)->subexpressions.iterator(); - it.next(); // skip "function" tag - it.next(); // skip function name - for (/* nothing */; it.has_next(); it.next()) { - s_expression *s_sig = (s_expression *) it.get(); + /* Skip over "function" tag and function name (which are guaranteed to be + * present by the above PARTIAL_MATCH call). + */ + exec_node *node = ((s_list *) expr)->subexpressions.head->next->next; + for (/* nothing */; !node->is_tail_sentinel(); node = node->next) { + s_expression *s_sig = (s_expression *) node; read_function_sig(f, s_sig, skip_body); } return added ? f : NULL; } +static bool +always_available(const _mesa_glsl_parse_state *) +{ + return true; +} + void ir_reader::read_function_sig(ir_function *f, s_expression *expr, bool skip_body) { @@ -237,20 +250,25 @@ ir_reader::read_function_sig(ir_function *f, s_expression *expr, bool skip_body) exec_list hir_parameters; state->symbols->push_scope(); - exec_list_iterator it = paramlist->subexpressions.iterator(); - for (it.next() /* skip "parameters" */; it.has_next(); it.next()) { - ir_variable *var = read_declaration((s_expression *) it.get()); + /* Skip over the "parameters" tag. */ + exec_node *node = paramlist->subexpressions.head->next; + for (/* nothing */; !node->is_tail_sentinel(); node = node->next) { + ir_variable *var = read_declaration((s_expression *) node); if (var == NULL) return; hir_parameters.push_tail(var); } - ir_function_signature *sig = f->exact_matching_signature(&hir_parameters); + ir_function_signature *sig = + f->exact_matching_signature(state, &hir_parameters); if (sig == NULL && skip_body) { /* If scanning for prototypes, generate a new signature. */ - sig = new(mem_ctx) ir_function_signature(return_type); - sig->is_builtin = true; + /* ir_reader doesn't know what languages support a given built-in, so + * just say that they're always available. For now, other mechanisms + * guarantee the right built-ins are available. + */ + sig = new(mem_ctx) ir_function_signature(return_type, always_available); f->add_signature(sig); } else if (sig != NULL) { const char *badvar = sig->qualifiers_match(&hir_parameters); @@ -299,8 +317,8 @@ ir_reader::read_instructions(exec_list *instructions, s_expression *expr, return; } - foreach_iter(exec_list_iterator, it, list->subexpressions) { - s_expression *sub = (s_expression*) it.get(); + foreach_list(n, &list->subexpressions) { + s_expression *sub = (s_expression *) n; ir_instruction *ir = read_instruction(sub, loop_ctx); if (ir != NULL) { /* Global variable declarations should be moved to the top, before @@ -355,6 +373,10 @@ ir_reader::read_instruction(s_expression *expr, ir_loop *loop_ctx) inst = read_return(list); } else if (strcmp(tag->value(), "function") == 0) { inst = read_function(list, false); + } else if (strcmp(tag->value(), "emit-vertex") == 0) { + inst = read_emit_vertex(list); + } else if (strcmp(tag->value(), "end-primitive") == 0) { + inst = read_end_primitive(list); } else { inst = read_rvalue(list); if (inst == NULL) @@ -383,8 +405,8 @@ ir_reader::read_declaration(s_expression *expr) ir_variable *var = new(mem_ctx) ir_variable(type, s_name->value(), ir_var_auto); - foreach_iter(exec_list_iterator, it, s_quals->subexpressions) { - s_symbol *qualifier = SX_AS_SYMBOL(it.get()); + foreach_list(n, &s_quals->subexpressions) { + s_symbol *qualifier = SX_AS_SYMBOL(n); if (qualifier == NULL) { ir_read_error(expr, "qualifier list must contain only symbols"); return NULL; @@ -392,33 +414,35 @@ ir_reader::read_declaration(s_expression *expr) // FINISHME: Check for duplicate/conflicting qualifiers. if (strcmp(qualifier->value(), "centroid") == 0) { - var->centroid = 1; + var->data.centroid = 1; + } else if (strcmp(qualifier->value(), "sample") == 0) { + var->data.sample = 1; } else if (strcmp(qualifier->value(), "invariant") == 0) { - var->invariant = 1; + var->data.invariant = 1; } else if (strcmp(qualifier->value(), "uniform") == 0) { - var->mode = ir_var_uniform; + var->data.mode = ir_var_uniform; } else if (strcmp(qualifier->value(), "auto") == 0) { - var->mode = ir_var_auto; + var->data.mode = ir_var_auto; } else if (strcmp(qualifier->value(), "in") == 0) { - var->mode = ir_var_function_in; + var->data.mode = ir_var_function_in; } else if (strcmp(qualifier->value(), "shader_in") == 0) { - var->mode = ir_var_shader_in; + var->data.mode = ir_var_shader_in; } else if (strcmp(qualifier->value(), "const_in") == 0) { - var->mode = ir_var_const_in; + var->data.mode = ir_var_const_in; } else if (strcmp(qualifier->value(), "out") == 0) { - var->mode = ir_var_function_out; + var->data.mode = ir_var_function_out; } else if (strcmp(qualifier->value(), "shader_out") == 0) { - var->mode = ir_var_shader_out; + var->data.mode = ir_var_shader_out; } else if (strcmp(qualifier->value(), "inout") == 0) { - var->mode = ir_var_function_inout; + var->data.mode = ir_var_function_inout; } else if (strcmp(qualifier->value(), "temporary") == 0) { - var->mode = ir_var_temporary; + var->data.mode = ir_var_temporary; } else if (strcmp(qualifier->value(), "smooth") == 0) { - var->interpolation = INTERP_QUALIFIER_SMOOTH; + var->data.interpolation = INTERP_QUALIFIER_SMOOTH; } else if (strcmp(qualifier->value(), "flat") == 0) { - var->interpolation = INTERP_QUALIFIER_FLAT; + var->data.interpolation = INTERP_QUALIFIER_FLAT; } else if (strcmp(qualifier->value(), "noperspective") == 0) { - var->interpolation = INTERP_QUALIFIER_NOPERSPECTIVE; + var->data.interpolation = INTERP_QUALIFIER_NOPERSPECTIVE; } else { ir_read_error(expr, "unknown qualifier: %s", qualifier->value()); return NULL; @@ -466,18 +490,16 @@ ir_reader::read_if(s_expression *expr, ir_loop *loop_ctx) ir_loop * ir_reader::read_loop(s_expression *expr) { - s_expression *s_counter, *s_from, *s_to, *s_inc, *s_body; + s_expression *s_body; - s_pattern pat[] = { "loop", s_counter, s_from, s_to, s_inc, s_body }; - if (!MATCH(expr, pat)) { - ir_read_error(expr, "expected (loop <counter> <from> <to> " - "<increment> <body>)"); + s_pattern loop_pat[] = { "loop", s_body }; + if (!MATCH(expr, loop_pat)) { + ir_read_error(expr, "expected (loop <body>)"); return NULL; } - // FINISHME: actually read the count/from/to fields. - ir_loop *loop = new(mem_ctx) ir_loop; + read_instructions(&loop->body_instructions, s_body, loop); if (state->error) { delete loop; @@ -636,8 +658,8 @@ ir_reader::read_call(s_expression *expr) exec_list parameters; - foreach_iter(exec_list_iterator, it, params->subexpressions) { - s_expression *expr = (s_expression*) it.get(); + foreach_list(n, ¶ms->subexpressions) { + s_expression *expr = (s_expression *) n; ir_rvalue *param = read_rvalue(expr); if (param == NULL) { ir_read_error(expr, "when reading parameter to function call"); @@ -653,7 +675,7 @@ ir_reader::read_call(s_expression *expr) return NULL; } - ir_function_signature *callee = f->matching_signature(¶meters); + ir_function_signature *callee = f->matching_signature(state, ¶meters); if (callee == NULL) { ir_read_error(expr, "couldn't find matching signature for function " "%s", name->value()); @@ -776,8 +798,8 @@ ir_reader::read_constant(s_expression *expr) if (type->is_array()) { unsigned elements_supplied = 0; exec_list elements; - foreach_iter(exec_list_iterator, it, values->subexpressions) { - s_expression *elt = (s_expression *) it.get(); + foreach_list(n, &values->subexpressions) { + s_expression *elt = (s_expression *) n; ir_constant *ir_elt = read_constant(elt); if (ir_elt == NULL) return NULL; @@ -797,13 +819,13 @@ ir_reader::read_constant(s_expression *expr) // Read in list of values (at most 16). unsigned k = 0; - foreach_iter(exec_list_iterator, it, values->subexpressions) { + foreach_list(n, &values->subexpressions) { if (k >= 16) { ir_read_error(values, "expected at most 16 numbers"); return NULL; } - s_expression *expr = (s_expression*) it.get(); + s_expression *expr = (s_expression *) n; if (type->base_type == GLSL_TYPE_FLOAT) { s_number *value = SX_AS_NUMBER(expr); @@ -914,6 +936,7 @@ ir_reader::read_texture(s_expression *expr) s_list *s_shadow = NULL; s_expression *s_lod = NULL; s_expression *s_sample_index = NULL; + s_expression *s_component = NULL; ir_texture_opcode op = ir_tex; /* silence warning */ @@ -927,6 +950,10 @@ ir_reader::read_texture(s_expression *expr) { "txf_ms", s_type, s_sampler, s_coord, s_sample_index }; s_pattern txs_pattern[] = { "txs", s_type, s_sampler, s_lod }; + s_pattern tg4_pattern[] = + { "tg4", s_type, s_sampler, s_coord, s_offset, s_component }; + s_pattern query_levels_pattern[] = + { "query_levels", s_type, s_sampler }; s_pattern other_pattern[] = { tag, s_type, s_sampler, s_coord, s_offset, s_proj, s_shadow, s_lod }; @@ -940,6 +967,10 @@ ir_reader::read_texture(s_expression *expr) op = ir_txf_ms; } else if (MATCH(expr, txs_pattern)) { op = ir_txs; + } else if (MATCH(expr, tg4_pattern)) { + op = ir_tg4; + } else if (MATCH(expr, query_levels_pattern)) { + op = ir_query_levels; } else if (MATCH(expr, other_pattern)) { op = ir_texture::get_opcode(tag->value()); if (op == -1) @@ -990,7 +1021,9 @@ ir_reader::read_texture(s_expression *expr) } } - if (op != ir_txf && op != ir_txf_ms && op != ir_txs && op != ir_lod) { + if (op != ir_txf && op != ir_txf_ms && + op != ir_txs && op != ir_lod && op != ir_tg4 && + op != ir_query_levels) { s_int *proj_as_int = SX_AS_INT(s_proj); if (proj_as_int && proj_as_int->value() == 1) { tex->projector = NULL; @@ -1059,9 +1092,40 @@ ir_reader::read_texture(s_expression *expr) } break; } + case ir_tg4: + tex->lod_info.component = read_rvalue(s_component); + if (tex->lod_info.component == NULL) { + ir_read_error(NULL, "when reading component in (tg4 ...)"); + return NULL; + } + break; default: // tex and lod don't have any extra parameters. break; }; return tex; } + +ir_emit_vertex * +ir_reader::read_emit_vertex(s_expression *expr) +{ + s_pattern pat[] = { "emit-vertex" }; + + if (MATCH(expr, pat)) { + return new(mem_ctx) ir_emit_vertex(); + } + ir_read_error(NULL, "when reading emit-vertex"); + return NULL; +} + +ir_end_primitive * +ir_reader::read_end_primitive(s_expression *expr) +{ + s_pattern pat[] = { "end-primitive" }; + + if (MATCH(expr, pat)) { + return new(mem_ctx) ir_end_primitive(); + } + ir_read_error(NULL, "when reading end-primitive"); + return NULL; +} diff --git a/dist/Mesa/src/glsl/ir_rvalue_visitor.cpp b/dist/Mesa/src/glsl/ir_rvalue_visitor.cpp index 8eb1c62c3..fcbe9448d 100644 --- a/dist/Mesa/src/glsl/ir_rvalue_visitor.cpp +++ b/dist/Mesa/src/glsl/ir_rvalue_visitor.cpp @@ -57,6 +57,7 @@ ir_rvalue_base_visitor::rvalue_visit(ir_texture *ir) switch (ir->op) { case ir_tex: case ir_lod: + case ir_query_levels: break; case ir_txb: handle_rvalue(&ir->lod_info.bias); @@ -73,6 +74,9 @@ ir_rvalue_base_visitor::rvalue_visit(ir_texture *ir) handle_rvalue(&ir->lod_info.grad.dPdx); handle_rvalue(&ir->lod_info.grad.dPdy); break; + case ir_tg4: + handle_rvalue(&ir->lod_info.component); + break; } return visit_continue; @@ -119,8 +123,8 @@ ir_rvalue_base_visitor::rvalue_visit(ir_assignment *ir) ir_visitor_status ir_rvalue_base_visitor::rvalue_visit(ir_call *ir) { - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param = (ir_rvalue *)iter.get(); + foreach_list_safe(n, &ir->actual_parameters) { + ir_rvalue *param = (ir_rvalue *) n; ir_rvalue *new_param = param; handle_rvalue(&new_param); diff --git a/dist/Mesa/src/glsl/ir_set_program_inouts.cpp b/dist/Mesa/src/glsl/ir_set_program_inouts.cpp index 91a8b4526..5163eb215 100644 --- a/dist/Mesa/src/glsl/ir_set_program_inouts.cpp +++ b/dist/Mesa/src/glsl/ir_set_program_inouts.cpp @@ -27,7 +27,7 @@ * Sets the InputsRead and OutputsWritten of Mesa programs. * * Additionally, for fragment shaders, sets the InterpQualifier array, the - * IsCentroid bitfield, and the UsesDFdy flag. + * IsCentroid and IsSample bitfields, and the UsesDFdy flag. * * Mesa programs (gl_program, not gl_shader_program) have a set of * flags indicating which varyings are read and written. Computing @@ -42,13 +42,15 @@ #include "ir_visitor.h" #include "glsl_types.h" +namespace { + class ir_set_program_inouts_visitor : public ir_hierarchical_visitor { public: ir_set_program_inouts_visitor(struct gl_program *prog, - bool is_fragment_shader) + gl_shader_stage shader_stage) { this->prog = prog; - this->is_fragment_shader = is_fragment_shader; + this->shader_stage = shader_stage; } ~ir_set_program_inouts_visitor() { @@ -58,18 +60,25 @@ public: virtual ir_visitor_status visit_enter(ir_function_signature *); virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_discard *); + virtual ir_visitor_status visit_enter(ir_texture *); virtual ir_visitor_status visit(ir_dereference_variable *); +private: + void mark_whole_variable(ir_variable *var); + bool try_mark_partial_variable(ir_variable *var, ir_rvalue *index); + struct gl_program *prog; - bool is_fragment_shader; + gl_shader_stage shader_stage; }; +} /* anonymous namespace */ + static inline bool is_shader_inout(ir_variable *var) { - return var->mode == ir_var_shader_in || - var->mode == ir_var_shader_out || - var->mode == ir_var_system_value; + return var->data.mode == ir_var_shader_in || + var->data.mode == ir_var_shader_out || + var->data.mode == ir_var_system_value; } static void @@ -85,25 +94,46 @@ mark(struct gl_program *prog, ir_variable *var, int offset, int len, */ for (int i = 0; i < len; i++) { - GLbitfield64 bitfield = BITFIELD64_BIT(var->location + var->index + offset + i); - if (var->mode == ir_var_shader_in) { + GLbitfield64 bitfield = + BITFIELD64_BIT(var->data.location + var->data.index + offset + i); + if (var->data.mode == ir_var_shader_in) { prog->InputsRead |= bitfield; if (is_fragment_shader) { gl_fragment_program *fprog = (gl_fragment_program *) prog; - fprog->InterpQualifier[var->location + var->index + offset + i] = - (glsl_interp_qualifier) var->interpolation; - if (var->centroid) + fprog->InterpQualifier[var->data.location + + var->data.index + offset + i] = + (glsl_interp_qualifier) var->data.interpolation; + if (var->data.centroid) fprog->IsCentroid |= bitfield; + if (var->data.sample) + fprog->IsSample |= bitfield; } - } else if (var->mode == ir_var_system_value) { + } else if (var->data.mode == ir_var_system_value) { prog->SystemValuesRead |= bitfield; } else { - assert(var->mode == ir_var_shader_out); + assert(var->data.mode == ir_var_shader_out); prog->OutputsWritten |= bitfield; } } } +/** + * Mark an entire variable as used. Caller must ensure that the variable + * represents a shader input or output. + */ +void +ir_set_program_inouts_visitor::mark_whole_variable(ir_variable *var) +{ + const glsl_type *type = var->type; + if (this->shader_stage == MESA_SHADER_GEOMETRY && + var->data.mode == ir_var_shader_in && type->is_array()) { + type = type->fields.array; + } + + mark(this->prog, var, 0, type->count_attribute_slots(), + this->shader_stage == MESA_SHADER_FRAGMENT); +} + /* Default handler: Mark all the locations in the variable as used. */ ir_visitor_status ir_set_program_inouts_visitor::visit(ir_dereference_variable *ir) @@ -111,43 +141,154 @@ ir_set_program_inouts_visitor::visit(ir_dereference_variable *ir) if (!is_shader_inout(ir->var)) return visit_continue; - if (ir->type->is_array()) { - mark(this->prog, ir->var, 0, - ir->type->length * ir->type->fields.array->matrix_columns, - this->is_fragment_shader); - } else { - mark(this->prog, ir->var, 0, ir->type->matrix_columns, - this->is_fragment_shader); - } + mark_whole_variable(ir->var); return visit_continue; } -ir_visitor_status -ir_set_program_inouts_visitor::visit_enter(ir_dereference_array *ir) +/** + * Try to mark a portion of the given variable as used. Caller must ensure + * that the variable represents a shader input or output which can be indexed + * into in array fashion (an array or matrix). For the purpose of geometry + * shader inputs (which are always arrays*), this means that the array element + * must be something that can be indexed into in array fashion. + * + * *Except gl_PrimitiveIDIn, as noted below. + * + * If the index can't be interpreted as a constant, or some other problem + * occurs, then nothing will be marked and false will be returned. + */ +bool +ir_set_program_inouts_visitor::try_mark_partial_variable(ir_variable *var, + ir_rvalue *index) { - ir_dereference_variable *deref_var; - ir_constant *index = ir->array_index->as_constant(); - deref_var = ir->array->as_dereference_variable(); - ir_variable *var = deref_var ? deref_var->var : NULL; + const glsl_type *type = var->type; - /* Check that we're dereferencing a shader in or out */ - if (!var || !is_shader_inout(var)) - return visit_continue; + if (this->shader_stage == MESA_SHADER_GEOMETRY && + var->data.mode == ir_var_shader_in) { + /* The only geometry shader input that is not an array is + * gl_PrimitiveIDIn, and in that case, this code will never be reached, + * because gl_PrimitiveIDIn can't be indexed into in array fashion. + */ + assert(type->is_array()); + type = type->fields.array; + } - if (index) { - int width = 1; + /* The code below only handles: + * + * - Indexing into matrices + * - Indexing into arrays of (matrices, vectors, or scalars) + * + * All other possibilities are either prohibited by GLSL (vertex inputs and + * fragment outputs can't be structs) or should have been eliminated by + * lowering passes (do_vec_index_to_swizzle() gets rid of indexing into + * vectors, and lower_packed_varyings() gets rid of structs that occur in + * varyings). + */ + if (!(type->is_matrix() || + (type->is_array() && + (type->fields.array->is_numeric() || + type->fields.array->is_boolean())))) { + assert(!"Unexpected indexing in ir_set_program_inouts"); - if (deref_var->type->is_array() && - deref_var->type->fields.array->is_matrix()) { - width = deref_var->type->fields.array->matrix_columns; - } + /* For safety in release builds, in case we ever encounter unexpected + * indexing, give up and let the caller mark the whole variable as used. + */ + return false; + } + + ir_constant *index_as_constant = index->as_constant(); + if (!index_as_constant) + return false; + + unsigned elem_width; + unsigned num_elems; + if (type->is_array()) { + num_elems = type->length; + if (type->fields.array->is_matrix()) + elem_width = type->fields.array->matrix_columns; + else + elem_width = 1; + } else { + num_elems = type->matrix_columns; + elem_width = 1; + } - mark(this->prog, var, index->value.i[0] * width, width, - this->is_fragment_shader); - return visit_continue_with_parent; + if (index_as_constant->value.u[0] >= num_elems) { + /* Constant index outside the bounds of the matrix/array. This could + * arise as a result of constant folding of a legal GLSL program. + * + * Even though the spec says that indexing outside the bounds of a + * matrix/array results in undefined behaviour, we don't want to pass + * out-of-range values to mark() (since this could result in slots that + * don't exist being marked as used), so just let the caller mark the + * whole variable as used. + */ + return false; + } + + mark(this->prog, var, index_as_constant->value.u[0] * elem_width, + elem_width, this->shader_stage == MESA_SHADER_FRAGMENT); + return true; +} + +ir_visitor_status +ir_set_program_inouts_visitor::visit_enter(ir_dereference_array *ir) +{ + /* Note: for geometry shader inputs, lower_named_interface_blocks may + * create 2D arrays, so we need to be able to handle those. 2D arrays + * shouldn't be able to crop up for any other reason. + */ + if (ir_dereference_array * const inner_array = + ir->array->as_dereference_array()) { + /* ir => foo[i][j] + * inner_array => foo[i] + */ + if (ir_dereference_variable * const deref_var = + inner_array->array->as_dereference_variable()) { + if (this->shader_stage == MESA_SHADER_GEOMETRY && + deref_var->var->data.mode == ir_var_shader_in) { + /* foo is a geometry shader input, so i is the vertex, and j the + * part of the input we're accessing. + */ + if (try_mark_partial_variable(deref_var->var, ir->array_index)) + { + /* We've now taken care of foo and j, but i might contain a + * subexpression that accesses shader inputs. So manually + * visit i and then continue with the parent. + */ + inner_array->array_index->accept(this); + return visit_continue_with_parent; + } + } + } + } else if (ir_dereference_variable * const deref_var = + ir->array->as_dereference_variable()) { + /* ir => foo[i], where foo is a variable. */ + if (this->shader_stage == MESA_SHADER_GEOMETRY && + deref_var->var->data.mode == ir_var_shader_in) { + /* foo is a geometry shader input, so i is the vertex, and we're + * accessing the entire input. + */ + mark_whole_variable(deref_var->var); + /* We've now taken care of foo, but i might contain a subexpression + * that accesses shader inputs. So manually visit i and then + * continue with the parent. + */ + ir->array_index->accept(this); + return visit_continue_with_parent; + } else if (is_shader_inout(deref_var->var)) { + /* foo is a shader input/output, but not a geometry shader input, + * so i is the part of the input we're accessing. + */ + if (try_mark_partial_variable(deref_var->var, ir->array_index)) + return visit_continue_with_parent; + } } + /* The expression is something we don't recognize. Just visit its + * subexpressions. + */ return visit_continue; } @@ -164,7 +305,8 @@ ir_set_program_inouts_visitor::visit_enter(ir_function_signature *ir) ir_visitor_status ir_set_program_inouts_visitor::visit_enter(ir_expression *ir) { - if (is_fragment_shader && ir->operation == ir_unop_dFdy) { + if (this->shader_stage == MESA_SHADER_FRAGMENT && + ir->operation == ir_unop_dFdy) { gl_fragment_program *fprog = (gl_fragment_program *) prog; fprog->UsesDFdy = true; } @@ -175,7 +317,7 @@ ir_visitor_status ir_set_program_inouts_visitor::visit_enter(ir_discard *) { /* discards are only allowed in fragment shaders. */ - assert(is_fragment_shader); + assert(this->shader_stage == MESA_SHADER_FRAGMENT); gl_fragment_program *fprog = (gl_fragment_program *) prog; fprog->UsesKill = true; @@ -183,19 +325,28 @@ ir_set_program_inouts_visitor::visit_enter(ir_discard *) return visit_continue; } +ir_visitor_status +ir_set_program_inouts_visitor::visit_enter(ir_texture *ir) +{ + if (ir->op == ir_tg4) + prog->UsesGather = true; + return visit_continue; +} + void do_set_program_inouts(exec_list *instructions, struct gl_program *prog, - bool is_fragment_shader) + gl_shader_stage shader_stage) { - ir_set_program_inouts_visitor v(prog, is_fragment_shader); + ir_set_program_inouts_visitor v(prog, shader_stage); prog->InputsRead = 0; prog->OutputsWritten = 0; prog->SystemValuesRead = 0; - if (is_fragment_shader) { + if (shader_stage == MESA_SHADER_FRAGMENT) { gl_fragment_program *fprog = (gl_fragment_program *) prog; memset(fprog->InterpQualifier, 0, sizeof(fprog->InterpQualifier)); fprog->IsCentroid = 0; + fprog->IsSample = 0; fprog->UsesDFdy = false; fprog->UsesKill = false; } diff --git a/dist/Mesa/src/glsl/ir_validate.cpp b/dist/Mesa/src/glsl/ir_validate.cpp index ce96f6855..71defc815 100644 --- a/dist/Mesa/src/glsl/ir_validate.cpp +++ b/dist/Mesa/src/glsl/ir_validate.cpp @@ -38,6 +38,8 @@ #include "program/hash_table.h" #include "glsl_types.h" +namespace { + class ir_validate : public ir_hierarchical_visitor { public: ir_validate() @@ -61,7 +63,6 @@ public: virtual ir_visitor_status visit_enter(ir_if *ir); - virtual ir_visitor_status visit_leave(ir_loop *ir); virtual ir_visitor_status visit_enter(ir_function *ir); virtual ir_visitor_status visit_leave(ir_function *ir); virtual ir_visitor_status visit_enter(ir_function_signature *ir); @@ -81,6 +82,7 @@ public: struct hash_table *ht; }; +} /* anonymous namespace */ ir_visitor_status ir_validate::visit(ir_dereference_variable *ir) @@ -146,42 +148,6 @@ ir_validate::visit_enter(ir_if *ir) ir_visitor_status -ir_validate::visit_leave(ir_loop *ir) -{ - if (ir->counter != NULL) { - if ((ir->from == NULL) || (ir->to == NULL) || (ir->increment == NULL)) { - printf("ir_loop has invalid loop controls:\n" - " counter: %p\n" - " from: %p\n" - " to: %p\n" - " increment: %p\n", - (void *) ir->counter, (void *) ir->from, (void *) ir->to, - (void *) ir->increment); - abort(); - } - - if ((ir->cmp < ir_binop_less) || (ir->cmp > ir_binop_nequal)) { - printf("ir_loop has invalid comparitor %d\n", ir->cmp); - abort(); - } - } else { - if ((ir->from != NULL) || (ir->to != NULL) || (ir->increment != NULL)) { - printf("ir_loop has invalid loop controls:\n" - " counter: %p\n" - " from: %p\n" - " to: %p\n" - " increment: %p\n", - (void *) ir->counter, (void *) ir->from, (void *) ir->to, - (void *) ir->increment); - abort(); - } - } - - return visit_continue; -} - - -ir_visitor_status ir_validate::visit_enter(ir_function *ir) { /* Function definitions cannot be nested. @@ -415,6 +381,9 @@ ir_validate::visit_leave(ir_expression *ir) case ir_binop_min: case ir_binop_max: case ir_binop_pow: + assert(ir->operands[0]->type->base_type == + ir->operands[1]->type->base_type); + if (ir->operands[0]->type->is_scalar()) assert(ir->operands[1]->type == ir->type); else if (ir->operands[1]->type->is_scalar()) @@ -426,6 +395,19 @@ ir_validate::visit_leave(ir_expression *ir) } break; + case ir_binop_imul_high: + assert(ir->type == ir->operands[0]->type); + assert(ir->type == ir->operands[1]->type); + assert(ir->type->is_integer()); + break; + + case ir_binop_carry: + case ir_binop_borrow: + assert(ir->type == ir->operands[0]->type); + assert(ir->type == ir->operands[1]->type); + assert(ir->type->base_type == GLSL_TYPE_UINT); + break; + case ir_binop_less: case ir_binop_greater: case ir_binop_lequal: @@ -516,18 +498,40 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->operands[1]->type == glsl_type::uint_type); break; + case ir_binop_ldexp: + assert(ir->operands[0]->type == ir->type); + assert(ir->operands[0]->type->is_float()); + assert(ir->operands[1]->type->base_type == GLSL_TYPE_INT); + assert(ir->operands[0]->type->components() == + ir->operands[1]->type->components()); + break; + case ir_binop_vector_extract: assert(ir->operands[0]->type->is_vector()); assert(ir->operands[1]->type->is_scalar() && ir->operands[1]->type->is_integer()); break; + case ir_triop_fma: + assert(ir->type->base_type == GLSL_TYPE_FLOAT); + assert(ir->type == ir->operands[0]->type); + assert(ir->type == ir->operands[1]->type); + assert(ir->type == ir->operands[2]->type); + break; + case ir_triop_lrp: assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT); assert(ir->operands[0]->type == ir->operands[1]->type); assert(ir->operands[2]->type == ir->operands[0]->type || ir->operands[2]->type == glsl_type::float_type); break; + case ir_triop_csel: + assert(ir->operands[0]->type->base_type == GLSL_TYPE_BOOL); + assert(ir->type->vector_elements == ir->operands[0]->type->vector_elements); + assert(ir->type == ir->operands[1]->type); + assert(ir->type == ir->operands[2]->type); + break; + case ir_triop_bfi: assert(ir->operands[0]->type->is_integer()); assert(ir->operands[1]->type == ir->operands[2]->type); @@ -641,15 +645,35 @@ ir_validate::visit(ir_variable *ir) * to be out of bounds. */ if (ir->type->array_size() > 0) { - if (ir->max_array_access >= ir->type->length) { + if (ir->data.max_array_access >= ir->type->length) { printf("ir_variable has maximum access out of bounds (%d vs %d)\n", - ir->max_array_access, ir->type->length - 1); + ir->data.max_array_access, ir->type->length - 1); ir->print(); abort(); } } - if (ir->constant_initializer != NULL && !ir->has_initializer) { + /* If a variable is an interface block (or an array of interface blocks), + * verify that the maximum array index for each interface member is in + * bounds. + */ + if (ir->is_interface_instance()) { + const glsl_struct_field *fields = + ir->get_interface_type()->fields.structure; + for (unsigned i = 0; i < ir->get_interface_type()->length; i++) { + if (fields[i].type->array_size() > 0) { + if (ir->max_ifc_array_access[i] >= fields[i].type->length) { + printf("ir_variable has maximum access out of bounds for " + "field %s (%d vs %d)\n", fields[i].name, + ir->max_ifc_array_access[i], fields[i].type->length); + ir->print(); + abort(); + } + } + } + } + + if (ir->constant_initializer != NULL && !ir->data.has_initializer) { printf("ir_variable didn't have an initializer, but has a constant " "initializer value.\n"); ir->print(); @@ -731,8 +755,8 @@ ir_validate::visit_enter(ir_call *ir) printf("ir_call parameter type mismatch:\n"); goto dump_ir; } - if (formal_param->mode == ir_var_function_out - || formal_param->mode == ir_var_function_inout) { + if (formal_param->data.mode == ir_var_function_out + || formal_param->data.mode == ir_var_function_inout) { if (!actual_param->is_lvalue()) { printf("ir_call out/inout parameters must be lvalues:\n"); goto dump_ir; @@ -792,8 +816,8 @@ validate_ir_tree(exec_list *instructions) v.run(instructions); - foreach_iter(exec_list_iterator, iter, *instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, instructions) { + ir_instruction *ir = (ir_instruction *) n; visit_tree(ir, check_node_type, NULL); } diff --git a/dist/Mesa/src/glsl/link_functions.cpp b/dist/Mesa/src/glsl/link_functions.cpp index dd6f24716..56f3f207e 100644 --- a/dist/Mesa/src/glsl/link_functions.cpp +++ b/dist/Mesa/src/glsl/link_functions.cpp @@ -34,6 +34,8 @@ find_matching_signature(const char *name, const exec_list *actual_parameters, gl_shader **shader_list, unsigned num_shaders, bool use_builtin); +namespace { + class call_link_visitor : public ir_hierarchical_visitor { public: call_link_visitor(gl_shader_program *prog, gl_shader *linked, @@ -113,10 +115,10 @@ public: } ir_function_signature *linked_sig = - f->exact_matching_signature(&callee->parameters); + f->exact_matching_signature(NULL, &callee->parameters); if ((linked_sig == NULL) || ((linked_sig != NULL) - && (linked_sig->is_builtin != ir->use_builtin))) { + && (linked_sig->is_builtin() != ir->use_builtin))) { linked_sig = new(linked) ir_function_signature(callee->return_type); f->add_signature(linked_sig); } @@ -153,14 +155,17 @@ public: linked_sig->replace_parameters(&formal_parameters); - foreach_list_const(node, &sig->body) { - const ir_instruction *const original = (ir_instruction *) node; + if (sig->is_defined) { + foreach_list_const(node, &sig->body) { + const ir_instruction *const original = (ir_instruction *) node; - ir_instruction *copy = original->clone(linked, ht); - linked_sig->body.push_tail(copy); + ir_instruction *copy = original->clone(linked, ht); + linked_sig->body.push_tail(copy); + } + + linked_sig->is_defined = true; } - linked_sig->is_defined = true; hash_table_dtor(ht); /* Patch references inside the function to things outside the function @@ -196,8 +201,9 @@ public: if (formal_param->type->is_array()) { ir_dereference_variable *deref = actual_param->as_dereference_variable(); if (deref && deref->var && deref->var->type->is_array()) { - deref->var->max_array_access = - MAX2(formal_param->max_array_access, deref->var->max_array_access); + deref->var->data.max_array_access = + MAX2(formal_param->data.max_array_access, + deref->var->data.max_array_access); } } } @@ -221,18 +227,32 @@ public: var = ir->var->clone(linked, NULL); linked->symbols->add_variable(var); linked->ir->push_head(var); - } else if (var->type->is_array()) { - /* It is possible to have a global array declared in multiple - * shaders without a size. The array is implicitly sized by the - * maximal access to it in *any* shader. Because of this, we - * need to track the maximal access to the array as linking pulls - * more functions in that access the array. - */ - var->max_array_access = - MAX2(var->max_array_access, ir->var->max_array_access); - - if (var->type->length == 0 && ir->var->type->length != 0) - var->type = ir->var->type; + } else { + if (var->type->is_array()) { + /* It is possible to have a global array declared in multiple + * shaders without a size. The array is implicitly sized by + * the maximal access to it in *any* shader. Because of this, + * we need to track the maximal access to the array as linking + * pulls more functions in that access the array. + */ + var->data.max_array_access = + MAX2(var->data.max_array_access, + ir->var->data.max_array_access); + + if (var->type->length == 0 && ir->var->type->length != 0) + var->type = ir->var->type; + } + if (var->is_interface_instance()) { + /* Similarly, we need implicit sizes of arrays within interface + * blocks to be sized by the maximal access in *any* shader. + */ + for (unsigned i = 0; i < var->get_interface_type()->length; + i++) { + var->max_ifc_array_access[i] = + MAX2(var->max_ifc_array_access[i], + ir->var->max_ifc_array_access[i]); + } + } } ir->var = var; @@ -273,6 +293,7 @@ private: hash_table *locals; }; +} /* anonymous namespace */ /** * Searches a list of shaders for a particular function definition @@ -288,16 +309,18 @@ find_matching_signature(const char *name, const exec_list *actual_parameters, if (f == NULL) continue; - ir_function_signature *sig = f->matching_signature(actual_parameters); + ir_function_signature *sig = + f->matching_signature(NULL, actual_parameters); - if ((sig == NULL) || !sig->is_defined) + if ((sig == NULL) || + (!sig->is_defined && !sig->is_intrinsic)) continue; /* If this function expects to bind to a built-in function and the * signature that we found isn't a built-in, keep looking. Also keep * looking if we expect a non-built-in but found a built-in. */ - if (use_builtin != sig->is_builtin) + if (use_builtin != sig->is_builtin()) continue; return sig; diff --git a/dist/Mesa/src/glsl/linker.cpp b/dist/Mesa/src/glsl/linker.cpp index b37b15086..a43d23082 100644 --- a/dist/Mesa/src/glsl/linker.cpp +++ b/dist/Mesa/src/glsl/linker.cpp @@ -73,11 +73,17 @@ #include "linker.h" #include "link_varyings.h" #include "ir_optimization.h" +#include "ir_rvalue_visitor.h" extern "C" { #include "main/shaderobj.h" +#include "main/enums.h" } +void linker_error(gl_shader_program *, const char *, ...); + +namespace { + /** * Visitor that determines whether or not a variable is ever written. */ @@ -103,20 +109,19 @@ public: virtual ir_visitor_status visit_enter(ir_call *ir) { - exec_list_iterator sig_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param_rval = (ir_rvalue *)iter.get(); - ir_variable *sig_param = (ir_variable *)sig_iter.get(); + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_rvalue *param_rval = (ir_rvalue *) actual_node; + ir_variable *sig_param = (ir_variable *) formal_node; - if (sig_param->mode == ir_var_function_out || - sig_param->mode == ir_var_function_inout) { + if (sig_param->data.mode == ir_var_function_out || + sig_param->data.mode == ir_var_function_inout) { ir_variable *var = param_rval->variable_referenced(); if (var && strcmp(name, var->name) == 0) { found = true; return visit_stop; } } - sig_iter.next(); } if (ir->return_deref != NULL) { @@ -174,6 +179,105 @@ private: }; +class geom_array_resize_visitor : public ir_hierarchical_visitor { +public: + unsigned num_vertices; + gl_shader_program *prog; + + geom_array_resize_visitor(unsigned num_vertices, gl_shader_program *prog) + { + this->num_vertices = num_vertices; + this->prog = prog; + } + + virtual ~geom_array_resize_visitor() + { + /* empty */ + } + + virtual ir_visitor_status visit(ir_variable *var) + { + if (!var->type->is_array() || var->data.mode != ir_var_shader_in) + return visit_continue; + + unsigned size = var->type->length; + + /* Generate a link error if the shader has declared this array with an + * incorrect size. + */ + if (size && size != this->num_vertices) { + linker_error(this->prog, "size of array %s declared as %u, " + "but number of input vertices is %u\n", + var->name, size, this->num_vertices); + return visit_continue; + } + + /* Generate a link error if the shader attempts to access an input + * array using an index too large for its actual size assigned at link + * time. + */ + if (var->data.max_array_access >= this->num_vertices) { + linker_error(this->prog, "geometry shader accesses element %i of " + "%s, but only %i input vertices\n", + var->data.max_array_access, var->name, this->num_vertices); + return visit_continue; + } + + var->type = glsl_type::get_array_instance(var->type->element_type(), + this->num_vertices); + var->data.max_array_access = this->num_vertices - 1; + + return visit_continue; + } + + /* Dereferences of input variables need to be updated so that their type + * matches the newly assigned type of the variable they are accessing. */ + virtual ir_visitor_status visit(ir_dereference_variable *ir) + { + ir->type = ir->var->type; + return visit_continue; + } + + /* Dereferences of 2D input arrays need to be updated so that their type + * matches the newly assigned type of the array they are accessing. */ + virtual ir_visitor_status visit_leave(ir_dereference_array *ir) + { + const glsl_type *const vt = ir->array->type; + if (vt->is_array()) + ir->type = vt->element_type(); + return visit_continue; + } +}; + + +/** + * Visitor that determines whether or not a shader uses ir_end_primitive. + */ +class find_end_primitive_visitor : public ir_hierarchical_visitor { +public: + find_end_primitive_visitor() + : found(false) + { + /* empty */ + } + + virtual ir_visitor_status visit(ir_end_primitive *) + { + found = true; + return visit_stop; + } + + bool end_primitive_found() + { + return found; + } + +private: + bool found; +}; + +} /* anonymous namespace */ + void linker_error(gl_shader_program *prog, const char *fmt, ...) { @@ -193,7 +297,7 @@ linker_warning(gl_shader_program *prog, const char *fmt, ...) { va_list ap; - ralloc_strcat(&prog->InfoLog, "error: "); + ralloc_strcat(&prog->InfoLog, "warning: "); va_start(ap, fmt); ralloc_vasprintf_append(&prog->InfoLog, fmt, ap); va_end(ap); @@ -261,74 +365,89 @@ parse_program_resource_name(const GLchar *name, void -link_invalidate_variable_locations(gl_shader *sh, int input_base, - int output_base) +link_invalidate_variable_locations(exec_list *ir) { - foreach_list(node, sh->ir) { + foreach_list(node, ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); if (var == NULL) continue; - int base; - switch (var->mode) { - case ir_var_shader_in: - base = input_base; - break; - case ir_var_shader_out: - base = output_base; - break; - default: - continue; + /* Only assign locations for variables that lack an explicit location. + * Explicit locations are set for all built-in variables, generic vertex + * shader inputs (via layout(location=...)), and generic fragment shader + * outputs (also via layout(location=...)). + */ + if (!var->data.explicit_location) { + var->data.location = -1; + var->data.location_frac = 0; } - /* Only assign locations for generic attributes / varyings / etc. + /* ir_variable::is_unmatched_generic_inout is used by the linker while + * connecting outputs from one stage to inputs of the next stage. + * + * There are two implicit assumptions here. First, we assume that any + * built-in variable (i.e., non-generic in or out) will have + * explicit_location set. Second, we assume that any generic in or out + * will not have explicit_location set. + * + * This second assumption will only be valid until + * GL_ARB_separate_shader_objects is supported. When that extension is + * implemented, this function will need some modifications. */ - if ((var->location >= base) && !var->explicit_location) - var->location = -1; - - if ((var->location == -1) && !var->explicit_location) { - var->is_unmatched_generic_inout = 1; - var->location_frac = 0; + if (!var->data.explicit_location) { + var->data.is_unmatched_generic_inout = 1; } else { - var->is_unmatched_generic_inout = 0; + var->data.is_unmatched_generic_inout = 0; } } } /** - * Determine the number of attribute slots required for a particular type + * Set UsesClipDistance and ClipDistanceArraySize based on the given shader. * - * This code is here because it implements the language rules of a specific - * GLSL version. Since it's a property of the language and not a property of - * types in general, it doesn't really belong in glsl_type. + * Also check for errors based on incorrect usage of gl_ClipVertex and + * gl_ClipDistance. + * + * Return false if an error was reported. */ -unsigned -count_attribute_slots(const glsl_type *t) +static void +analyze_clip_usage(struct gl_shader_program *prog, + struct gl_shader *shader, GLboolean *UsesClipDistance, + GLuint *ClipDistanceArraySize) { - /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec: - * - * "A scalar input counts the same amount against this limit as a vec4, - * so applications may want to consider packing groups of four - * unrelated float inputs together into a vector to better utilize the - * capabilities of the underlying hardware. A matrix input will use up - * multiple locations. The number of locations used will equal the - * number of columns in the matrix." - * - * The spec does not explicitly say how arrays are counted. However, it - * should be safe to assume the total number of slots consumed by an array - * is the number of entries in the array multiplied by the number of slots - * consumed by a single element of the array. - */ - - if (t->is_array()) - return t->array_size() * count_attribute_slots(t->element_type()); + *ClipDistanceArraySize = 0; - if (t->is_matrix()) - return t->matrix_columns; + if (!prog->IsES && prog->Version >= 130) { + /* From section 7.1 (Vertex Shader Special Variables) of the + * GLSL 1.30 spec: + * + * "It is an error for a shader to statically write both + * gl_ClipVertex and gl_ClipDistance." + * + * This does not apply to GLSL ES shaders, since GLSL ES defines neither + * gl_ClipVertex nor gl_ClipDistance. + */ + find_assignment_visitor clip_vertex("gl_ClipVertex"); + find_assignment_visitor clip_distance("gl_ClipDistance"); - return 1; + clip_vertex.run(shader->ir); + clip_distance.run(shader->ir); + if (clip_vertex.variable_found() && clip_distance.variable_found()) { + linker_error(prog, "%s shader writes to both `gl_ClipVertex' " + "and `gl_ClipDistance'\n", + _mesa_shader_stage_to_string(shader->Stage)); + return; + } + *UsesClipDistance = clip_distance.variable_found(); + ir_variable *clip_distance_var = + shader->symbols->get_variable("gl_ClipDistance"); + if (clip_distance_var) + *ClipDistanceArraySize = clip_distance_var->type->length; + } else { + *UsesClipDistance = false; + } } @@ -340,12 +459,12 @@ count_attribute_slots(const glsl_type *t) * * \param shader Vertex shader executable to be verified */ -bool +void validate_vertex_shader_executable(struct gl_shader_program *prog, struct gl_shader *shader) { if (shader == NULL) - return true; + return; /* From the GLSL 1.10 spec, page 48: * @@ -378,40 +497,12 @@ validate_vertex_shader_executable(struct gl_shader_program *prog, find.run(shader->ir); if (!find.variable_found()) { linker_error(prog, "vertex shader does not write to `gl_Position'\n"); - return false; - } - } - - prog->Vert.ClipDistanceArraySize = 0; - - if (!prog->IsES && prog->Version >= 130) { - /* From section 7.1 (Vertex Shader Special Variables) of the - * GLSL 1.30 spec: - * - * "It is an error for a shader to statically write both - * gl_ClipVertex and gl_ClipDistance." - * - * This does not apply to GLSL ES shaders, since GLSL ES defines neither - * gl_ClipVertex nor gl_ClipDistance. - */ - find_assignment_visitor clip_vertex("gl_ClipVertex"); - find_assignment_visitor clip_distance("gl_ClipDistance"); - - clip_vertex.run(shader->ir); - clip_distance.run(shader->ir); - if (clip_vertex.variable_found() && clip_distance.variable_found()) { - linker_error(prog, "vertex shader writes to both `gl_ClipVertex' " - "and `gl_ClipDistance'\n"); - return false; + return; } - prog->Vert.UsesClipDistance = clip_distance.variable_found(); - ir_variable *clip_distance_var = - shader->symbols->get_variable("gl_ClipDistance"); - if (clip_distance_var) - prog->Vert.ClipDistanceArraySize = clip_distance_var->type->length; } - return true; + analyze_clip_usage(prog, shader, &prog->Vert.UsesClipDistance, + &prog->Vert.ClipDistanceArraySize); } @@ -420,12 +511,12 @@ validate_vertex_shader_executable(struct gl_shader_program *prog, * * \param shader Fragment shader executable to be verified */ -bool +void validate_fragment_shader_executable(struct gl_shader_program *prog, struct gl_shader *shader) { if (shader == NULL) - return true; + return; find_assignment_visitor frag_color("gl_FragColor"); find_assignment_visitor frag_data("gl_FragData"); @@ -436,40 +527,40 @@ validate_fragment_shader_executable(struct gl_shader_program *prog, if (frag_color.variable_found() && frag_data.variable_found()) { linker_error(prog, "fragment shader writes to both " "`gl_FragColor' and `gl_FragData'\n"); - return false; } - - return true; } - /** - * Generate a string describing the mode of a variable + * Verify that a geometry shader executable meets all semantic requirements + * + * Also sets prog->Geom.VerticesIn, prog->Geom.UsesClipDistance, and + * prog->Geom.ClipDistanceArraySize as a side effect. + * + * \param shader Geometry shader executable to be verified */ -static const char * -mode_string(const ir_variable *var) +void +validate_geometry_shader_executable(struct gl_shader_program *prog, + struct gl_shader *shader) { - switch (var->mode) { - case ir_var_auto: - return (var->read_only) ? "global constant" : "global variable"; + if (shader == NULL) + return; - case ir_var_uniform: return "uniform"; - case ir_var_shader_in: return "shader input"; - case ir_var_shader_out: return "shader output"; + unsigned num_vertices = vertices_per_prim(prog->Geom.InputType); + prog->Geom.VerticesIn = num_vertices; - case ir_var_const_in: - case ir_var_temporary: - default: - assert(!"Should not get here."); - return "invalid variable"; - } + analyze_clip_usage(prog, shader, &prog->Geom.UsesClipDistance, + &prog->Geom.ClipDistanceArraySize); + + find_end_primitive_visitor end_primitive; + end_primitive.run(shader->ir); + prog->Geom.UsesEndPrimitive = end_primitive.end_primitive_found(); } /** * Perform validation of global variables used across multiple shaders */ -bool +void cross_validate_globals(struct gl_shader_program *prog, struct gl_shader **shader_list, unsigned num_shaders, @@ -489,13 +580,13 @@ cross_validate_globals(struct gl_shader_program *prog, if (var == NULL) continue; - if (uniforms_only && (var->mode != ir_var_uniform)) + if (uniforms_only && (var->data.mode != ir_var_uniform)) continue; /* Don't cross validate temporaries that are at global scope. These * will eventually get pulled into the shaders 'main'. */ - if (var->mode == ir_var_temporary) + if (var->data.mode == ir_var_temporary) continue; /* If a global with this name has already been seen, verify that the @@ -518,27 +609,31 @@ cross_validate_globals(struct gl_shader_program *prog, if (var->type->length != 0) { existing->type = var->type; } + } else if (var->type->is_record() + && existing->type->is_record() + && existing->type->record_compare(var->type)) { + existing->type = var->type; } else { linker_error(prog, "%s `%s' declared as type " "`%s' and type `%s'\n", mode_string(var), var->name, var->type->name, existing->type->name); - return false; + return; } } - if (var->explicit_location) { - if (existing->explicit_location - && (var->location != existing->location)) { + if (var->data.explicit_location) { + if (existing->data.explicit_location + && (var->data.location != existing->data.location)) { linker_error(prog, "explicit locations for %s " "`%s' have differing values\n", mode_string(var), var->name); - return false; + return; } - existing->location = var->location; - existing->explicit_location = true; + existing->data.location = var->data.location; + existing->data.explicit_location = true; } /* From the GLSL 4.20 specification: @@ -547,17 +642,25 @@ cross_validate_globals(struct gl_shader_program *prog, * opaque-uniform name. However, it is not an error to specify a * binding on some but not all declarations for the same name" */ - if (var->explicit_binding) { - if (existing->explicit_binding && - var->binding != existing->binding) { + if (var->data.explicit_binding) { + if (existing->data.explicit_binding && + var->data.binding != existing->data.binding) { linker_error(prog, "explicit bindings for %s " "`%s' have differing values\n", mode_string(var), var->name); - return false; + return; } - existing->binding = var->binding; - existing->explicit_binding = true; + existing->data.binding = var->data.binding; + existing->data.explicit_binding = true; + } + + if (var->type->contains_atomic() && + var->data.atomic.offset != existing->data.atomic.offset) { + linker_error(prog, "offset specifications for %s " + "`%s' have differing values\n", + mode_string(var), var->name); + return; } /* Validate layout qualifiers for gl_FragDepth. @@ -572,9 +675,9 @@ cross_validate_globals(struct gl_shader_program *prog, * of qualifiers." */ if (strcmp(var->name, "gl_FragDepth") == 0) { - bool layout_declared = var->depth_layout != ir_depth_layout_none; + bool layout_declared = var->data.depth_layout != ir_depth_layout_none; bool layout_differs = - var->depth_layout != existing->depth_layout; + var->data.depth_layout != existing->data.depth_layout; if (layout_declared && layout_differs) { linker_error(prog, @@ -583,7 +686,7 @@ cross_validate_globals(struct gl_shader_program *prog, "the same set of qualifiers."); } - if (var->used && layout_differs) { + if (var->data.used && layout_differs) { linker_error(prog, "If gl_FragDepth is redeclared with a layout " "qualifier in any fragment shader, it must be " @@ -614,7 +717,7 @@ cross_validate_globals(struct gl_shader_program *prog, linker_error(prog, "initializers for %s " "`%s' have differing values\n", mode_string(var), var->name); - return false; + return; } } else { /* If the first-seen instance of a particular uniform did not @@ -635,15 +738,15 @@ cross_validate_globals(struct gl_shader_program *prog, } } - if (var->has_initializer) { - if (existing->has_initializer + if (var->data.has_initializer) { + if (existing->data.has_initializer && (var->constant_initializer == NULL || existing->constant_initializer == NULL)) { linker_error(prog, "shared global variable `%s' has multiple " "non-constant initializers.\n", var->name); - return false; + return; } /* Some instance had an initializer, so keep track of that. In @@ -651,38 +754,42 @@ cross_validate_globals(struct gl_shader_program *prog, * otherwise) will propagate the existence to the variable * stored in the symbol table. */ - existing->has_initializer = true; + existing->data.has_initializer = true; } - if (existing->invariant != var->invariant) { + if (existing->data.invariant != var->data.invariant) { linker_error(prog, "declarations for %s `%s' have " "mismatching invariant qualifiers\n", mode_string(var), var->name); - return false; + return; } - if (existing->centroid != var->centroid) { + if (existing->data.centroid != var->data.centroid) { linker_error(prog, "declarations for %s `%s' have " "mismatching centroid qualifiers\n", mode_string(var), var->name); - return false; + return; + } + if (existing->data.sample != var->data.sample) { + linker_error(prog, "declarations for %s `%s` have " + "mismatching sample qualifiers\n", + mode_string(var), var->name); + return; } } else variables.add_variable(var); } } - - return true; } /** * Perform validation of uniforms used across multiple shader stages */ -bool +void cross_validate_uniforms(struct gl_shader_program *prog) { - return cross_validate_globals(prog, prog->_LinkedShaders, - MESA_SHADER_TYPES, true); + cross_validate_globals(prog, prog->_LinkedShaders, + MESA_SHADER_STAGES, true); } /** @@ -693,12 +800,12 @@ static bool interstage_cross_validate_uniform_blocks(struct gl_shader_program *prog) { unsigned max_num_uniform_blocks = 0; - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i]) max_num_uniform_blocks += prog->_LinkedShaders[i]->NumUniformBlocks; } - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { struct gl_shader *sh = prog->_LinkedShaders[i]; prog->UniformBlockStageIndex[i] = ralloc_array(prog, int, @@ -787,7 +894,7 @@ remap_variables(ir_instruction *inst, struct gl_shader *target, virtual ir_visitor_status visit(ir_dereference_variable *ir) { - if (ir->var->mode == ir_var_temporary) { + if (ir->var->data.mode == ir_var_temporary) { ir_variable *var = (ir_variable *) hash_table_find(temps, ir->var); assert(var != NULL); @@ -861,13 +968,13 @@ move_non_declarations(exec_list *instructions, exec_node *last, continue; ir_variable *var = inst->as_variable(); - if ((var != NULL) && (var->mode != ir_var_temporary)) + if ((var != NULL) && (var->data.mode != ir_var_temporary)) continue; assert(inst->as_assignment() || inst->as_call() || inst->as_if() /* for initializers with the ?: operator */ - || ((var != NULL) && (var->mode == ir_var_temporary))); + || ((var != NULL) && (var->data.mode == ir_var_temporary))); if (make_copies) { inst = inst->clone(target, NULL); @@ -907,7 +1014,7 @@ get_main_function_signature(gl_shader *sh) * We don't have to check for multiple definitions of main (in multiple * shaders) because that would have already been caught above. */ - ir_function_signature *sig = f->matching_signature(&void_parameters); + ir_function_signature *sig = f->matching_signature(NULL, &void_parameters); if ((sig != NULL) && sig->is_defined) { return sig; } @@ -924,20 +1031,421 @@ get_main_function_signature(gl_shader *sh) */ class array_sizing_visitor : public ir_hierarchical_visitor { public: + array_sizing_visitor() + : mem_ctx(ralloc_context(NULL)), + unnamed_interfaces(hash_table_ctor(0, hash_table_pointer_hash, + hash_table_pointer_compare)) + { + } + + ~array_sizing_visitor() + { + hash_table_dtor(this->unnamed_interfaces); + ralloc_free(this->mem_ctx); + } + virtual ir_visitor_status visit(ir_variable *var) { - if (var->type->is_array() && (var->type->length == 0)) { - const glsl_type *type = - glsl_type::get_array_instance(var->type->fields.array, - var->max_array_access + 1); - assert(type != NULL); - var->type = type; + fixup_type(&var->type, var->data.max_array_access); + if (var->type->is_interface()) { + if (interface_contains_unsized_arrays(var->type)) { + const glsl_type *new_type = + resize_interface_members(var->type, var->max_ifc_array_access); + var->type = new_type; + var->change_interface_type(new_type); + } + } else if (var->type->is_array() && + var->type->fields.array->is_interface()) { + if (interface_contains_unsized_arrays(var->type->fields.array)) { + const glsl_type *new_type = + resize_interface_members(var->type->fields.array, + var->max_ifc_array_access); + var->change_interface_type(new_type); + var->type = + glsl_type::get_array_instance(new_type, var->type->length); + } + } else if (const glsl_type *ifc_type = var->get_interface_type()) { + /* Store a pointer to the variable in the unnamed_interfaces + * hashtable. + */ + ir_variable **interface_vars = (ir_variable **) + hash_table_find(this->unnamed_interfaces, ifc_type); + if (interface_vars == NULL) { + interface_vars = rzalloc_array(mem_ctx, ir_variable *, + ifc_type->length); + hash_table_insert(this->unnamed_interfaces, interface_vars, + ifc_type); + } + unsigned index = ifc_type->field_index(var->name); + assert(index < ifc_type->length); + assert(interface_vars[index] == NULL); + interface_vars[index] = var; } return visit_continue; } + + /** + * For each unnamed interface block that was discovered while running the + * visitor, adjust the interface type to reflect the newly assigned array + * sizes, and fix up the ir_variable nodes to point to the new interface + * type. + */ + void fixup_unnamed_interface_types() + { + hash_table_call_foreach(this->unnamed_interfaces, + fixup_unnamed_interface_type, NULL); + } + +private: + /** + * If the type pointed to by \c type represents an unsized array, replace + * it with a sized array whose size is determined by max_array_access. + */ + static void fixup_type(const glsl_type **type, unsigned max_array_access) + { + if ((*type)->is_unsized_array()) { + *type = glsl_type::get_array_instance((*type)->fields.array, + max_array_access + 1); + assert(*type != NULL); + } + } + + /** + * Determine whether the given interface type contains unsized arrays (if + * it doesn't, array_sizing_visitor doesn't need to process it). + */ + static bool interface_contains_unsized_arrays(const glsl_type *type) + { + for (unsigned i = 0; i < type->length; i++) { + const glsl_type *elem_type = type->fields.structure[i].type; + if (elem_type->is_unsized_array()) + return true; + } + return false; + } + + /** + * Create a new interface type based on the given type, with unsized arrays + * replaced by sized arrays whose size is determined by + * max_ifc_array_access. + */ + static const glsl_type * + resize_interface_members(const glsl_type *type, + const unsigned *max_ifc_array_access) + { + unsigned num_fields = type->length; + glsl_struct_field *fields = new glsl_struct_field[num_fields]; + memcpy(fields, type->fields.structure, + num_fields * sizeof(*fields)); + for (unsigned i = 0; i < num_fields; i++) { + fixup_type(&fields[i].type, max_ifc_array_access[i]); + } + glsl_interface_packing packing = + (glsl_interface_packing) type->interface_packing; + const glsl_type *new_ifc_type = + glsl_type::get_interface_instance(fields, num_fields, + packing, type->name); + delete [] fields; + return new_ifc_type; + } + + static void fixup_unnamed_interface_type(const void *key, void *data, + void *) + { + const glsl_type *ifc_type = (const glsl_type *) key; + ir_variable **interface_vars = (ir_variable **) data; + unsigned num_fields = ifc_type->length; + glsl_struct_field *fields = new glsl_struct_field[num_fields]; + memcpy(fields, ifc_type->fields.structure, + num_fields * sizeof(*fields)); + bool interface_type_changed = false; + for (unsigned i = 0; i < num_fields; i++) { + if (interface_vars[i] != NULL && + fields[i].type != interface_vars[i]->type) { + fields[i].type = interface_vars[i]->type; + interface_type_changed = true; + } + } + if (!interface_type_changed) { + delete [] fields; + return; + } + glsl_interface_packing packing = + (glsl_interface_packing) ifc_type->interface_packing; + const glsl_type *new_ifc_type = + glsl_type::get_interface_instance(fields, num_fields, packing, + ifc_type->name); + delete [] fields; + for (unsigned i = 0; i < num_fields; i++) { + if (interface_vars[i] != NULL) + interface_vars[i]->change_interface_type(new_ifc_type); + } + } + + /** + * Memory context used to allocate the data in \c unnamed_interfaces. + */ + void *mem_ctx; + + /** + * Hash table from const glsl_type * to an array of ir_variable *'s + * pointing to the ir_variables constituting each unnamed interface block. + */ + hash_table *unnamed_interfaces; }; /** + * Performs the cross-validation of layout qualifiers specified in + * redeclaration of gl_FragCoord for the attached fragment shaders, + * and propagates them to the linked FS and linked shader program. + */ +static void +link_fs_input_layout_qualifiers(struct gl_shader_program *prog, + struct gl_shader *linked_shader, + struct gl_shader **shader_list, + unsigned num_shaders) +{ + linked_shader->redeclares_gl_fragcoord = false; + linked_shader->uses_gl_fragcoord = false; + linked_shader->origin_upper_left = false; + linked_shader->pixel_center_integer = false; + + if (linked_shader->Stage != MESA_SHADER_FRAGMENT || + (prog->Version < 150 && !prog->ARB_fragment_coord_conventions_enable)) + return; + + for (unsigned i = 0; i < num_shaders; i++) { + struct gl_shader *shader = shader_list[i]; + /* From the GLSL 1.50 spec, page 39: + * + * "If gl_FragCoord is redeclared in any fragment shader in a program, + * it must be redeclared in all the fragment shaders in that program + * that have a static use gl_FragCoord." + * + * Exclude the case when one of the 'linked_shader' or 'shader' redeclares + * gl_FragCoord with no layout qualifiers but the other one doesn't + * redeclare it. If we strictly follow GLSL 1.50 spec's language, it + * should be a link error. But, generating link error for this case will + * be a wrong behaviour which spec didn't intend to do and it could also + * break some applications. + */ + if ((linked_shader->redeclares_gl_fragcoord + && !shader->redeclares_gl_fragcoord + && shader->uses_gl_fragcoord + && (linked_shader->origin_upper_left + || linked_shader->pixel_center_integer)) + || (shader->redeclares_gl_fragcoord + && !linked_shader->redeclares_gl_fragcoord + && linked_shader->uses_gl_fragcoord + && (shader->origin_upper_left + || shader->pixel_center_integer))) { + linker_error(prog, "fragment shader defined with conflicting " + "layout qualifiers for gl_FragCoord\n"); + } + + /* From the GLSL 1.50 spec, page 39: + * + * "All redeclarations of gl_FragCoord in all fragment shaders in a + * single program must have the same set of qualifiers." + */ + if (linked_shader->redeclares_gl_fragcoord && shader->redeclares_gl_fragcoord + && (shader->origin_upper_left != linked_shader->origin_upper_left + || shader->pixel_center_integer != linked_shader->pixel_center_integer)) { + linker_error(prog, "fragment shader defined with conflicting " + "layout qualifiers for gl_FragCoord\n"); + } + + /* Update the linked shader state.  Note that uses_gl_fragcoord should + * accumulate the results.  The other values should replace.  If there + * are multiple redeclarations, all the fields except uses_gl_fragcoord + * are already known to be the same. + */ + if (shader->redeclares_gl_fragcoord || shader->uses_gl_fragcoord) { + linked_shader->redeclares_gl_fragcoord = + shader->redeclares_gl_fragcoord; + linked_shader->uses_gl_fragcoord = linked_shader->uses_gl_fragcoord + || shader->uses_gl_fragcoord; + linked_shader->origin_upper_left = shader->origin_upper_left; + linked_shader->pixel_center_integer = shader->pixel_center_integer; + } + } +} + +/** + * Performs the cross-validation of geometry shader max_vertices and + * primitive type layout qualifiers for the attached geometry shaders, + * and propagates them to the linked GS and linked shader program. + */ +static void +link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, + struct gl_shader *linked_shader, + struct gl_shader **shader_list, + unsigned num_shaders) +{ + linked_shader->Geom.VerticesOut = 0; + linked_shader->Geom.Invocations = 0; + linked_shader->Geom.InputType = PRIM_UNKNOWN; + linked_shader->Geom.OutputType = PRIM_UNKNOWN; + + /* No in/out qualifiers defined for anything but GLSL 1.50+ + * geometry shaders so far. + */ + if (linked_shader->Stage != MESA_SHADER_GEOMETRY || prog->Version < 150) + return; + + /* From the GLSL 1.50 spec, page 46: + * + * "All geometry shader output layout declarations in a program + * must declare the same layout and same value for + * max_vertices. There must be at least one geometry output + * layout declaration somewhere in a program, but not all + * geometry shaders (compilation units) are required to + * declare it." + */ + + for (unsigned i = 0; i < num_shaders; i++) { + struct gl_shader *shader = shader_list[i]; + + if (shader->Geom.InputType != PRIM_UNKNOWN) { + if (linked_shader->Geom.InputType != PRIM_UNKNOWN && + linked_shader->Geom.InputType != shader->Geom.InputType) { + linker_error(prog, "geometry shader defined with conflicting " + "input types\n"); + return; + } + linked_shader->Geom.InputType = shader->Geom.InputType; + } + + if (shader->Geom.OutputType != PRIM_UNKNOWN) { + if (linked_shader->Geom.OutputType != PRIM_UNKNOWN && + linked_shader->Geom.OutputType != shader->Geom.OutputType) { + linker_error(prog, "geometry shader defined with conflicting " + "output types\n"); + return; + } + linked_shader->Geom.OutputType = shader->Geom.OutputType; + } + + if (shader->Geom.VerticesOut != 0) { + if (linked_shader->Geom.VerticesOut != 0 && + linked_shader->Geom.VerticesOut != shader->Geom.VerticesOut) { + linker_error(prog, "geometry shader defined with conflicting " + "output vertex count (%d and %d)\n", + linked_shader->Geom.VerticesOut, + shader->Geom.VerticesOut); + return; + } + linked_shader->Geom.VerticesOut = shader->Geom.VerticesOut; + } + + if (shader->Geom.Invocations != 0) { + if (linked_shader->Geom.Invocations != 0 && + linked_shader->Geom.Invocations != shader->Geom.Invocations) { + linker_error(prog, "geometry shader defined with conflicting " + "invocation count (%d and %d)\n", + linked_shader->Geom.Invocations, + shader->Geom.Invocations); + return; + } + linked_shader->Geom.Invocations = shader->Geom.Invocations; + } + } + + /* Just do the intrastage -> interstage propagation right now, + * since we already know we're in the right type of shader program + * for doing it. + */ + if (linked_shader->Geom.InputType == PRIM_UNKNOWN) { + linker_error(prog, + "geometry shader didn't declare primitive input type\n"); + return; + } + prog->Geom.InputType = linked_shader->Geom.InputType; + + if (linked_shader->Geom.OutputType == PRIM_UNKNOWN) { + linker_error(prog, + "geometry shader didn't declare primitive output type\n"); + return; + } + prog->Geom.OutputType = linked_shader->Geom.OutputType; + + if (linked_shader->Geom.VerticesOut == 0) { + linker_error(prog, + "geometry shader didn't declare max_vertices\n"); + return; + } + prog->Geom.VerticesOut = linked_shader->Geom.VerticesOut; + + if (linked_shader->Geom.Invocations == 0) + linked_shader->Geom.Invocations = 1; + + prog->Geom.Invocations = linked_shader->Geom.Invocations; +} + + +/** + * Perform cross-validation of compute shader local_size_{x,y,z} layout + * qualifiers for the attached compute shaders, and propagate them to the + * linked CS and linked shader program. + */ +static void +link_cs_input_layout_qualifiers(struct gl_shader_program *prog, + struct gl_shader *linked_shader, + struct gl_shader **shader_list, + unsigned num_shaders) +{ + for (int i = 0; i < 3; i++) + linked_shader->Comp.LocalSize[i] = 0; + + /* This function is called for all shader stages, but it only has an effect + * for compute shaders. + */ + if (linked_shader->Stage != MESA_SHADER_COMPUTE) + return; + + /* From the ARB_compute_shader spec, in the section describing local size + * declarations: + * + * If multiple compute shaders attached to a single program object + * declare local work-group size, the declarations must be identical; + * otherwise a link-time error results. Furthermore, if a program + * object contains any compute shaders, at least one must contain an + * input layout qualifier specifying the local work sizes of the + * program, or a link-time error will occur. + */ + for (unsigned sh = 0; sh < num_shaders; sh++) { + struct gl_shader *shader = shader_list[sh]; + + if (shader->Comp.LocalSize[0] != 0) { + if (linked_shader->Comp.LocalSize[0] != 0) { + for (int i = 0; i < 3; i++) { + if (linked_shader->Comp.LocalSize[i] != + shader->Comp.LocalSize[i]) { + linker_error(prog, "compute shader defined with conflicting " + "local sizes\n"); + return; + } + } + } + for (int i = 0; i < 3; i++) + linked_shader->Comp.LocalSize[i] = shader->Comp.LocalSize[i]; + } + } + + /* Just do the intrastage -> interstage propagation right now, + * since we already know we're in the right type of shader program + * for doing it. + */ + if (linked_shader->Comp.LocalSize[0] == 0) { + linker_error(prog, "compute shader didn't declare local size\n"); + return; + } + for (int i = 0; i < 3; i++) + prog->Comp.LocalSize[i] = linked_shader->Comp.LocalSize[i]; +} + + +/** * Combine a group of shaders for a single stage to generate a linked shader * * \note @@ -955,21 +1463,21 @@ link_intrastage_shaders(void *mem_ctx, /* Check that global variables defined in multiple shaders are consistent. */ - if (!cross_validate_globals(prog, shader_list, num_shaders, false)) + cross_validate_globals(prog, shader_list, num_shaders, false); + if (!prog->LinkStatus) return NULL; /* Check that interface blocks defined in multiple shaders are consistent. */ - if (!validate_intrastage_interface_blocks((const gl_shader **)shader_list, - num_shaders)) + validate_intrastage_interface_blocks(prog, (const gl_shader **)shader_list, + num_shaders); + if (!prog->LinkStatus) return NULL; - /* Check that uniform blocks between shaders for a stage agree. */ - const int num_uniform_blocks = + /* Link up uniform blocks defined within this stage. */ + const unsigned num_uniform_blocks = link_uniform_blocks(mem_ctx, prog, shader_list, num_shaders, &uniform_blocks); - if (num_uniform_blocks < 0) - return NULL; /* Check that there is only a single definition of each function signature * across all shaders. @@ -991,18 +1499,17 @@ link_intrastage_shaders(void *mem_ctx, if (other == NULL) continue; - foreach_iter (exec_list_iterator, iter, *f) { - ir_function_signature *sig = - (ir_function_signature *) iter.get(); + foreach_list(n, &f->signatures) { + ir_function_signature *sig = (ir_function_signature *) n; - if (!sig->is_defined || sig->is_builtin) + if (!sig->is_defined || sig->is_builtin()) continue; ir_function_signature *other_sig = - other->exact_matching_signature(& sig->parameters); + other->exact_matching_signature(NULL, &sig->parameters); if ((other_sig != NULL) && other_sig->is_defined - && !other_sig->is_builtin) { + && !other_sig->is_builtin()) { linker_error(prog, "function `%s' is multiply defined", f->name); return NULL; @@ -1029,7 +1536,7 @@ link_intrastage_shaders(void *mem_ctx, if (main == NULL) { linker_error(prog, "%s shader lacks `main'\n", - _mesa_glsl_shader_target_name(shader_list[0]->Type)); + _mesa_shader_stage_to_string(shader_list[0]->Stage)); return NULL; } @@ -1041,6 +1548,10 @@ link_intrastage_shaders(void *mem_ctx, linked->NumUniformBlocks = num_uniform_blocks; ralloc_steal(linked, linked->UniformBlocks); + link_fs_input_layout_qualifiers(prog, linked, shader_list, num_shaders); + link_gs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders); + link_cs_input_layout_qualifiers(prog, linked, shader_list, num_shaders); + populate_symbol_table(linked); /* The a pointer to the main function in the final linked shader (i.e., the @@ -1063,50 +1574,60 @@ link_intrastage_shaders(void *mem_ctx, insertion_point, true, linked); } - /* Resolve initializers for global variables in the linked shader. - */ - unsigned num_linking_shaders = num_shaders; - for (unsigned i = 0; i < num_shaders; i++) - num_linking_shaders += shader_list[i]->num_builtins_to_link; + /* Check if any shader needs built-in functions. */ + bool need_builtins = false; + for (unsigned i = 0; i < num_shaders; i++) { + if (shader_list[i]->uses_builtin_functions) { + need_builtins = true; + break; + } + } - gl_shader **linking_shaders = - (gl_shader **) calloc(num_linking_shaders, sizeof(gl_shader *)); + bool ok; + if (need_builtins) { + /* Make a temporary array one larger than shader_list, which will hold + * the built-in function shader as well. + */ + gl_shader **linking_shaders = (gl_shader **) + calloc(num_shaders + 1, sizeof(gl_shader *)); + memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *)); + linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader(); - memcpy(linking_shaders, shader_list, - sizeof(linking_shaders[0]) * num_shaders); + ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1); - unsigned idx = num_shaders; - for (unsigned i = 0; i < num_shaders; i++) { - memcpy(&linking_shaders[idx], shader_list[i]->builtins_to_link, - sizeof(linking_shaders[0]) * shader_list[i]->num_builtins_to_link); - idx += shader_list[i]->num_builtins_to_link; + free(linking_shaders); + } else { + ok = link_function_calls(prog, linked, shader_list, num_shaders); } - assert(idx == num_linking_shaders); - if (!link_function_calls(prog, linked, linking_shaders, - num_linking_shaders)) { + if (!ok) { ctx->Driver.DeleteShader(ctx, linked); - linked = NULL; + return NULL; } - free(linking_shaders); - /* At this point linked should contain all of the linked IR, so * validate it to make sure nothing went wrong. */ - if (linked) - validate_ir_tree(linked->ir); + validate_ir_tree(linked->ir); + + /* Set the size of geometry shader input arrays */ + if (linked->Stage == MESA_SHADER_GEOMETRY) { + unsigned num_vertices = vertices_per_prim(prog->Geom.InputType); + geom_array_resize_visitor input_resize_visitor(num_vertices, prog); + foreach_list(n, linked->ir) { + ir_instruction *ir = (ir_instruction *) n; + ir->accept(&input_resize_visitor); + } + } /* Make a pass over all variable declarations to ensure that arrays with * unspecified sizes have a size specified. The size is inferred from the * max_array_access field. */ - if (linked != NULL) { - array_sizing_visitor v; - - v.run(linked->ir); - } + array_sizing_visitor v; + v.run(linked->ir); + v.fixup_unnamed_interface_types(); return linked; } @@ -1129,28 +1650,30 @@ link_intrastage_shaders(void *mem_ctx, static void update_array_sizes(struct gl_shader_program *prog) { - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] == NULL) continue; foreach_list(node, prog->_LinkedShaders[i]->ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); - if ((var == NULL) || (var->mode != ir_var_uniform && - var->mode != ir_var_shader_in && - var->mode != ir_var_shader_out) || + if ((var == NULL) || (var->data.mode != ir_var_uniform) || !var->type->is_array()) continue; /* GL_ARB_uniform_buffer_object says that std140 uniforms * will not be eliminated. Since we always do std140, just * don't resize arrays in UBOs. + * + * Atomic counters are supposed to get deterministic + * locations assigned based on the declaration ordering and + * sizes, array compaction would mess that up. */ - if (var->is_in_uniform_block()) + if (var->is_in_uniform_block() || var->type->contains_atomic()) continue; - unsigned int size = var->max_array_access; - for (unsigned j = 0; j < MESA_SHADER_TYPES; j++) { + unsigned int size = var->data.max_array_access; + for (unsigned j = 0; j < MESA_SHADER_STAGES; j++) { if (prog->_LinkedShaders[j] == NULL) continue; @@ -1160,8 +1683,8 @@ update_array_sizes(struct gl_shader_program *prog) continue; if (strcmp(var->name, other_var->name) == 0 && - other_var->max_array_access > size) { - size = other_var->max_array_access; + other_var->data.max_array_access > size) { + size = other_var->data.max_array_access; } } } @@ -1300,16 +1823,17 @@ assign_attribute_or_color_locations(gl_shader_program *prog, foreach_list(node, sh->ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); - if ((var == NULL) || (var->mode != (unsigned) direction)) + if ((var == NULL) || (var->data.mode != (unsigned) direction)) continue; - if (var->explicit_location) { - if ((var->location >= (int)(max_index + generic_base)) - || (var->location < 0)) { + if (var->data.explicit_location) { + if ((var->data.location >= (int)(max_index + generic_base)) + || (var->data.location < 0)) { linker_error(prog, "invalid explicit location %d specified for `%s'\n", - (var->location < 0) - ? var->location : var->location - generic_base, + (var->data.location < 0) + ? var->data.location + : var->data.location - generic_base, var->name); return false; } @@ -1318,8 +1842,8 @@ assign_attribute_or_color_locations(gl_shader_program *prog, if (prog->AttributeBindings->get(binding, var->name)) { assert(binding >= VERT_ATTRIB_GENERIC0); - var->location = binding; - var->is_unmatched_generic_inout = 0; + var->data.location = binding; + var->data.is_unmatched_generic_inout = 0; } } else if (target_index == MESA_SHADER_FRAGMENT) { unsigned binding; @@ -1327,11 +1851,11 @@ assign_attribute_or_color_locations(gl_shader_program *prog, if (prog->FragDataBindings->get(binding, var->name)) { assert(binding >= FRAG_RESULT_DATA0); - var->location = binding; - var->is_unmatched_generic_inout = 0; + var->data.location = binding; + var->data.is_unmatched_generic_inout = 0; if (prog->FragDataIndexBindings->get(index, var->name)) { - var->index = index; + var->data.index = index; } } } @@ -1341,9 +1865,9 @@ assign_attribute_or_color_locations(gl_shader_program *prog, * that it doesn't collide with other assigned locations. Otherwise, * add it to the list of variables that need linker-assigned locations. */ - const unsigned slots = count_attribute_slots(var->type); - if (var->location != -1) { - if (var->location >= generic_base && var->index < 1) { + const unsigned slots = var->type->count_attribute_slots(); + if (var->data.location != -1) { + if (var->data.location >= generic_base && var->data.index < 1) { /* From page 61 of the OpenGL 4.0 spec: * * "LinkProgram will fail if the attribute bindings assigned @@ -1352,10 +1876,12 @@ assign_attribute_or_color_locations(gl_shader_program *prog, * active attribute array, both of which require multiple * contiguous generic attributes." * - * Previous versions of the spec contain similar language but omit - * the bit about attribute arrays. + * I think above text prohibits the aliasing of explicit and + * automatic assignments. But, aliasing is allowed in manual + * assignments of attribute locations. See below comments for + * the details. * - * Page 61 of the OpenGL 4.0 spec also says: + * From OpenGL 4.0 spec, page 61: * * "It is possible for an application to bind more than one * attribute name to the same location. This is referred to as @@ -1368,29 +1894,84 @@ assign_attribute_or_color_locations(gl_shader_program *prog, * but implementations are not required to generate an error * in this case." * - * These two paragraphs are either somewhat contradictory, or I - * don't fully understand one or both of them. - */ - /* FINISHME: The code as currently written does not support - * FINISHME: attribute location aliasing (see comment above). + * From GLSL 4.30 spec, page 54: + * + * "A program will fail to link if any two non-vertex shader + * input variables are assigned to the same location. For + * vertex shaders, multiple input variables may be assigned + * to the same location using either layout qualifiers or via + * the OpenGL API. However, such aliasing is intended only to + * support vertex shaders where each execution path accesses + * at most one input per each location. Implementations are + * permitted, but not required, to generate link-time errors + * if they detect that every path through the vertex shader + * executable accesses multiple inputs assigned to any single + * location. For all shader types, a program will fail to link + * if explicit location assignments leave the linker unable + * to find space for other variables without explicit + * assignments." + * + * From OpenGL ES 3.0 spec, page 56: + * + * "Binding more than one attribute name to the same location + * is referred to as aliasing, and is not permitted in OpenGL + * ES Shading Language 3.00 vertex shaders. LinkProgram will + * fail when this condition exists. However, aliasing is + * possible in OpenGL ES Shading Language 1.00 vertex shaders. + * This will only work if only one of the aliased attributes + * is active in the executable program, or if no path through + * the shader consumes more than one attribute of a set of + * attributes aliased to the same location. A link error can + * occur if the linker determines that every path through the + * shader consumes multiple aliased attributes, but implemen- + * tations are not required to generate an error in this case." + * + * After looking at above references from OpenGL, OpenGL ES and + * GLSL specifications, we allow aliasing of vertex input variables + * in: OpenGL 2.0 (and above) and OpenGL ES 2.0. + * + * NOTE: This is not required by the spec but its worth mentioning + * here that we're not doing anything to make sure that no path + * through the vertex shader executable accesses multiple inputs + * assigned to any single location. */ + /* Mask representing the contiguous slots that will be used by * this attribute. */ - const unsigned attr = var->location - generic_base; + const unsigned attr = var->data.location - generic_base; const unsigned use_mask = (1 << slots) - 1; + const char *const string = (target_index == MESA_SHADER_VERTEX) + ? "vertex shader input" : "fragment shader output"; + + /* Generate a link error if the requested locations for this + * attribute exceed the maximum allowed attribute location. + */ + if (attr + slots > max_index) { + linker_error(prog, + "insufficient contiguous locations " + "available for %s `%s' %d %d %d", string, + var->name, used_locations, use_mask, attr); + return false; + } /* Generate a link error if the set of bits requested for this * attribute overlaps any previously allocated bits. */ if ((~(use_mask << attr) & used_locations) != used_locations) { - const char *const string = (target_index == MESA_SHADER_VERTEX) - ? "vertex shader input" : "fragment shader output"; - linker_error(prog, - "insufficient contiguous locations " - "available for %s `%s' %d %d %d", string, - var->name, used_locations, use_mask, attr); - return false; + if (target_index == MESA_SHADER_FRAGMENT || + (prog->IsES && prog->Version >= 300)) { + linker_error(prog, + "overlapping location is assigned " + "to %s `%s' %d %d %d\n", string, + var->name, used_locations, use_mask, attr); + return false; + } else { + linker_warning(prog, + "overlapping location is assigned " + "to %s `%s' %d %d %d\n", string, + var->name, used_locations, use_mask, attr); + } } used_locations |= (use_mask << attr); @@ -1443,8 +2024,8 @@ assign_attribute_or_color_locations(gl_shader_program *prog, return false; } - to_assign[i].var->location = generic_base + location; - to_assign[i].var->is_unmatched_generic_inout = 0; + to_assign[i].var->data.location = generic_base + location; + to_assign[i].var->data.is_unmatched_generic_inout = 0; used_locations |= (use_mask << location); } @@ -1461,15 +2042,15 @@ demote_shader_inputs_and_outputs(gl_shader *sh, enum ir_variable_mode mode) foreach_list(node, sh->ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); - if ((var == NULL) || (var->mode != int(mode))) + if ((var == NULL) || (var->data.mode != int(mode))) continue; /* A shader 'in' or 'out' variable is only really an input or output if * its value is used by other shader stages. This will cause the variable * to have a location assigned. */ - if (var->is_unmatched_generic_inout) { - var->mode = ir_var_auto; + if (var->data.is_unmatched_generic_inout) { + var->data.mode = ir_var_auto; } } } @@ -1497,12 +2078,12 @@ store_fragdepth_layout(struct gl_shader_program *prog) foreach_list(node, ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); - if (var == NULL || var->mode != ir_var_shader_out) { + if (var == NULL || var->data.mode != ir_var_shader_out) { continue; } if (strcmp(var->name, "gl_FragDepth") == 0) { - switch (var->depth_layout) { + switch (var->data.depth_layout) { case ir_depth_layout_none: prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_NONE; return; @@ -1529,81 +2110,54 @@ store_fragdepth_layout(struct gl_shader_program *prog) /** * Validate the resources used by a program versus the implementation limits */ -static bool +static void check_resources(struct gl_context *ctx, struct gl_shader_program *prog) { - static const char *const shader_names[MESA_SHADER_TYPES] = { - "vertex", "geometry", "fragment" - }; - - const unsigned max_samplers[MESA_SHADER_TYPES] = { - ctx->Const.VertexProgram.MaxTextureImageUnits, - ctx->Const.GeometryProgram.MaxTextureImageUnits, - ctx->Const.FragmentProgram.MaxTextureImageUnits - }; - - const unsigned max_default_uniform_components[MESA_SHADER_TYPES] = { - ctx->Const.VertexProgram.MaxUniformComponents, - ctx->Const.GeometryProgram.MaxUniformComponents, - ctx->Const.FragmentProgram.MaxUniformComponents - }; - - const unsigned max_combined_uniform_components[MESA_SHADER_TYPES] = { - ctx->Const.VertexProgram.MaxCombinedUniformComponents, - ctx->Const.GeometryProgram.MaxCombinedUniformComponents, - ctx->Const.FragmentProgram.MaxCombinedUniformComponents - }; - - const unsigned max_uniform_blocks[MESA_SHADER_TYPES] = { - ctx->Const.VertexProgram.MaxUniformBlocks, - ctx->Const.GeometryProgram.MaxUniformBlocks, - ctx->Const.FragmentProgram.MaxUniformBlocks - }; - - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { struct gl_shader *sh = prog->_LinkedShaders[i]; if (sh == NULL) continue; - if (sh->num_samplers > max_samplers[i]) { + if (sh->num_samplers > ctx->Const.Program[i].MaxTextureImageUnits) { linker_error(prog, "Too many %s shader texture samplers", - shader_names[i]); + _mesa_shader_stage_to_string(i)); } - if (sh->num_uniform_components > max_default_uniform_components[i]) { + if (sh->num_uniform_components > + ctx->Const.Program[i].MaxUniformComponents) { if (ctx->Const.GLSLSkipStrictMaxUniformLimitCheck) { linker_warning(prog, "Too many %s shader default uniform block " "components, but the driver will try to optimize " "them out; this is non-portable out-of-spec " "behavior\n", - shader_names[i]); + _mesa_shader_stage_to_string(i)); } else { linker_error(prog, "Too many %s shader default uniform block " "components", - shader_names[i]); + _mesa_shader_stage_to_string(i)); } } if (sh->num_combined_uniform_components > - max_combined_uniform_components[i]) { + ctx->Const.Program[i].MaxCombinedUniformComponents) { if (ctx->Const.GLSLSkipStrictMaxUniformLimitCheck) { linker_warning(prog, "Too many %s shader uniform components, " "but the driver will try to optimize them out; " "this is non-portable out-of-spec behavior\n", - shader_names[i]); + _mesa_shader_stage_to_string(i)); } else { linker_error(prog, "Too many %s shader uniform components", - shader_names[i]); + _mesa_shader_stage_to_string(i)); } } } - unsigned blocks[MESA_SHADER_TYPES] = {0}; + unsigned blocks[MESA_SHADER_STAGES] = {0}; unsigned total_uniform_blocks = 0; for (unsigned i = 0; i < prog->NumUniformBlocks; i++) { - for (unsigned j = 0; j < MESA_SHADER_TYPES; j++) { + for (unsigned j = 0; j < MESA_SHADER_STAGES; j++) { if (prog->UniformBlockStageIndex[j][i] != -1) { blocks[j]++; total_uniform_blocks++; @@ -1615,19 +2169,59 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) prog->NumUniformBlocks, ctx->Const.MaxCombinedUniformBlocks); } else { - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { - if (blocks[i] > max_uniform_blocks[i]) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + const unsigned max_uniform_blocks = + ctx->Const.Program[i].MaxUniformBlocks; + if (blocks[i] > max_uniform_blocks) { linker_error(prog, "Too many %s uniform blocks (%d/%d)", - shader_names[i], + _mesa_shader_stage_to_string(i), blocks[i], - max_uniform_blocks[i]); + max_uniform_blocks); break; } } } } +} + +/** + * Validate shader image resources. + */ +static void +check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog) +{ + unsigned total_image_units = 0; + unsigned fragment_outputs = 0; + + if (!ctx->Extensions.ARB_shader_image_load_store) + return; + + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + struct gl_shader *sh = prog->_LinkedShaders[i]; + + if (sh) { + if (sh->NumImages > ctx->Const.Program[i].MaxImageUniforms) + linker_error(prog, "Too many %s shader image uniforms", + _mesa_shader_stage_to_string(i)); + + total_image_units += sh->NumImages; + + if (i == MESA_SHADER_FRAGMENT) { + foreach_list(node, sh->ir) { + ir_variable *var = ((ir_instruction *)node)->as_variable(); + if (var && var->data.mode == ir_var_shader_out) + fragment_outputs += var->type->count_attribute_slots(); + } + } + } + } + + if (total_image_units > ctx->Const.MaxCombinedImageUniforms) + linker_error(prog, "Too many combined image uniforms"); - return prog->LinkStatus; + if (total_image_units + fragment_outputs > + ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs) + linker_error(prog, "Too many combined image uniforms and fragment outputs"); } void @@ -1638,7 +2232,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) void *mem_ctx = ralloc_context(NULL); // temporary linker context - prog->LinkStatus = false; + prog->LinkStatus = true; /* All error paths will set this to false */ prog->Validated = false; prog->_Used = false; @@ -1648,21 +2242,26 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) ralloc_free(prog->UniformBlocks); prog->UniformBlocks = NULL; prog->NumUniformBlocks = 0; - for (int i = 0; i < MESA_SHADER_TYPES; i++) { + for (int i = 0; i < MESA_SHADER_STAGES; i++) { ralloc_free(prog->UniformBlockStageIndex[i]); prog->UniformBlockStageIndex[i] = NULL; } + ralloc_free(prog->AtomicBuffers); + prog->AtomicBuffers = NULL; + prog->NumAtomicBuffers = 0; + prog->ARB_fragment_coord_conventions_enable = false; + /* Separate the shaders into groups based on their type. */ - struct gl_shader **vert_shader_list; - unsigned num_vert_shaders = 0; - struct gl_shader **frag_shader_list; - unsigned num_frag_shaders = 0; + struct gl_shader **shader_list[MESA_SHADER_STAGES]; + unsigned num_shaders[MESA_SHADER_STAGES]; - vert_shader_list = (struct gl_shader **) - calloc(2 * prog->NumShaders, sizeof(struct gl_shader *)); - frag_shader_list = &vert_shader_list[prog->NumShaders]; + for (int i = 0; i < MESA_SHADER_STAGES; i++) { + shader_list[i] = (struct gl_shader **) + calloc(prog->NumShaders, sizeof(struct gl_shader *)); + num_shaders[i] = 0; + } unsigned min_version = UINT_MAX; unsigned max_version = 0; @@ -1678,30 +2277,18 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) goto done; } - switch (prog->Shaders[i]->Type) { - case GL_VERTEX_SHADER: - vert_shader_list[num_vert_shaders] = prog->Shaders[i]; - num_vert_shaders++; - break; - case GL_FRAGMENT_SHADER: - frag_shader_list[num_frag_shaders] = prog->Shaders[i]; - num_frag_shaders++; - break; - case GL_GEOMETRY_SHADER: - /* FINISHME: Support geometry shaders. */ - assert(prog->Shaders[i]->Type != GL_GEOMETRY_SHADER); - break; - } + prog->ARB_fragment_coord_conventions_enable |= + prog->Shaders[i]->ARB_fragment_coord_conventions_enable; + + gl_shader_stage shader_type = prog->Shaders[i]->Stage; + shader_list[shader_type][num_shaders[shader_type]] = prog->Shaders[i]; + num_shaders[shader_type]++; } - /* Previous to GLSL version 1.30, different compilation units could mix and - * match shading language versions. With GLSL 1.30 and later, the versions - * of all shaders must match. - * - * GLSL ES has never allowed mixing of shading language versions. + /* In desktop GLSL, different shader versions may be linked together. In + * GLSL ES, all shader versions must be the same. */ - if ((is_es_prog || max_version >= 130) - && min_version != max_version) { + if (is_es_prog && min_version != max_version) { linker_error(prog, "all shaders must use same shading " "language version\n"); goto done; @@ -1710,7 +2297,24 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) prog->Version = max_version; prog->IsES = is_es_prog; - for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) { + /* Geometry shaders have to be linked with vertex shaders. + */ + if (num_shaders[MESA_SHADER_GEOMETRY] > 0 && + num_shaders[MESA_SHADER_VERTEX] == 0 && + !prog->SeparateShader) { + linker_error(prog, "Geometry shader must be linked with " + "vertex shader\n"); + goto done; + } + + /* Compute shaders have additional restrictions. */ + if (num_shaders[MESA_SHADER_COMPUTE] > 0 && + num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) { + linker_error(prog, "Compute shaders may not be linked with any other " + "type of shader\n"); + } + + for (unsigned int i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] != NULL) ctx->Driver.DeleteShader(ctx, prog->_LinkedShaders[i]); @@ -1719,74 +2323,83 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) /* Link all shaders for a particular stage and validate the result. */ - if (num_vert_shaders > 0) { - gl_shader *const sh = - link_intrastage_shaders(mem_ctx, ctx, prog, vert_shader_list, - num_vert_shaders); + for (int stage = 0; stage < MESA_SHADER_STAGES; stage++) { + if (num_shaders[stage] > 0) { + gl_shader *const sh = + link_intrastage_shaders(mem_ctx, ctx, prog, shader_list[stage], + num_shaders[stage]); - if (sh == NULL) - goto done; + if (!prog->LinkStatus) + goto done; - if (!validate_vertex_shader_executable(prog, sh)) - goto done; + switch (stage) { + case MESA_SHADER_VERTEX: + validate_vertex_shader_executable(prog, sh); + break; + case MESA_SHADER_GEOMETRY: + validate_geometry_shader_executable(prog, sh); + break; + case MESA_SHADER_FRAGMENT: + validate_fragment_shader_executable(prog, sh); + break; + } + if (!prog->LinkStatus) + goto done; - _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_VERTEX], - sh); + _mesa_reference_shader(ctx, &prog->_LinkedShaders[stage], sh); + } } - if (num_frag_shaders > 0) { - gl_shader *const sh = - link_intrastage_shaders(mem_ctx, ctx, prog, frag_shader_list, - num_frag_shaders); - - if (sh == NULL) - goto done; - - if (!validate_fragment_shader_executable(prog, sh)) - goto done; - - _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_FRAGMENT], - sh); - } + if (num_shaders[MESA_SHADER_GEOMETRY] > 0) + prog->LastClipDistanceArraySize = prog->Geom.ClipDistanceArraySize; + else if (num_shaders[MESA_SHADER_VERTEX] > 0) + prog->LastClipDistanceArraySize = prog->Vert.ClipDistanceArraySize; + else + prog->LastClipDistanceArraySize = 0; /* Not used */ /* Here begins the inter-stage linking phase. Some initial validation is * performed, then locations are assigned for uniforms, attributes, and * varyings. */ - if (cross_validate_uniforms(prog)) { - unsigned prev; + cross_validate_uniforms(prog); + if (!prog->LinkStatus) + goto done; - for (prev = 0; prev < MESA_SHADER_TYPES; prev++) { - if (prog->_LinkedShaders[prev] != NULL) - break; - } + unsigned prev; - /* Validate the inputs of each stage with the output of the preceding - * stage. - */ - for (unsigned i = prev + 1; i < MESA_SHADER_TYPES; i++) { - if (prog->_LinkedShaders[i] == NULL) - continue; + for (prev = 0; prev <= MESA_SHADER_FRAGMENT; prev++) { + if (prog->_LinkedShaders[prev] != NULL) + break; + } - if (!validate_interstage_interface_blocks(prog->_LinkedShaders[prev], - prog->_LinkedShaders[i])) { - linker_error(prog, "interface block mismatch between shader stages\n"); - goto done; - } + /* Validate the inputs of each stage with the output of the preceding + * stage. + */ + for (unsigned i = prev + 1; i <= MESA_SHADER_FRAGMENT; i++) { + if (prog->_LinkedShaders[i] == NULL) + continue; - if (!cross_validate_outputs_to_inputs(prog, - prog->_LinkedShaders[prev], - prog->_LinkedShaders[i])) - goto done; + validate_interstage_inout_blocks(prog, prog->_LinkedShaders[prev], + prog->_LinkedShaders[i]); + if (!prog->LinkStatus) + goto done; - prev = i; - } + cross_validate_outputs_to_inputs(prog, + prog->_LinkedShaders[prev], + prog->_LinkedShaders[i]); + if (!prog->LinkStatus) + goto done; - prog->LinkStatus = true; + prev = i; } + /* Cross-validate uniform blocks between shader stages */ + validate_interstage_uniform_blocks(prog, prog->_LinkedShaders, + MESA_SHADER_STAGES); + if (!prog->LinkStatus) + goto done; - for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned int i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] != NULL) lower_named_interface_blocks(mem_ctx, prog->_LinkedShaders[i]); } @@ -1811,7 +2424,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) * uniforms, and varyings. Later optimization could possibly make * some of that unused. */ - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] == NULL) continue; @@ -1823,23 +2436,17 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) lower_clip_distance(prog->_LinkedShaders[i]); } - unsigned max_unroll = ctx->ShaderCompilerOptions[i].MaxUnrollIterations; - - while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, max_unroll, &ctx->ShaderCompilerOptions[i])) + while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, + &ctx->ShaderCompilerOptions[i], + ctx->Const.NativeIntegers)) ; } /* Mark all generic shader inputs and outputs as unpaired. */ - if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) { - link_invalidate_variable_locations( - prog->_LinkedShaders[MESA_SHADER_VERTEX], - VERT_ATTRIB_GENERIC0, VARYING_SLOT_VAR0); - } - /* FINISHME: Geometry shaders not implemented yet */ - if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) { - link_invalidate_variable_locations( - prog->_LinkedShaders[MESA_SHADER_FRAGMENT], - VARYING_SLOT_VAR0, FRAG_RESULT_DATA0); + for (unsigned i = MESA_SHADER_VERTEX; i <= MESA_SHADER_FRAGMENT; i++) { + if (prog->_LinkedShaders[i] != NULL) { + link_invalidate_variable_locations(prog->_LinkedShaders[i]->ir); + } } /* FINISHME: The value of the max_attribute_index parameter is @@ -1856,7 +2463,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } unsigned first; - for (first = 0; first < MESA_SHADER_TYPES; first++) { + for (first = 0; first <= MESA_SHADER_FRAGMENT; first++) { if (prog->_LinkedShaders[first] != NULL) break; } @@ -1869,7 +2476,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) * non-zero, but the program object has no vertex or geometry * shader; */ - if (first >= MESA_SHADER_FRAGMENT) { + if (first == MESA_SHADER_FRAGMENT) { linker_error(prog, "Transform feedback varyings specified, but " "no vertex or geometry shader is present."); goto done; @@ -1888,7 +2495,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) * eliminated if they are (transitively) not used in a later stage. */ int last, next; - for (last = MESA_SHADER_TYPES-1; last >= 0; last--) { + for (last = MESA_SHADER_FRAGMENT; last >= 0; last--) { if (prog->_LinkedShaders[last] != NULL) break; } @@ -1896,20 +2503,22 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) if (last >= 0 && last < MESA_SHADER_FRAGMENT) { gl_shader *const sh = prog->_LinkedShaders[last]; - if (num_tfeedback_decls != 0) { + if (num_tfeedback_decls != 0 || prog->SeparateShader) { /* There was no fragment shader, but we still have to assign varying * locations for use by transform feedback. */ if (!assign_varying_locations(ctx, mem_ctx, prog, sh, NULL, - num_tfeedback_decls, tfeedback_decls)) + num_tfeedback_decls, tfeedback_decls, + 0)) goto done; } do_dead_builtin_varyings(ctx, sh, NULL, num_tfeedback_decls, tfeedback_decls); - demote_shader_inputs_and_outputs(sh, ir_var_shader_out); + if (!prog->SeparateShader) + demote_shader_inputs_and_outputs(sh, ir_var_shader_out); /* Eliminate code that is now dead due to unused outputs being demoted. */ @@ -1924,7 +2533,16 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) do_dead_builtin_varyings(ctx, NULL, sh, num_tfeedback_decls, tfeedback_decls); - demote_shader_inputs_and_outputs(sh, ir_var_shader_in); + if (prog->SeparateShader) { + if (!assign_varying_locations(ctx, mem_ctx, prog, + NULL /* producer */, + sh /* consumer */, + 0 /* num_tfeedback_decls */, + NULL /* tfeedback_decls */, + 0 /* gs_input_vertices */)) + goto done; + } else + demote_shader_inputs_and_outputs(sh, ir_var_shader_in); while (do_dead_code(sh->ir, false)) ; @@ -1937,10 +2555,12 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) gl_shader *const sh_i = prog->_LinkedShaders[i]; gl_shader *const sh_next = prog->_LinkedShaders[next]; + unsigned gs_input_vertices = + next == MESA_SHADER_GEOMETRY ? prog->Geom.VerticesIn : 0; if (!assign_varying_locations(ctx, mem_ctx, prog, sh_i, sh_next, next == MESA_SHADER_FRAGMENT ? num_tfeedback_decls : 0, - tfeedback_decls)) + tfeedback_decls, gs_input_vertices)) goto done; do_dead_builtin_varyings(ctx, sh_i, sh_next, @@ -1958,7 +2578,9 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) ; /* This must be done after all dead varyings are eliminated. */ - if (!check_against_varying_limit(ctx, prog, sh_next)) + if (!check_against_output_limit(ctx, prog, sh_i)) + goto done; + if (!check_against_input_limit(ctx, prog, sh_next)) goto done; next = i; @@ -1969,17 +2591,23 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) update_array_sizes(prog); link_assign_uniform_locations(prog); + link_assign_atomic_counter_resources(ctx, prog); store_fragdepth_layout(prog); - if (!check_resources(ctx, prog)) + check_resources(ctx, prog); + check_image_resources(ctx, prog); + link_check_atomic_counter_resources(ctx, prog); + + if (!prog->LinkStatus) goto done; /* OpenGL ES requires that a vertex shader and a fragment shader both be - * present in a linked program. By checking prog->IsES, we also - * catch the GL_ARB_ES2_compatibility case. + * present in a linked program. GL_ARB_ES2_compatibility doesn't say + * anything about shader linking when one of the shaders (vertex or + * fragment shader) is absent. So, the extension shouldn't change the + * behavior specified in GLSL specification. */ - if (!prog->InternalSeparateShader && - (ctx->API == API_OPENGLES2 || prog->IsES)) { + if (!prog->SeparateShader && ctx->API == API_OPENGLES2) { if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { linker_error(prog, "program lacks a vertex shader\n"); } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { @@ -1990,12 +2618,16 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) /* FINISHME: Assign fragment shader output locations. */ done: - free(vert_shader_list); - - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + free(shader_list[i]); if (prog->_LinkedShaders[i] == NULL) continue; + /* Do a final validation step to make sure that the IR wasn't + * invalidated by any modifications performed after intrastage linking. + */ + validate_ir_tree(prog->_LinkedShaders[i]->ir); + /* Retain any live IR, but trash the rest. */ reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir); diff --git a/dist/Mesa/src/glsl/linker.h b/dist/Mesa/src/glsl/linker.h index c55ba227d..130915db4 100644 --- a/dist/Mesa/src/glsl/linker.h +++ b/dist/Mesa/src/glsl/linker.h @@ -31,8 +31,7 @@ link_function_calls(gl_shader_program *prog, gl_shader *main, gl_shader **shader_list, unsigned num_shaders); extern void -link_invalidate_variable_locations(gl_shader *sh, enum ir_variable_mode mode, - int generic_base); +link_invalidate_variable_locations(exec_list *ir); extern void link_assign_uniform_locations(struct gl_shader_program *prog); @@ -53,20 +52,34 @@ extern bool link_uniform_blocks_are_compatible(const gl_uniform_block *a, const gl_uniform_block *b); -extern int +extern unsigned link_uniform_blocks(void *mem_ctx, struct gl_shader_program *prog, struct gl_shader **shader_list, unsigned num_shaders, struct gl_uniform_block **blocks_ret); -bool -validate_intrastage_interface_blocks(const gl_shader **shader_list, +void +validate_intrastage_interface_blocks(struct gl_shader_program *prog, + const gl_shader **shader_list, unsigned num_shaders); -bool -validate_interstage_interface_blocks(const gl_shader *producer, - const gl_shader *consumer); +void +validate_interstage_inout_blocks(struct gl_shader_program *prog, + const gl_shader *producer, + const gl_shader *consumer); + +void +validate_interstage_uniform_blocks(struct gl_shader_program *prog, + gl_shader **stages, int num_stages); + +extern void +link_assign_atomic_counter_resources(struct gl_context *ctx, + struct gl_shader_program *prog); + +extern void +link_check_atomic_counter_resources(struct gl_context *ctx, + struct gl_shader_program *prog); /** * Class for processing all of the leaf fields of a variable that corresponds @@ -166,7 +179,4 @@ linker_error(gl_shader_program *prog, const char *fmt, ...); void linker_warning(gl_shader_program *prog, const char *fmt, ...); -unsigned -count_attribute_slots(const glsl_type *t); - #endif /* GLSL_LINKER_H */ diff --git a/dist/Mesa/src/glsl/loop_analysis.cpp b/dist/Mesa/src/glsl/loop_analysis.cpp index 40897bb6f..d6a9ac775 100644 --- a/dist/Mesa/src/glsl/loop_analysis.cpp +++ b/dist/Mesa/src/glsl/loop_analysis.cpp @@ -33,6 +33,46 @@ static bool all_expression_operands_are_loop_constant(ir_rvalue *, static ir_rvalue *get_basic_induction_increment(ir_assignment *, hash_table *); +/** + * Record the fact that the given loop variable was referenced inside the loop. + * + * \arg in_assignee is true if the reference was on the LHS of an assignment. + * + * \arg in_conditional_code_or_nested_loop is true if the reference occurred + * inside an if statement or a nested loop. + * + * \arg current_assignment is the ir_assignment node that the loop variable is + * on the LHS of, if any (ignored if \c in_assignee is false). + */ +void +loop_variable::record_reference(bool in_assignee, + bool in_conditional_code_or_nested_loop, + ir_assignment *current_assignment) +{ + if (in_assignee) { + assert(current_assignment != NULL); + + if (in_conditional_code_or_nested_loop || + current_assignment->condition != NULL) { + this->conditional_or_nested_assignment = true; + } + + if (this->first_assignment == NULL) { + assert(this->num_assignments == 0); + + this->first_assignment = current_assignment; + } + + this->num_assignments++; + } else if (this->first_assignment == current_assignment) { + /* This catches the case where the variable is used in the RHS of an + * assignment where it is also in the LHS. + */ + this->read_before_write = true; + } +} + + loop_state::loop_state() { this->ht = hash_table_ctor(0, hash_table_pointer_hash, @@ -94,7 +134,7 @@ loop_terminator * loop_variable_state::insert(ir_if *if_stmt) { void *mem_ctx = ralloc_parent(this); - loop_terminator *t = rzalloc(mem_ctx, loop_terminator); + loop_terminator *t = new(mem_ctx) loop_terminator(); t->ir = if_stmt; this->terminators.push_tail(t); @@ -103,6 +143,34 @@ loop_variable_state::insert(ir_if *if_stmt) } +/** + * If the given variable already is recorded in the state for this loop, + * return the corresponding loop_variable object that records information + * about it. + * + * Otherwise, create a new loop_variable object to record information about + * the variable, and set its \c read_before_write field appropriately based on + * \c in_assignee. + * + * \arg in_assignee is true if this variable was encountered on the LHS of an + * assignment. + */ +loop_variable * +loop_variable_state::get_or_insert(ir_variable *var, bool in_assignee) +{ + loop_variable *lv = this->get(var); + + if (lv == NULL) { + lv = this->insert(var); + lv->read_before_write = !in_assignee; + } + + return lv; +} + + +namespace { + class loop_analysis : public ir_hierarchical_visitor { public: loop_analysis(loop_state *loops); @@ -128,6 +196,7 @@ public: exec_list state; }; +} /* anonymous namespace */ loop_analysis::loop_analysis(loop_state *loops) : loops(loops), if_statement_depth(0), current_assignment(NULL) @@ -153,16 +222,16 @@ loop_analysis::visit(ir_loop_jump *ir) ir_visitor_status -loop_analysis::visit_enter(ir_call *ir) +loop_analysis::visit_enter(ir_call *) { - /* If we're not somewhere inside a loop, there's nothing to do. */ - if (this->state.is_empty()) - return visit_continue; - - loop_variable_state *const ls = - (loop_variable_state *) this->state.get_head(); + /* Mark every loop that we're currently analyzing as containing an ir_call + * (even those at outer nesting levels). + */ + foreach_list(node, &this->state) { + loop_variable_state *const ls = (loop_variable_state *) node; + ls->contains_calls = true; + } - ls->contains_calls = true; return visit_continue_with_parent; } @@ -175,35 +244,18 @@ loop_analysis::visit(ir_dereference_variable *ir) if (this->state.is_empty()) return visit_continue; - loop_variable_state *const ls = - (loop_variable_state *) this->state.get_head(); - - ir_variable *var = ir->variable_referenced(); - loop_variable *lv = ls->get(var); - - if (lv == NULL) { - lv = ls->insert(var); - lv->read_before_write = !this->in_assignee; - } - - if (this->in_assignee) { - assert(this->current_assignment != NULL); + bool nested = false; - lv->conditional_assignment = (this->if_statement_depth > 0) - || (this->current_assignment->condition != NULL); + foreach_list(node, &this->state) { + loop_variable_state *const ls = (loop_variable_state *) node; - if (lv->first_assignment == NULL) { - assert(lv->num_assignments == 0); - - lv->first_assignment = this->current_assignment; - } + ir_variable *var = ir->variable_referenced(); + loop_variable *lv = ls->get_or_insert(var, this->in_assignee); - lv->num_assignments++; - } else if (lv->first_assignment == this->current_assignment) { - /* This catches the case where the variable is used in the RHS of an - * assignment where it is also in the LHS. - */ - lv->read_before_write = true; + lv->record_reference(this->in_assignee, + nested || this->if_statement_depth > 0, + this->current_assignment); + nested = true; } return visit_continue; @@ -284,7 +336,7 @@ loop_analysis::visit_leave(ir_loop *ir) foreach_list_safe(node, &ls->variables) { loop_variable *lv = (loop_variable *) node; - if (lv->conditional_assignment || (lv->num_assignments > 1)) + if (lv->conditional_or_nested_assignment || (lv->num_assignments > 1)) continue; /* Process the RHS of the assignment. If all of the variables @@ -324,9 +376,10 @@ loop_analysis::visit_leave(ir_loop *ir) assert(lv->num_assignments == 1); assert(lv->first_assignment != NULL); - /* The assignmnet to the variable in the loop must be unconditional. + /* The assignment to the variable in the loop must be unconditional and + * not inside a nested loop. */ - if (lv->conditional_assignment) + if (lv->conditional_or_nested_assignment) continue; /* Basic loop induction variables have a single assignment in the loop @@ -336,8 +389,6 @@ loop_analysis::visit_leave(ir_loop *ir) ir_rvalue *const inc = get_basic_induction_increment(lv->first_assignment, ls->var_hash); if (inc != NULL) { - lv->iv_scale = NULL; - lv->biv = lv->var; lv->increment = inc; lv->remove(); @@ -345,6 +396,75 @@ loop_analysis::visit_leave(ir_loop *ir) } } + /* Search the loop terminating conditions for those of the form 'i < c' + * where i is a loop induction variable, c is a constant, and < is any + * relative operator. From each of these we can infer an iteration count. + * Also figure out which terminator (if any) produces the smallest + * iteration count--this is the limiting terminator. + */ + foreach_list(node, &ls->terminators) { + loop_terminator *t = (loop_terminator *) node; + ir_if *if_stmt = t->ir; + + /* If-statements can be either 'if (expr)' or 'if (deref)'. We only care + * about the former here. + */ + ir_expression *cond = if_stmt->condition->as_expression(); + if (cond == NULL) + continue; + + switch (cond->operation) { + case ir_binop_less: + case ir_binop_greater: + case ir_binop_lequal: + case ir_binop_gequal: { + /* The expressions that we care about will either be of the form + * 'counter < limit' or 'limit < counter'. Figure out which is + * which. + */ + ir_rvalue *counter = cond->operands[0]->as_dereference_variable(); + ir_constant *limit = cond->operands[1]->as_constant(); + enum ir_expression_operation cmp = cond->operation; + + if (limit == NULL) { + counter = cond->operands[1]->as_dereference_variable(); + limit = cond->operands[0]->as_constant(); + + switch (cmp) { + case ir_binop_less: cmp = ir_binop_greater; break; + case ir_binop_greater: cmp = ir_binop_less; break; + case ir_binop_lequal: cmp = ir_binop_gequal; break; + case ir_binop_gequal: cmp = ir_binop_lequal; break; + default: assert(!"Should not get here."); + } + } + + if ((counter == NULL) || (limit == NULL)) + break; + + ir_variable *var = counter->variable_referenced(); + + ir_rvalue *init = find_initial_value(ir, var); + + loop_variable *lv = ls->get(var); + if (lv != NULL && lv->is_induction_var()) { + t->iterations = calculate_iterations(init, limit, lv->increment, + cmp); + + if (t->iterations >= 0 && + (ls->limiting_terminator == NULL || + t->iterations < ls->limiting_terminator->iterations)) { + ls->limiting_terminator = t; + } + } + break; + } + + default: + break; + } + } + return visit_continue; } diff --git a/dist/Mesa/src/glsl/loop_analysis.h b/dist/Mesa/src/glsl/loop_analysis.h index 769d62661..295dc797c 100644 --- a/dist/Mesa/src/glsl/loop_analysis.h +++ b/dist/Mesa/src/glsl/loop_analysis.h @@ -39,16 +39,12 @@ analyze_loop_variables(exec_list *instructions); /** * Fill in loop control fields * - * Based on analysis of loop variables, this function tries to remove sequences - * in the loop of the form + * Based on analysis of loop variables, this function tries to remove + * redundant sequences in the loop of the form * * (if (expression bool ...) (break)) * - * and fill in the \c ir_loop::from, \c ir_loop::to, and \c ir_loop::counter - * fields of the \c ir_loop. - * - * In this process, some conditional break-statements may be eliminated - * altogether. For example, if it is provable that one loop exit condition will + * For example, if it is provable that one loop exit condition will * always be satisfied before another, the unnecessary exit condition will be * removed. */ @@ -57,7 +53,15 @@ set_loop_controls(exec_list *instructions, loop_state *ls); extern bool -unroll_loops(exec_list *instructions, loop_state *ls, unsigned max_iterations); +unroll_loops(exec_list *instructions, loop_state *ls, + const struct gl_shader_compiler_options *options); + +ir_rvalue * +find_initial_value(ir_loop *loop, ir_variable *var); + +int +calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment, + enum ir_expression_operation op); /** @@ -67,15 +71,11 @@ class loop_variable_state : public exec_node { public: class loop_variable *get(const ir_variable *); class loop_variable *insert(ir_variable *); + class loop_variable *get_or_insert(ir_variable *, bool in_assignee); class loop_terminator *insert(ir_if *); /** - * Loop whose variable state is being tracked by this structure - */ - ir_loop *loop; - - /** * Variables that have not yet been classified */ exec_list variables; @@ -104,18 +104,17 @@ public: exec_list terminators; /** - * Hash table containing all variables accessed in this loop + * If any of the terminators in \c terminators leads to termination of the + * loop after a constant number of iterations, this is the terminator that + * leads to termination after the smallest number of iterations. Otherwise + * NULL. */ - hash_table *var_hash; + loop_terminator *limiting_terminator; /** - * Maximum number of loop iterations. - * - * If this value is negative, then the loop may be infinite. This actually - * means that analysis was unable to determine an upper bound on the number - * of loop iterations. + * Hash table containing all variables accessed in this loop */ - int max_iterations; + hash_table *var_hash; /** * Number of ir_loop_jump instructions that operate on this loop @@ -129,11 +128,11 @@ public: loop_variable_state() { - this->max_iterations = -1; this->num_loop_jumps = 0; this->contains_calls = false; this->var_hash = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); + this->limiting_terminator = NULL; } ~loop_variable_state() @@ -171,8 +170,11 @@ public: /** Are all variables in the RHS of the assignment loop constants? */ bool rhs_clean; - /** Is there an assignment to the variable that is conditional? */ - bool conditional_assignment; + /** + * Is there an assignment to the variable that is conditional, or inside a + * nested loop? + */ + bool conditional_or_nested_assignment; /** Reference to the first assignment to the variable in the loop body. */ ir_assignment *first_assignment; @@ -181,27 +183,30 @@ public: unsigned num_assignments; /** - * Increment values for loop induction variables + * Increment value for a loop induction variable * - * Loop induction variables have a single increment of the form - * \c b * \c biv + \c c, where \c b and \c c are loop constants and \c i - * is a basic loop induction variable. + * If this is a loop induction variable, the amount by which the variable + * is incremented on each iteration through the loop. * - * If \c iv_scale is \c NULL, 1 is used. If \c biv is the same as \c var, - * then \c var is a basic loop induction variable. + * If this is not a loop induction variable, NULL. */ - /*@{*/ - ir_rvalue *iv_scale; - ir_variable *biv; ir_rvalue *increment; - /*@}*/ + + + inline bool is_induction_var() const + { + /* Induction variables always have a non-null increment, and vice + * versa. + */ + return this->increment != NULL; + } inline bool is_loop_constant() const { const bool is_const = (this->num_assignments == 0) || ((this->num_assignments == 1) - && !this->conditional_assignment + && !this->conditional_or_nested_assignment && !this->read_before_write && this->rhs_clean); @@ -213,16 +218,35 @@ public: /* Variables that are marked read-only *MUST* be loop constant. */ - assert(!this->var->read_only || (this->var->read_only && is_const)); + assert(!this->var->data.read_only + || (this->var->data.read_only && is_const)); return is_const; } + + void record_reference(bool in_assignee, + bool in_conditional_code_or_nested_loop, + ir_assignment *current_assignment); }; class loop_terminator : public exec_node { public: + loop_terminator() + : ir(NULL), iterations(-1) + { + } + + /** + * Statement which terminates the loop. + */ ir_if *ir; + + /** + * The number of iterations after which the terminator is known to + * terminate the loop (if that is a fixed value). Otherwise -1. + */ + int iterations; }; diff --git a/dist/Mesa/src/glsl/lower_if_to_cond_assign.cpp b/dist/Mesa/src/glsl/lower_if_to_cond_assign.cpp index 2c5d5612d..f15b217e0 100644 --- a/dist/Mesa/src/glsl/lower_if_to_cond_assign.cpp +++ b/dist/Mesa/src/glsl/lower_if_to_cond_assign.cpp @@ -49,6 +49,8 @@ #include "ir.h" #include "program/hash_table.h" +namespace { + class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor { public: ir_if_to_cond_assign_visitor(unsigned max_depth) @@ -76,6 +78,8 @@ public: struct hash_table *condition_variables; }; +} /* anonymous namespace */ + bool lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth) { @@ -174,12 +178,12 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir) ir_assignment *assign; /* Check that both blocks don't contain anything we can't support. */ - foreach_iter(exec_list_iterator, then_iter, ir->then_instructions) { - ir_instruction *then_ir = (ir_instruction *)then_iter.get(); + foreach_list(n, &ir->then_instructions) { + ir_instruction *then_ir = (ir_instruction *) n; visit_tree(then_ir, check_control_flow, &found_control_flow); } - foreach_iter(exec_list_iterator, else_iter, ir->else_instructions) { - ir_instruction *else_ir = (ir_instruction *)else_iter.get(); + foreach_list(n, &ir->else_instructions) { + ir_instruction *else_ir = (ir_instruction *) n; visit_tree(else_ir, check_control_flow, &found_control_flow); } if (found_control_flow) diff --git a/dist/Mesa/src/glsl/lower_instructions.cpp b/dist/Mesa/src/glsl/lower_instructions.cpp index d32ec80d6..176070c87 100644 --- a/dist/Mesa/src/glsl/lower_instructions.cpp +++ b/dist/Mesa/src/glsl/lower_instructions.cpp @@ -37,8 +37,10 @@ * - POW_TO_EXP2 * - LOG_TO_LOG2 * - MOD_TO_FRACT - * - LRP_TO_ARITH + * - LDEXP_TO_ARITH * - BITFIELD_INSERT_TO_BFM_BFI + * - CARRY_TO_ARITH + * - BORROW_TO_ARITH * * SUB_TO_ADD_NEG: * --------------- @@ -82,9 +84,9 @@ * if we have to break it down like this anyway, it gives an * opportunity to do things like constant fold the (1.0 / op1) easily. * - * LRP_TO_ARITH: + * LDEXP_TO_ARITH: * ------------- - * Converts ir_triop_lrp to (op0 * (1.0f - op2)) + (op1 * op2). + * Converts ir_binop_ldexp to arithmetic and bit operations. * * BITFIELD_INSERT_TO_BFM_BFI: * --------------------------- @@ -94,6 +96,14 @@ * Many GPUs implement the bitfieldInsert() built-in from ARB_gpu_shader_5 * with a pair of instructions. * + * CARRY_TO_ARITH: + * --------------- + * Converts ir_carry into (x + y) < x. + * + * BORROW_TO_ARITH: + * ---------------- + * Converts ir_borrow into (x < y). + * */ #include "main/core.h" /* for M_LOG2E */ @@ -104,6 +114,8 @@ using namespace ir_builder; +namespace { + class lower_instructions_visitor : public ir_hierarchical_visitor { public: lower_instructions_visitor(unsigned lower) @@ -123,10 +135,14 @@ private: void exp_to_exp2(ir_expression *); void pow_to_exp2(ir_expression *); void log_to_log2(ir_expression *); - void lrp_to_arith(ir_expression *); void bitfield_insert_to_bfm_bfi(ir_expression *); + void ldexp_to_arith(ir_expression *); + void carry_to_arith(ir_expression *); + void borrow_to_arith(ir_expression *); }; +} /* anonymous namespace */ + /** * Determine if a particular type of lowering should occur */ @@ -289,27 +305,6 @@ lower_instructions_visitor::mod_to_fract(ir_expression *ir) } void -lower_instructions_visitor::lrp_to_arith(ir_expression *ir) -{ - /* (lrp x y a) -> x*(1-a) + y*a */ - - /* Save op2 */ - ir_variable *temp = new(ir) ir_variable(ir->operands[2]->type, "lrp_factor", - ir_var_temporary); - this->base_ir->insert_before(temp); - this->base_ir->insert_before(assign(temp, ir->operands[2])); - - ir_constant *one = new(ir) ir_constant(1.0f); - - ir->operation = ir_binop_add; - ir->operands[0] = mul(ir->operands[0], sub(one, temp)); - ir->operands[1] = mul(ir->operands[1], temp); - ir->operands[2] = NULL; - - this->progress = true; -} - -void lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir) { /* Translates @@ -332,6 +327,163 @@ lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir) this->progress = true; } +void +lower_instructions_visitor::ldexp_to_arith(ir_expression *ir) +{ + /* Translates + * ir_binop_ldexp x exp + * into + * + * extracted_biased_exp = rshift(bitcast_f2i(abs(x)), exp_shift); + * resulting_biased_exp = extracted_biased_exp + exp; + * + * if (resulting_biased_exp < 1) { + * return copysign(0.0, x); + * } + * + * return bitcast_u2f((bitcast_f2u(x) & sign_mantissa_mask) | + * lshift(i2u(resulting_biased_exp), exp_shift)); + * + * which we can't actually implement as such, since the GLSL IR doesn't + * have vectorized if-statements. We actually implement it without branches + * using conditional-select: + * + * extracted_biased_exp = rshift(bitcast_f2i(abs(x)), exp_shift); + * resulting_biased_exp = extracted_biased_exp + exp; + * + * is_not_zero_or_underflow = gequal(resulting_biased_exp, 1); + * x = csel(is_not_zero_or_underflow, x, copysign(0.0f, x)); + * resulting_biased_exp = csel(is_not_zero_or_underflow, + * resulting_biased_exp, 0); + * + * return bitcast_u2f((bitcast_f2u(x) & sign_mantissa_mask) | + * lshift(i2u(resulting_biased_exp), exp_shift)); + */ + + const unsigned vec_elem = ir->type->vector_elements; + + /* Types */ + const glsl_type *ivec = glsl_type::get_instance(GLSL_TYPE_INT, vec_elem, 1); + const glsl_type *bvec = glsl_type::get_instance(GLSL_TYPE_BOOL, vec_elem, 1); + + /* Constants */ + ir_constant *zeroi = ir_constant::zero(ir, ivec); + + ir_constant *sign_mask = new(ir) ir_constant(0x80000000u, vec_elem); + + ir_constant *exp_shift = new(ir) ir_constant(23); + ir_constant *exp_width = new(ir) ir_constant(8); + + /* Temporary variables */ + ir_variable *x = new(ir) ir_variable(ir->type, "x", ir_var_temporary); + ir_variable *exp = new(ir) ir_variable(ivec, "exp", ir_var_temporary); + + ir_variable *zero_sign_x = new(ir) ir_variable(ir->type, "zero_sign_x", + ir_var_temporary); + + ir_variable *extracted_biased_exp = + new(ir) ir_variable(ivec, "extracted_biased_exp", ir_var_temporary); + ir_variable *resulting_biased_exp = + new(ir) ir_variable(ivec, "resulting_biased_exp", ir_var_temporary); + + ir_variable *is_not_zero_or_underflow = + new(ir) ir_variable(bvec, "is_not_zero_or_underflow", ir_var_temporary); + + ir_instruction &i = *base_ir; + + /* Copy <x> and <exp> arguments. */ + i.insert_before(x); + i.insert_before(assign(x, ir->operands[0])); + i.insert_before(exp); + i.insert_before(assign(exp, ir->operands[1])); + + /* Extract the biased exponent from <x>. */ + i.insert_before(extracted_biased_exp); + i.insert_before(assign(extracted_biased_exp, + rshift(bitcast_f2i(abs(x)), exp_shift))); + + i.insert_before(resulting_biased_exp); + i.insert_before(assign(resulting_biased_exp, + add(extracted_biased_exp, exp))); + + /* Test if result is ±0.0, subnormal, or underflow by checking if the + * resulting biased exponent would be less than 0x1. If so, the result is + * 0.0 with the sign of x. (Actually, invert the conditions so that + * immediate values are the second arguments, which is better for i965) + */ + i.insert_before(zero_sign_x); + i.insert_before(assign(zero_sign_x, + bitcast_u2f(bit_and(bitcast_f2u(x), sign_mask)))); + + i.insert_before(is_not_zero_or_underflow); + i.insert_before(assign(is_not_zero_or_underflow, + gequal(resulting_biased_exp, + new(ir) ir_constant(0x1, vec_elem)))); + i.insert_before(assign(x, csel(is_not_zero_or_underflow, + x, zero_sign_x))); + i.insert_before(assign(resulting_biased_exp, + csel(is_not_zero_or_underflow, + resulting_biased_exp, zeroi))); + + /* We could test for overflows by checking if the resulting biased exponent + * would be greater than 0xFE. Turns out we don't need to because the GLSL + * spec says: + * + * "If this product is too large to be represented in the + * floating-point type, the result is undefined." + */ + + ir_constant *exp_shift_clone = exp_shift->clone(ir, NULL); + ir->operation = ir_unop_bitcast_i2f; + ir->operands[0] = bitfield_insert(bitcast_f2i(x), resulting_biased_exp, + exp_shift_clone, exp_width); + ir->operands[1] = NULL; + + /* Don't generate new IR that would need to be lowered in an additional + * pass. + */ + if (lowering(BITFIELD_INSERT_TO_BFM_BFI)) + bitfield_insert_to_bfm_bfi(ir->operands[0]->as_expression()); + + this->progress = true; +} + +void +lower_instructions_visitor::carry_to_arith(ir_expression *ir) +{ + /* Translates + * ir_binop_carry x y + * into + * sum = ir_binop_add x y + * bcarry = ir_binop_less sum x + * carry = ir_unop_b2i bcarry + */ + + ir_rvalue *x_clone = ir->operands[0]->clone(ir, NULL); + ir->operation = ir_unop_i2u; + ir->operands[0] = b2i(less(add(ir->operands[0], ir->operands[1]), x_clone)); + ir->operands[1] = NULL; + + this->progress = true; +} + +void +lower_instructions_visitor::borrow_to_arith(ir_expression *ir) +{ + /* Translates + * ir_binop_borrow x y + * into + * bcarry = ir_binop_less x y + * carry = ir_unop_b2i bcarry + */ + + ir->operation = ir_unop_i2u; + ir->operands[0] = b2i(less(ir->operands[0], ir->operands[1])); + ir->operands[1] = NULL; + + this->progress = true; +} + ir_visitor_status lower_instructions_visitor::visit_leave(ir_expression *ir) { @@ -368,16 +520,26 @@ lower_instructions_visitor::visit_leave(ir_expression *ir) pow_to_exp2(ir); break; - case ir_triop_lrp: - if (lowering(LRP_TO_ARITH)) - lrp_to_arith(ir); - break; - case ir_quadop_bitfield_insert: if (lowering(BITFIELD_INSERT_TO_BFM_BFI)) bitfield_insert_to_bfm_bfi(ir); break; + case ir_binop_ldexp: + if (lowering(LDEXP_TO_ARITH)) + ldexp_to_arith(ir); + break; + + case ir_binop_carry: + if (lowering(CARRY_TO_ARITH)) + carry_to_arith(ir); + break; + + case ir_binop_borrow: + if (lowering(BORROW_TO_ARITH)) + borrow_to_arith(ir); + break; + default: return visit_continue; } diff --git a/dist/Mesa/src/glsl/lower_jumps.cpp b/dist/Mesa/src/glsl/lower_jumps.cpp index bfc8c013b..02f65f097 100644 --- a/dist/Mesa/src/glsl/lower_jumps.cpp +++ b/dist/Mesa/src/glsl/lower_jumps.cpp @@ -133,6 +133,8 @@ enum jump_strength strength_return }; +namespace { + struct block_record { /* minimum jump strength (of lowered IR, not pre-lowering IR) @@ -279,8 +281,13 @@ struct ir_lower_jumps_visitor : public ir_control_flow_visitor { bool lower_main_return; ir_lower_jumps_visitor() + : progress(false), + pull_out_jumps(false), + lower_continue(false), + lower_break(false), + lower_sub_return(false), + lower_main_return(false) { - this->progress = false; } void truncate_after_instruction(exec_node *ir) @@ -992,6 +999,8 @@ lower_continue: } }; +} /* anonymous namespace */ + bool do_lower_jumps(exec_list *instructions, bool pull_out_jumps, bool lower_sub_return, bool lower_main_return, bool lower_continue, bool lower_break) { diff --git a/dist/Mesa/src/glsl/lower_variable_index_to_cond_assign.cpp b/dist/Mesa/src/glsl/lower_variable_index_to_cond_assign.cpp index 0f5072793..7c5d80f43 100644 --- a/dist/Mesa/src/glsl/lower_variable_index_to_cond_assign.cpp +++ b/dist/Mesa/src/glsl/lower_variable_index_to_cond_assign.cpp @@ -122,6 +122,7 @@ is_array_or_matrix(const ir_rvalue *ir) return (ir->type->is_array() || ir->type->is_matrix()); } +namespace { /** * Replace a dereference of a variable with a specified r-value * @@ -191,6 +192,12 @@ struct assignment_generator ir_variable* var; assignment_generator() + : base_ir(NULL), + rvalue(NULL), + old_index(NULL), + is_write(false), + write_mask(0), + var(NULL) { } @@ -358,7 +365,7 @@ public: if (var == NULL) return this->lower_temps; - switch (var->mode) { + switch (var->data.mode) { case ir_var_auto: case ir_var_temporary: return this->lower_temps; @@ -512,6 +519,8 @@ public: } }; +} /* anonymous namespace */ + bool lower_variable_index_to_cond_assign(exec_list *instructions, bool lower_input, diff --git a/dist/Mesa/src/glsl/lower_vec_index_to_cond_assign.cpp b/dist/Mesa/src/glsl/lower_vec_index_to_cond_assign.cpp index 880859688..fe6a3f208 100644 --- a/dist/Mesa/src/glsl/lower_vec_index_to_cond_assign.cpp +++ b/dist/Mesa/src/glsl/lower_vec_index_to_cond_assign.cpp @@ -41,6 +41,8 @@ #include "ir_optimization.h" #include "glsl_types.h" +namespace { + /** * Visitor class for replacing expressions with ir_constant values. */ @@ -69,6 +71,8 @@ public: bool progress; }; +} /* anonymous namespace */ + ir_rvalue * ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(void *mem_ctx, ir_rvalue *orig_vector, @@ -193,8 +197,8 @@ ir_vec_index_to_cond_assign_visitor::visit_leave(ir_assignment *ir) ir_visitor_status ir_vec_index_to_cond_assign_visitor::visit_enter(ir_call *ir) { - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param = (ir_rvalue *)iter.get(); + foreach_list_safe(n, &ir->actual_parameters) { + ir_rvalue *param = (ir_rvalue *) n; ir_rvalue *new_param = convert_vector_extract_to_cond_assign(param); if (new_param != param) { diff --git a/dist/Mesa/src/glsl/lower_vec_index_to_swizzle.cpp b/dist/Mesa/src/glsl/lower_vec_index_to_swizzle.cpp index d5ad692c2..b5bb00c30 100644 --- a/dist/Mesa/src/glsl/lower_vec_index_to_swizzle.cpp +++ b/dist/Mesa/src/glsl/lower_vec_index_to_swizzle.cpp @@ -39,6 +39,8 @@ * Visitor class for replacing expressions with ir_constant values. */ +namespace { + class ir_vec_index_to_swizzle_visitor : public ir_hierarchical_visitor { public: ir_vec_index_to_swizzle_visitor() @@ -58,6 +60,8 @@ public: bool progress; }; +} /* anonymous namespace */ + ir_rvalue * ir_vec_index_to_swizzle_visitor::convert_vector_extract_to_swizzle(ir_rvalue *ir) { @@ -127,8 +131,8 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_assignment *ir) ir_visitor_status ir_vec_index_to_swizzle_visitor::visit_enter(ir_call *ir) { - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param = (ir_rvalue *)iter.get(); + foreach_list_safe(n, &ir->actual_parameters) { + ir_rvalue *param = (ir_rvalue *) n; ir_rvalue *new_param = convert_vector_extract_to_swizzle(param); if (new_param != param) { diff --git a/dist/Mesa/src/glsl/main.cpp b/dist/Mesa/src/glsl/main.cpp index 60bc62827..a4452e023 100644 --- a/dist/Mesa/src/glsl/main.cpp +++ b/dist/Mesa/src/glsl/main.cpp @@ -38,6 +38,14 @@ #include "loop_analysis.h" #include "standalone_scaffolding.h" +static int glsl_version = 330; + +extern "C" void +_mesa_error_no_memory(const char *caller) +{ + fprintf(stderr, "Mesa error: out of memory in %s", caller); +} + static void initialize_context(struct gl_context *ctx, gl_api api) { @@ -46,16 +54,161 @@ initialize_context(struct gl_context *ctx, gl_api api) /* The standalone compiler needs to claim support for almost * everything in order to compile the built-in functions. */ - ctx->Const.GLSLVersion = 150; + ctx->Const.GLSLVersion = glsl_version; ctx->Extensions.ARB_ES3_compatibility = true; - - ctx->Const.MaxClipPlanes = 8; - ctx->Const.MaxDrawBuffers = 2; - - /* More than the 1.10 minimum to appease parser tests taken from - * apps that (hopefully) already checked the number of coords. - */ - ctx->Const.MaxTextureCoordUnits = 4; + ctx->Const.MaxComputeWorkGroupCount[0] = 65535; + ctx->Const.MaxComputeWorkGroupCount[1] = 65535; + ctx->Const.MaxComputeWorkGroupCount[2] = 65535; + ctx->Const.MaxComputeWorkGroupSize[0] = 1024; + ctx->Const.MaxComputeWorkGroupSize[1] = 1024; + ctx->Const.MaxComputeWorkGroupSize[2] = 64; + ctx->Const.MaxComputeWorkGroupInvocations = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxOutputComponents = 0; /* not used */ + + switch (ctx->Const.GLSLVersion) { + case 100: + ctx->Const.MaxClipPlanes = 0; + ctx->Const.MaxCombinedTextureImageUnits = 8; + ctx->Const.MaxDrawBuffers = 2; + ctx->Const.MinProgramTexelOffset = 0; + ctx->Const.MaxProgramTexelOffset = 0; + ctx->Const.MaxLights = 0; + ctx->Const.MaxTextureCoordUnits = 0; + ctx->Const.MaxTextureUnits = 8; + + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs = 8; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 0; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents = 128 * 4; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 32; + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = + ctx->Const.MaxCombinedTextureImageUnits; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents = 16 * 4; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxOutputComponents = 0; /* not used */ + + ctx->Const.MaxVarying = ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents / 4; + break; + case 110: + case 120: + ctx->Const.MaxClipPlanes = 6; + ctx->Const.MaxCombinedTextureImageUnits = 2; + ctx->Const.MaxDrawBuffers = 1; + ctx->Const.MinProgramTexelOffset = 0; + ctx->Const.MaxProgramTexelOffset = 0; + ctx->Const.MaxLights = 8; + ctx->Const.MaxTextureCoordUnits = 2; + ctx->Const.MaxTextureUnits = 2; + + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 0; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents = 512; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 32; + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = + ctx->Const.MaxCombinedTextureImageUnits; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents = 64; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxOutputComponents = 0; /* not used */ + + ctx->Const.MaxVarying = ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents / 4; + break; + case 130: + case 140: + ctx->Const.MaxClipPlanes = 8; + ctx->Const.MaxCombinedTextureImageUnits = 16; + ctx->Const.MaxDrawBuffers = 8; + ctx->Const.MinProgramTexelOffset = -8; + ctx->Const.MaxProgramTexelOffset = 7; + ctx->Const.MaxLights = 8; + ctx->Const.MaxTextureCoordUnits = 8; + ctx->Const.MaxTextureUnits = 2; + + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 64; + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxOutputComponents = 0; /* not used */ + + ctx->Const.MaxVarying = ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents / 4; + break; + case 150: + case 330: + ctx->Const.MaxClipPlanes = 8; + ctx->Const.MaxDrawBuffers = 8; + ctx->Const.MinProgramTexelOffset = -8; + ctx->Const.MaxProgramTexelOffset = 7; + ctx->Const.MaxLights = 8; + ctx->Const.MaxTextureCoordUnits = 8; + ctx->Const.MaxTextureUnits = 2; + + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 64; + + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxInputComponents = + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents; + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxOutputComponents = 128; + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxOutputComponents; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxOutputComponents = 0; /* not used */ + + ctx->Const.MaxCombinedTextureImageUnits = + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits + + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits; + + ctx->Const.MaxGeometryOutputVertices = 256; + ctx->Const.MaxGeometryTotalOutputComponents = 1024; + +// ctx->Const.MaxGeometryVaryingComponents = 64; + + ctx->Const.MaxVarying = 60 / 4; + break; + case 300: + ctx->Const.MaxClipPlanes = 8; + ctx->Const.MaxCombinedTextureImageUnits = 32; + ctx->Const.MaxDrawBuffers = 4; + ctx->Const.MinProgramTexelOffset = -8; + ctx->Const.MaxProgramTexelOffset = 7; + ctx->Const.MaxLights = 0; + ctx->Const.MaxTextureCoordUnits = 0; + ctx->Const.MaxTextureUnits = 0; + + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_VERTEX].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 16 * 4; + + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxUniformComponents = 224; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = 15 * 4; + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxOutputComponents = 0; /* not used */ + + ctx->Const.MaxVarying = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents / 4; + break; + } ctx->Driver.NewShader = _mesa_new_shader; } @@ -85,7 +238,7 @@ load_text_file(void *ctx, const char *file_name) if (bytes < size - total_read) { free(text); text = NULL; - break; + goto error; } if (bytes == 0) { @@ -96,6 +249,7 @@ load_text_file(void *ctx, const char *file_name) } while (total_read < size); text[total_read] = '\0'; +error:; } fclose(fp); @@ -103,18 +257,17 @@ load_text_file(void *ctx, const char *file_name) return text; } -int glsl_es = 0; int dump_ast = 0; int dump_hir = 0; int dump_lir = 0; int do_link = 0; const struct option compiler_opts[] = { - { "glsl-es", 0, &glsl_es, 1 }, - { "dump-ast", 0, &dump_ast, 1 }, - { "dump-hir", 0, &dump_hir, 1 }, - { "dump-lir", 0, &dump_lir, 1 }, - { "link", 0, &do_link, 1 }, + { "dump-ast", no_argument, &dump_ast, 1 }, + { "dump-hir", no_argument, &dump_hir, 1 }, + { "dump-lir", no_argument, &dump_lir, 1 }, + { "link", no_argument, &do_link, 1 }, + { "version", required_argument, NULL, 'v' }, { NULL, 0, NULL, 0 } }; @@ -141,13 +294,13 @@ void compile_shader(struct gl_context *ctx, struct gl_shader *shader) { struct _mesa_glsl_parse_state *state = - new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader); + new(shader) _mesa_glsl_parse_state(ctx, shader->Stage, shader); _mesa_glsl_compile_shader(ctx, shader, dump_ast, dump_hir); /* Print out the resulting IR */ if (!state->error && dump_lir) { - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); } return; @@ -159,11 +312,37 @@ main(int argc, char **argv) int status = EXIT_SUCCESS; struct gl_context local_ctx; struct gl_context *ctx = &local_ctx; + bool glsl_es = false; int c; int idx = 0; - while ((c = getopt_long(argc, argv, "", compiler_opts, &idx)) != -1) - /* empty */ ; + while ((c = getopt_long(argc, argv, "", compiler_opts, &idx)) != -1) { + switch (c) { + case 'v': + glsl_version = strtol(optarg, NULL, 10); + switch (glsl_version) { + case 100: + case 300: + glsl_es = true; + break; + case 110: + case 120: + case 130: + case 140: + case 150: + case 330: + glsl_es = false; + break; + default: + fprintf(stderr, "Unrecognized GLSL version `%s'\n", optarg); + usage_fail(argv[0]); + break; + } + break; + default: + break; + } + } if (argc <= optind) @@ -199,8 +378,11 @@ main(int argc, char **argv) shader->Type = GL_GEOMETRY_SHADER; else if (strncmp(".frag", ext, 5) == 0) shader->Type = GL_FRAGMENT_SHADER; + else if (strncmp(".comp", ext, 5) == 0) + shader->Type = GL_COMPUTE_SHADER; else usage_fail(argv[0]); + shader->Stage = _mesa_shader_enum_to_shader_stage(shader->Type); shader->Source = load_text_file(whole_program, argv[optind]); if (shader->Source == NULL) { @@ -210,8 +392,10 @@ main(int argc, char **argv) compile_shader(ctx, shader); - if (!shader->CompileStatus) { + if (strlen(shader->InfoLog) > 0) printf("Info log for %s:\n%s\n", argv[optind], shader->InfoLog); + + if (!shader->CompileStatus) { status = EXIT_FAILURE; break; } @@ -225,12 +409,12 @@ main(int argc, char **argv) printf("Info log for linking:\n%s\n", whole_program->InfoLog); } - for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) ralloc_free(whole_program->_LinkedShaders[i]); ralloc_free(whole_program); _mesa_glsl_release_types(); - _mesa_glsl_release_functions(); + _mesa_glsl_release_builtin_functions(); return status; } diff --git a/dist/Mesa/src/glsl/opt_constant_folding.cpp b/dist/Mesa/src/glsl/opt_constant_folding.cpp index 072fefe9a..d0e575460 100644 --- a/dist/Mesa/src/glsl/opt_constant_folding.cpp +++ b/dist/Mesa/src/glsl/opt_constant_folding.cpp @@ -122,13 +122,13 @@ ir_visitor_status ir_constant_folding_visitor::visit_enter(ir_call *ir) { /* Attempt to constant fold parameters */ - exec_list_iterator sig_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param_rval = (ir_rvalue *)iter.get(); - ir_variable *sig_param = (ir_variable *)sig_iter.get(); + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_rvalue *param_rval = (ir_rvalue *) actual_node; + ir_variable *sig_param = (ir_variable *) formal_node; - if (sig_param->mode == ir_var_function_in - || sig_param->mode == ir_var_const_in) { + if (sig_param->data.mode == ir_var_function_in + || sig_param->data.mode == ir_var_const_in) { ir_rvalue *new_param = param_rval; handle_rvalue(&new_param); @@ -136,7 +136,6 @@ ir_constant_folding_visitor::visit_enter(ir_call *ir) param_rval->replace_with(new_param); } } - sig_iter.next(); } /* Next, see if the call can be replaced with an assignment of a constant */ diff --git a/dist/Mesa/src/glsl/opt_constant_propagation.cpp b/dist/Mesa/src/glsl/opt_constant_propagation.cpp index 2f65937fe..18f5da689 100644 --- a/dist/Mesa/src/glsl/opt_constant_propagation.cpp +++ b/dist/Mesa/src/glsl/opt_constant_propagation.cpp @@ -172,8 +172,8 @@ ir_constant_propagation_visitor::handle_rvalue(ir_rvalue **rvalue) channel = i; } - foreach_iter(exec_list_iterator, iter, *this->acp) { - acp_entry *entry = (acp_entry *)iter.get(); + foreach_list(n, this->acp) { + acp_entry *entry = (acp_entry *) n; if (entry->var == deref->var && entry->write_mask & (1 << channel)) { found = entry; break; @@ -281,12 +281,12 @@ ir_visitor_status ir_constant_propagation_visitor::visit_enter(ir_call *ir) { /* Do constant propagation on call parameters, but skip any out params */ - exec_list_iterator sig_param_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, ir->actual_parameters) { - ir_variable *sig_param = (ir_variable *)sig_param_iter.get(); - ir_rvalue *param = (ir_rvalue *)iter.get(); - if (sig_param->mode != ir_var_function_out - && sig_param->mode != ir_var_function_inout) { + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_variable *sig_param = (ir_variable *) formal_node; + ir_rvalue *param = (ir_rvalue *) actual_node; + if (sig_param->data.mode != ir_var_function_out + && sig_param->data.mode != ir_var_function_inout) { ir_rvalue *new_param = param; handle_rvalue(&new_param); if (new_param != param) @@ -294,7 +294,6 @@ ir_constant_propagation_visitor::visit_enter(ir_call *ir) else param->accept(this); } - sig_param_iter.next(); } /* Since we're unlinked, we don't (necssarily) know the side effects of @@ -318,8 +317,8 @@ ir_constant_propagation_visitor::handle_if_block(exec_list *instructions) this->killed_all = false; /* Populate the initial acp with a constant of the original */ - foreach_iter(exec_list_iterator, iter, *orig_acp) { - acp_entry *a = (acp_entry *)iter.get(); + foreach_list(n, orig_acp) { + acp_entry *a = (acp_entry *) n; this->acp->push_tail(new(this->mem_ctx) acp_entry(a)); } @@ -334,8 +333,8 @@ ir_constant_propagation_visitor::handle_if_block(exec_list *instructions) this->acp = orig_acp; this->killed_all = this->killed_all || orig_killed_all; - foreach_iter(exec_list_iterator, iter, *new_kills) { - kill_entry *k = (kill_entry *)iter.get(); + foreach_list(n, new_kills) { + kill_entry *k = (kill_entry *) n; kill(k->var, k->write_mask); } } @@ -379,8 +378,8 @@ ir_constant_propagation_visitor::visit_enter(ir_loop *ir) this->acp = orig_acp; this->killed_all = this->killed_all || orig_killed_all; - foreach_iter(exec_list_iterator, iter, *new_kills) { - kill_entry *k = (kill_entry *)iter.get(); + foreach_list(n, new_kills) { + kill_entry *k = (kill_entry *) n; kill(k->var, k->write_mask); } @@ -398,8 +397,8 @@ ir_constant_propagation_visitor::kill(ir_variable *var, unsigned write_mask) return; /* Remove any entries currently in the ACP for this kill. */ - foreach_iter(exec_list_iterator, iter, *this->acp) { - acp_entry *entry = (acp_entry *)iter.get(); + foreach_list_safe(n, this->acp) { + acp_entry *entry = (acp_entry *) n; if (entry->var == var) { entry->write_mask &= ~write_mask; @@ -411,8 +410,8 @@ ir_constant_propagation_visitor::kill(ir_variable *var, unsigned write_mask) /* Add this writemask of the variable to the list of killed * variables in this block. */ - foreach_iter(exec_list_iterator, iter, *this->kills) { - kill_entry *entry = (kill_entry *)iter.get(); + foreach_list(n, this->kills) { + kill_entry *entry = (kill_entry *) n; if (entry->var == var) { entry->write_mask |= write_mask; diff --git a/dist/Mesa/src/glsl/opt_constant_variable.cpp b/dist/Mesa/src/glsl/opt_constant_variable.cpp index cbe6450c6..961b8aa06 100644 --- a/dist/Mesa/src/glsl/opt_constant_variable.cpp +++ b/dist/Mesa/src/glsl/opt_constant_variable.cpp @@ -132,13 +132,13 @@ ir_visitor_status ir_constant_variable_visitor::visit_enter(ir_call *ir) { /* Mark any out parameters as assigned to */ - exec_list_iterator sig_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param_rval = (ir_rvalue *)iter.get(); - ir_variable *param = (ir_variable *)sig_iter.get(); + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_rvalue *param_rval = (ir_rvalue *) actual_node; + ir_variable *param = (ir_variable *) formal_node; - if (param->mode == ir_var_function_out || - param->mode == ir_var_function_inout) { + if (param->data.mode == ir_var_function_out || + param->data.mode == ir_var_function_inout) { ir_variable *var = param_rval->variable_referenced(); struct assignment_entry *entry; @@ -146,7 +146,6 @@ ir_constant_variable_visitor::visit_enter(ir_call *ir) entry = get_assignment_entry(var, &this->list); entry->assignment_count++; } - sig_iter.next(); } /* Mark the return storage as having been assigned to */ @@ -194,13 +193,12 @@ do_constant_variable_unlinked(exec_list *instructions) { bool progress = false; - foreach_iter(exec_list_iterator, iter, *instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, instructions) { + ir_instruction *ir = (ir_instruction *) n; ir_function *f = ir->as_function(); if (f) { - foreach_iter(exec_list_iterator, sigiter, *f) { - ir_function_signature *sig = - (ir_function_signature *) sigiter.get(); + foreach_list(signode, &f->signatures) { + ir_function_signature *sig = (ir_function_signature *) signode; if (do_constant_variable(&sig->body)) progress = true; } diff --git a/dist/Mesa/src/glsl/opt_copy_propagation.cpp b/dist/Mesa/src/glsl/opt_copy_propagation.cpp index 7282b611e..195cc8baa 100644 --- a/dist/Mesa/src/glsl/opt_copy_propagation.cpp +++ b/dist/Mesa/src/glsl/opt_copy_propagation.cpp @@ -167,8 +167,8 @@ ir_copy_propagation_visitor::visit(ir_dereference_variable *ir) ir_variable *var = ir->var; - foreach_iter(exec_list_iterator, iter, *this->acp) { - acp_entry *entry = (acp_entry *)iter.get(); + foreach_list(n, this->acp) { + acp_entry *entry = (acp_entry *) n; if (var == entry->lhs) { ir->var = entry->rhs; @@ -185,15 +185,14 @@ ir_visitor_status ir_copy_propagation_visitor::visit_enter(ir_call *ir) { /* Do copy propagation on call parameters, but skip any out params */ - exec_list_iterator sig_param_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, ir->actual_parameters) { - ir_variable *sig_param = (ir_variable *)sig_param_iter.get(); - ir_instruction *ir = (ir_instruction *)iter.get(); - if (sig_param->mode != ir_var_function_out - && sig_param->mode != ir_var_function_inout) { + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_variable *sig_param = (ir_variable *) formal_node; + ir_rvalue *ir = (ir_rvalue *) actual_node; + if (sig_param->data.mode != ir_var_function_out + && sig_param->data.mode != ir_var_function_inout) { ir->accept(this); } - sig_param_iter.next(); } /* Since we're unlinked, we don't (necessarily) know the side effects of @@ -217,8 +216,8 @@ ir_copy_propagation_visitor::handle_if_block(exec_list *instructions) this->killed_all = false; /* Populate the initial acp with a copy of the original */ - foreach_iter(exec_list_iterator, iter, *orig_acp) { - acp_entry *a = (acp_entry *)iter.get(); + foreach_list(n, orig_acp) { + acp_entry *a = (acp_entry *) n; this->acp->push_tail(new(this->mem_ctx) acp_entry(a->lhs, a->rhs)); } @@ -233,8 +232,8 @@ ir_copy_propagation_visitor::handle_if_block(exec_list *instructions) this->acp = orig_acp; this->killed_all = this->killed_all || orig_killed_all; - foreach_iter(exec_list_iterator, iter, *new_kills) { - kill_entry *k = (kill_entry *)iter.get(); + foreach_list(n, new_kills) { + kill_entry *k = (kill_entry *) n; kill(k->var); } } @@ -277,8 +276,8 @@ ir_copy_propagation_visitor::visit_enter(ir_loop *ir) this->acp = orig_acp; this->killed_all = this->killed_all || orig_killed_all; - foreach_iter(exec_list_iterator, iter, *new_kills) { - kill_entry *k = (kill_entry *)iter.get(); + foreach_list(n, new_kills) { + kill_entry *k = (kill_entry *) n; kill(k->var); } @@ -292,8 +291,8 @@ ir_copy_propagation_visitor::kill(ir_variable *var) assert(var != NULL); /* Remove any entries currently in the ACP for this kill. */ - foreach_iter(exec_list_iterator, iter, *acp) { - acp_entry *entry = (acp_entry *)iter.get(); + foreach_list_safe(n, acp) { + acp_entry *entry = (acp_entry *) n; if (entry->lhs == var || entry->rhs == var) { entry->remove(); diff --git a/dist/Mesa/src/glsl/opt_copy_propagation_elements.cpp b/dist/Mesa/src/glsl/opt_copy_propagation_elements.cpp index 6a19da40d..4d8f476a8 100644 --- a/dist/Mesa/src/glsl/opt_copy_propagation_elements.cpp +++ b/dist/Mesa/src/glsl/opt_copy_propagation_elements.cpp @@ -186,7 +186,7 @@ ir_copy_propagation_elements_visitor::visit_leave(ir_assignment *ir) } ir_visitor_status -ir_copy_propagation_elements_visitor::visit_leave(ir_swizzle *ir) +ir_copy_propagation_elements_visitor::visit_leave(ir_swizzle *) { /* Don't visit the values of swizzles since they are handled while * visiting the swizzle itself. @@ -244,8 +244,8 @@ ir_copy_propagation_elements_visitor::handle_rvalue(ir_rvalue **ir) /* Try to find ACP entries covering swizzle_chan[], hoping they're * the same source variable. */ - foreach_iter(exec_list_iterator, iter, *this->acp) { - acp_entry *entry = (acp_entry *)iter.get(); + foreach_list(n, this->acp) { + acp_entry *entry = (acp_entry *) n; if (var == entry->lhs) { for (int c = 0; c < chans; c++) { @@ -293,15 +293,14 @@ ir_visitor_status ir_copy_propagation_elements_visitor::visit_enter(ir_call *ir) { /* Do copy propagation on call parameters, but skip any out params */ - exec_list_iterator sig_param_iter = ir->callee->parameters.iterator(); - foreach_iter(exec_list_iterator, iter, ir->actual_parameters) { - ir_variable *sig_param = (ir_variable *)sig_param_iter.get(); - ir_instruction *ir = (ir_instruction *)iter.get(); - if (sig_param->mode != ir_var_function_out - && sig_param->mode != ir_var_function_inout) { + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_variable *sig_param = (ir_variable *) formal_node; + ir_rvalue *ir = (ir_rvalue *) actual_node; + if (sig_param->data.mode != ir_var_function_out + && sig_param->data.mode != ir_var_function_inout) { ir->accept(this); } - sig_param_iter.next(); } /* Since we're unlinked, we don't (necessarily) know the side effects of @@ -325,8 +324,8 @@ ir_copy_propagation_elements_visitor::handle_if_block(exec_list *instructions) this->killed_all = false; /* Populate the initial acp with a copy of the original */ - foreach_iter(exec_list_iterator, iter, *orig_acp) { - acp_entry *a = (acp_entry *)iter.get(); + foreach_list(n, orig_acp) { + acp_entry *a = (acp_entry *) n; this->acp->push_tail(new(this->mem_ctx) acp_entry(a)); } diff --git a/dist/Mesa/src/glsl/opt_dead_code_local.cpp b/dist/Mesa/src/glsl/opt_dead_code_local.cpp index 8c31802a6..c27c526f9 100644 --- a/dist/Mesa/src/glsl/opt_dead_code_local.cpp +++ b/dist/Mesa/src/glsl/opt_dead_code_local.cpp @@ -51,14 +51,14 @@ public: assert(ir); this->lhs = lhs; this->ir = ir; - this->available = ir->write_mask; + this->unused = ir->write_mask; } ir_variable *lhs; ir_assignment *ir; /* bitmask of xyzw channels written that haven't been used so far. */ - int available; + int unused; }; class kill_for_derefs_visitor : public ir_hierarchical_visitor { @@ -68,22 +68,22 @@ public: this->assignments = assignments; } - void kill_channels(ir_variable *const var, int used) + void use_channels(ir_variable *const var, int used) { - foreach_iter(exec_list_iterator, iter, *this->assignments) { - assignment_entry *entry = (assignment_entry *)iter.get(); + foreach_list_safe(n, this->assignments) { + assignment_entry *entry = (assignment_entry *) n; if (entry->lhs == var) { if (var->type->is_scalar() || var->type->is_vector()) { if (debug) - printf("kill %s (0x%01x - 0x%01x)\n", entry->lhs->name, - entry->available, used); - entry->available &= ~used; - if (!entry->available) + printf("used %s (0x%01x - 0x%01x)\n", entry->lhs->name, + entry->unused, used & 0xf); + entry->unused &= ~used; + if (!entry->unused) entry->remove(); } else { if (debug) - printf("kill %s\n", entry->lhs->name); + printf("used %s\n", entry->lhs->name); entry->remove(); } } @@ -92,7 +92,7 @@ public: virtual ir_visitor_status visit(ir_dereference_variable *ir) { - kill_channels(ir->var, ~0); + use_channels(ir->var, ~0); return visit_continue; } @@ -109,11 +109,28 @@ public: used |= 1 << ir->mask.z; used |= 1 << ir->mask.w; - kill_channels(deref->var, used); + use_channels(deref->var, used); return visit_continue_with_parent; } + virtual ir_visitor_status visit(ir_emit_vertex *) + { + /* For the purpose of dead code elimination, emitting a vertex counts as + * "reading" all of the currently assigned output variables. + */ + foreach_list_safe(n, this->assignments) { + assignment_entry *entry = (assignment_entry *) n; + if (entry->lhs->data.mode == ir_var_shader_out) { + if (debug) + printf("kill %s\n", entry->lhs->name); + entry->remove(); + } + } + + return visit_continue; + } + private: exec_list *assignments; }; @@ -179,13 +196,13 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments) printf("looking for %s.0x%01x to remove\n", var->name, ir->write_mask); - foreach_iter(exec_list_iterator, iter, *assignments) { - assignment_entry *entry = (assignment_entry *)iter.get(); + foreach_list_safe(n, assignments) { + assignment_entry *entry = (assignment_entry *) n; if (entry->lhs != var) continue; - int remove = entry->available & ir->write_mask; + int remove = entry->unused & ir->write_mask; if (debug) { printf("%s 0x%01x - 0x%01x = 0x%01x\n", var->name, @@ -202,7 +219,7 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments) } entry->ir->write_mask &= ~remove; - entry->available &= ~remove; + entry->unused &= ~remove; if (entry->ir->write_mask == 0) { /* Delete the dead assignment. */ entry->ir->remove(); @@ -241,8 +258,8 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments) */ if (debug) printf("looking for %s to remove\n", var->name); - foreach_iter(exec_list_iterator, iter, *assignments) { - assignment_entry *entry = (assignment_entry *)iter.get(); + foreach_list_safe(n, assignments) { + assignment_entry *entry = (assignment_entry *) n; if (entry->lhs == var) { if (debug) @@ -263,10 +280,10 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments) printf("add %s\n", var->name); printf("current entries\n"); - foreach_iter(exec_list_iterator, iter, *assignments) { - assignment_entry *entry = (assignment_entry *)iter.get(); + foreach_list(n, assignments) { + assignment_entry *entry = (assignment_entry *) n; - printf(" %s (0x%01x)\n", entry->lhs->name, entry->available); + printf(" %s (0x%01x)\n", entry->lhs->name, entry->unused); } } diff --git a/dist/Mesa/src/glsl/opt_dead_functions.cpp b/dist/Mesa/src/glsl/opt_dead_functions.cpp index cd3b2c12e..8bb278e45 100644 --- a/dist/Mesa/src/glsl/opt_dead_functions.cpp +++ b/dist/Mesa/src/glsl/opt_dead_functions.cpp @@ -74,8 +74,8 @@ public: signature_entry * ir_dead_functions_visitor::get_signature_entry(ir_function_signature *sig) { - foreach_iter(exec_list_iterator, iter, this->signature_list) { - signature_entry *entry = (signature_entry *)iter.get(); + foreach_list(n, &this->signature_list) { + signature_entry *entry = (signature_entry *) n; if (entry->signature == sig) return entry; } @@ -123,8 +123,8 @@ do_dead_functions(exec_list *instructions) * the unused ones, and remove function definitions that have no more * signatures. */ - foreach_iter(exec_list_iterator, iter, v.signature_list) { - signature_entry *entry = (signature_entry *)iter.get(); + foreach_list_safe(n, &v.signature_list) { + signature_entry *entry = (signature_entry *) n; if (!entry->used) { entry->signature->remove(); @@ -137,8 +137,8 @@ do_dead_functions(exec_list *instructions) /* We don't just do this above when we nuked a signature because of * const pointers. */ - foreach_iter(exec_list_iterator, iter, *instructions) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list_safe(n, instructions) { + ir_instruction *ir = (ir_instruction *) n; ir_function *func = ir->as_function(); if (func && func->signatures.is_empty()) { diff --git a/dist/Mesa/src/glsl/opt_function_inlining.cpp b/dist/Mesa/src/glsl/opt_function_inlining.cpp index 0733d5180..9649598dd 100644 --- a/dist/Mesa/src/glsl/opt_function_inlining.cpp +++ b/dist/Mesa/src/glsl/opt_function_inlining.cpp @@ -35,9 +35,9 @@ #include "program/hash_table.h" static void -do_sampler_replacement(exec_list *instructions, - ir_variable *sampler, - ir_dereference *deref); +do_variable_replacement(exec_list *instructions, + ir_variable *orig, + ir_dereference *repl); namespace { @@ -107,7 +107,7 @@ ir_call::generate_inline(ir_instruction *next_ir) ht = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); num_parameters = 0; - foreach_iter(exec_list_iterator, iter_sig, this->callee->parameters) + foreach_list(n, &this->callee->parameters) num_parameters++; parameters = new ir_variable *[num_parameters]; @@ -116,37 +116,36 @@ ir_call::generate_inline(ir_instruction *next_ir) * and set up the mapping of real function body variables to ours. */ i = 0; - exec_list_iterator sig_param_iter = this->callee->parameters.iterator(); - exec_list_iterator param_iter = this->actual_parameters.iterator(); - for (i = 0; i < num_parameters; i++) { - ir_variable *sig_param = (ir_variable *) sig_param_iter.get(); - ir_rvalue *param = (ir_rvalue *) param_iter.get(); + foreach_two_lists(formal_node, &this->callee->parameters, + actual_node, &this->actual_parameters) { + ir_variable *sig_param = (ir_variable *) formal_node; + ir_rvalue *param = (ir_rvalue *) actual_node; /* Generate a new variable for the parameter. */ - if (sig_param->type->base_type == GLSL_TYPE_SAMPLER) { - /* For samplers, we want the inlined sampler references - * referencing the passed in sampler variable, since that - * will have the location information, which an assignment of - * a sampler wouldn't. Fix it up below. + if (sig_param->type->contains_opaque()) { + /* For opaque types, we want the inlined variable references + * referencing the passed in variable, since that will have + * the location information, which an assignment of an opaque + * variable wouldn't. Fix it up below. */ parameters[i] = NULL; } else { parameters[i] = sig_param->clone(ctx, ht); - parameters[i]->mode = ir_var_auto; + parameters[i]->data.mode = ir_var_auto; /* Remove the read-only decoration becuase we're going to write * directly to this variable. If the cloned variable is left * read-only and the inlined function is inside a loop, the loop * analysis code will get confused. */ - parameters[i]->read_only = false; + parameters[i]->data.read_only = false; next_ir->insert_before(parameters[i]); } /* Move the actual param into our param variable if it's an 'in' type. */ - if (parameters[i] && (sig_param->mode == ir_var_function_in || - sig_param->mode == ir_var_const_in || - sig_param->mode == ir_var_function_inout)) { + if (parameters[i] && (sig_param->data.mode == ir_var_function_in || + sig_param->data.mode == ir_var_const_in || + sig_param->data.mode == ir_var_function_inout)) { ir_assignment *assign; assign = new(ctx) ir_assignment(new(ctx) ir_dereference_variable(parameters[i]), @@ -154,38 +153,34 @@ ir_call::generate_inline(ir_instruction *next_ir) next_ir->insert_before(assign); } - sig_param_iter.next(); - param_iter.next(); + ++i; } exec_list new_instructions; /* Generate the inlined body of the function to a new list */ - foreach_iter(exec_list_iterator, iter, callee->body) { - ir_instruction *ir = (ir_instruction *)iter.get(); + foreach_list(n, &callee->body) { + ir_instruction *ir = (ir_instruction *) n; ir_instruction *new_ir = ir->clone(ctx, ht); new_instructions.push_tail(new_ir); visit_tree(new_ir, replace_return_with_assignment, this->return_deref); } - /* If any samplers were passed in, replace any deref of the sampler - * with a deref of the sampler argument. + /* If any opaque types were passed in, replace any deref of the + * opaque variable with a deref of the argument. */ - param_iter = this->actual_parameters.iterator(); - sig_param_iter = this->callee->parameters.iterator(); - for (i = 0; i < num_parameters; i++) { - ir_instruction *const param = (ir_instruction *) param_iter.get(); - ir_variable *sig_param = (ir_variable *) sig_param_iter.get(); + foreach_two_lists(formal_node, &this->callee->parameters, + actual_node, &this->actual_parameters) { + ir_rvalue *const param = (ir_rvalue *) actual_node; + ir_variable *sig_param = (ir_variable *) formal_node; - if (sig_param->type->base_type == GLSL_TYPE_SAMPLER) { + if (sig_param->type->contains_opaque()) { ir_dereference *deref = param->as_dereference(); assert(deref); - do_sampler_replacement(&new_instructions, sig_param, deref); + do_variable_replacement(&new_instructions, sig_param, deref); } - param_iter.next(); - sig_param_iter.next(); } /* Now push those new instructions in. */ @@ -195,15 +190,14 @@ ir_call::generate_inline(ir_instruction *next_ir) * variables to our own. */ i = 0; - param_iter = this->actual_parameters.iterator(); - sig_param_iter = this->callee->parameters.iterator(); - for (i = 0; i < num_parameters; i++) { - ir_instruction *const param = (ir_instruction *) param_iter.get(); - const ir_variable *const sig_param = (ir_variable *) sig_param_iter.get(); + foreach_two_lists(formal_node, &this->callee->parameters, + actual_node, &this->actual_parameters) { + ir_rvalue *const param = (ir_rvalue *) actual_node; + const ir_variable *const sig_param = (ir_variable *) formal_node; /* Move our param variable into the actual param if it's an 'out' type. */ - if (parameters[i] && (sig_param->mode == ir_var_function_out || - sig_param->mode == ir_var_function_inout)) { + if (parameters[i] && (sig_param->data.mode == ir_var_function_out || + sig_param->data.mode == ir_var_function_inout)) { ir_assignment *assign; assign = new(ctx) ir_assignment(param->clone(ctx, NULL)->as_rvalue(), @@ -212,8 +206,7 @@ ir_call::generate_inline(ir_instruction *next_ir) next_ir->insert_before(assign); } - param_iter.next(); - sig_param_iter.next(); + ++i; } delete [] parameters; @@ -268,23 +261,23 @@ ir_function_inlining_visitor::visit_enter(ir_call *ir) /** - * Replaces references to the "sampler" variable with a clone of "deref." + * Replaces references to the "orig" variable with a clone of "repl." * - * From the spec, samplers can appear in the tree as function + * From the spec, opaque types can appear in the tree as function * (non-out) parameters and as the result of array indexing and * structure field selection. In our builtin implementation, they * also appear in the sampler field of an ir_tex instruction. */ -class ir_sampler_replacement_visitor : public ir_hierarchical_visitor { +class ir_variable_replacement_visitor : public ir_hierarchical_visitor { public: - ir_sampler_replacement_visitor(ir_variable *sampler, ir_dereference *deref) + ir_variable_replacement_visitor(ir_variable *orig, ir_dereference *repl) { - this->sampler = sampler; - this->deref = deref; + this->orig = orig; + this->repl = repl; } - virtual ~ir_sampler_replacement_visitor() + virtual ~ir_variable_replacement_visitor() { } @@ -296,21 +289,21 @@ public: void replace_deref(ir_dereference **deref); void replace_rvalue(ir_rvalue **rvalue); - ir_variable *sampler; - ir_dereference *deref; + ir_variable *orig; + ir_dereference *repl; }; void -ir_sampler_replacement_visitor::replace_deref(ir_dereference **deref) +ir_variable_replacement_visitor::replace_deref(ir_dereference **deref) { ir_dereference_variable *deref_var = (*deref)->as_dereference_variable(); - if (deref_var && deref_var->var == this->sampler) { - *deref = this->deref->clone(ralloc_parent(*deref), NULL); + if (deref_var && deref_var->var == this->orig) { + *deref = this->repl->clone(ralloc_parent(*deref), NULL); } } void -ir_sampler_replacement_visitor::replace_rvalue(ir_rvalue **rvalue) +ir_variable_replacement_visitor::replace_rvalue(ir_rvalue **rvalue) { if (!*rvalue) return; @@ -325,7 +318,7 @@ ir_sampler_replacement_visitor::replace_rvalue(ir_rvalue **rvalue) } ir_visitor_status -ir_sampler_replacement_visitor::visit_leave(ir_texture *ir) +ir_variable_replacement_visitor::visit_leave(ir_texture *ir) { replace_deref(&ir->sampler); @@ -333,24 +326,24 @@ ir_sampler_replacement_visitor::visit_leave(ir_texture *ir) } ir_visitor_status -ir_sampler_replacement_visitor::visit_leave(ir_dereference_array *ir) +ir_variable_replacement_visitor::visit_leave(ir_dereference_array *ir) { replace_rvalue(&ir->array); return visit_continue; } ir_visitor_status -ir_sampler_replacement_visitor::visit_leave(ir_dereference_record *ir) +ir_variable_replacement_visitor::visit_leave(ir_dereference_record *ir) { replace_rvalue(&ir->record); return visit_continue; } ir_visitor_status -ir_sampler_replacement_visitor::visit_leave(ir_call *ir) +ir_variable_replacement_visitor::visit_leave(ir_call *ir) { - foreach_iter(exec_list_iterator, iter, *ir) { - ir_rvalue *param = (ir_rvalue *)iter.get(); + foreach_list_safe(n, &ir->actual_parameters) { + ir_rvalue *param = (ir_rvalue *) n; ir_rvalue *new_param = param; replace_rvalue(&new_param); @@ -362,11 +355,11 @@ ir_sampler_replacement_visitor::visit_leave(ir_call *ir) } static void -do_sampler_replacement(exec_list *instructions, - ir_variable *sampler, - ir_dereference *deref) +do_variable_replacement(exec_list *instructions, + ir_variable *orig, + ir_dereference *repl) { - ir_sampler_replacement_visitor v(sampler, deref); + ir_variable_replacement_visitor v(orig, repl); visit_list_elements(&v, instructions); } diff --git a/dist/Mesa/src/glsl/opt_if_simplification.cpp b/dist/Mesa/src/glsl/opt_if_simplification.cpp index db59b131d..e05f03190 100644 --- a/dist/Mesa/src/glsl/opt_if_simplification.cpp +++ b/dist/Mesa/src/glsl/opt_if_simplification.cpp @@ -90,15 +90,9 @@ ir_if_simplification_visitor::visit_leave(ir_if *ir) * that matters out. */ if (condition_constant->value.b[0]) { - foreach_iter(exec_list_iterator, then_iter, ir->then_instructions) { - ir_instruction *then_ir = (ir_instruction *)then_iter.get(); - ir->insert_before(then_ir); - } + ir->insert_before(&ir->then_instructions); } else { - foreach_iter(exec_list_iterator, else_iter, ir->else_instructions) { - ir_instruction *else_ir = (ir_instruction *)else_iter.get(); - ir->insert_before(else_ir); - } + ir->insert_before(&ir->else_instructions); } ir->remove(); this->made_progress = true; diff --git a/dist/Mesa/src/glsl/opt_redundant_jumps.cpp b/dist/Mesa/src/glsl/opt_redundant_jumps.cpp index 8606dcbb7..ee384d0f2 100644 --- a/dist/Mesa/src/glsl/opt_redundant_jumps.cpp +++ b/dist/Mesa/src/glsl/opt_redundant_jumps.cpp @@ -50,7 +50,7 @@ public: * into expressions. */ ir_visitor_status -redundant_jumps_visitor::visit_enter(ir_assignment *ir) +redundant_jumps_visitor::visit_enter(ir_assignment *) { return visit_continue_with_parent; } diff --git a/dist/Mesa/src/glsl/opt_structure_splitting.cpp b/dist/Mesa/src/glsl/opt_structure_splitting.cpp index 9f4b3dd8f..1ec537b13 100644 --- a/dist/Mesa/src/glsl/opt_structure_splitting.cpp +++ b/dist/Mesa/src/glsl/opt_structure_splitting.cpp @@ -103,12 +103,12 @@ ir_structure_reference_visitor::get_variable_entry(ir_variable *var) { assert(var); - if (!var->type->is_record() || var->mode == ir_var_uniform - || var->mode == ir_var_shader_in || var->mode == ir_var_shader_out) + if (!var->type->is_record() || var->data.mode == ir_var_uniform + || var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) return NULL; - foreach_iter(exec_list_iterator, iter, this->variable_list) { - variable_entry *entry = (variable_entry *)iter.get(); + foreach_list(n, &this->variable_list) { + variable_entry *entry = (variable_entry *) n; if (entry->var == var) return entry; } @@ -209,8 +209,8 @@ ir_structure_splitting_visitor::get_splitting_entry(ir_variable *var) if (!var->type->is_record()) return NULL; - foreach_iter(exec_list_iterator, iter, *this->variable_list) { - variable_entry *entry = (variable_entry *)iter.get(); + foreach_list(n, this->variable_list) { + variable_entry *entry = (variable_entry *) n; if (entry->var == var) { return entry; } @@ -315,8 +315,8 @@ do_structure_splitting(exec_list *instructions) visit_list_elements(&refs, instructions); /* Trim out variables we can't split. */ - foreach_iter(exec_list_iterator, iter, refs.variable_list) { - variable_entry *entry = (variable_entry *)iter.get(); + foreach_list_safe(n, &refs.variable_list) { + variable_entry *entry = (variable_entry *) n; if (debug) { printf("structure %s@%p: decl %d, whole_access %d\n", @@ -337,8 +337,8 @@ do_structure_splitting(exec_list *instructions) /* Replace the decls of the structures to be split with their split * components. */ - foreach_iter(exec_list_iterator, iter, refs.variable_list) { - variable_entry *entry = (variable_entry *)iter.get(); + foreach_list_safe(n, &refs.variable_list) { + variable_entry *entry = (variable_entry *) n; const struct glsl_type *type = entry->var->type; entry->mem_ctx = ralloc_parent(entry->var); diff --git a/dist/Mesa/src/glsl/opt_tree_grafting.cpp b/dist/Mesa/src/glsl/opt_tree_grafting.cpp index 9aceb134d..d47613c21 100644 --- a/dist/Mesa/src/glsl/opt_tree_grafting.cpp +++ b/dist/Mesa/src/glsl/opt_tree_grafting.cpp @@ -127,12 +127,12 @@ ir_tree_grafting_visitor::do_graft(ir_rvalue **rvalue) return false; if (debug) { - printf("GRAFTING:\n"); - this->graft_assign->print(); - printf("\n"); - printf("TO:\n"); - (*rvalue)->print(); - printf("\n"); + fprintf(stderr, "GRAFTING:\n"); + this->graft_assign->fprint(stderr); + fprintf(stderr, "\n"); + fprintf(stderr, "TO:\n"); + (*rvalue)->fprint(stderr); + fprintf(stderr, "\n"); } this->graft_assign->remove(); @@ -164,9 +164,9 @@ ir_tree_grafting_visitor::check_graft(ir_instruction *ir, ir_variable *var) { if (dereferences_variable(this->graft_assign->rhs, var)) { if (debug) { - printf("graft killed by: "); - ir->print(); - printf("\n"); + fprintf(stderr, "graft killed by: "); + ir->fprint(stderr); + fprintf(stderr, "\n"); } return visit_stop; } @@ -204,15 +204,14 @@ ir_tree_grafting_visitor::visit_enter(ir_function_signature *ir) ir_visitor_status ir_tree_grafting_visitor::visit_enter(ir_call *ir) { - exec_list_iterator sig_iter = ir->callee->parameters.iterator(); - /* Reminder: iterating ir_call iterates its parameters. */ - foreach_iter(exec_list_iterator, iter, *ir) { - ir_variable *sig_param = (ir_variable *)sig_iter.get(); - ir_rvalue *ir = (ir_rvalue *)iter.get(); + foreach_two_lists(formal_node, &ir->callee->parameters, + actual_node, &ir->actual_parameters) { + ir_variable *sig_param = (ir_variable *) formal_node; + ir_rvalue *ir = (ir_rvalue *) actual_node; ir_rvalue *new_ir = ir; - if (sig_param->mode != ir_var_function_in - && sig_param->mode != ir_var_const_in) { + if (sig_param->data.mode != ir_var_function_in + && sig_param->data.mode != ir_var_const_in) { if (check_graft(ir, sig_param) == visit_stop) return visit_stop; continue; @@ -222,7 +221,6 @@ ir_tree_grafting_visitor::visit_enter(ir_call *ir) ir->replace_with(new_ir); return visit_stop; } - sig_iter.next(); } if (ir->return_deref && check_graft(ir, ir->return_deref->var) == visit_stop) @@ -275,6 +273,7 @@ ir_tree_grafting_visitor::visit_enter(ir_texture *ir) switch (ir->op) { case ir_tex: case ir_lod: + case ir_query_levels: break; case ir_txb: if (do_graft(&ir->lod_info.bias)) @@ -295,6 +294,10 @@ ir_tree_grafting_visitor::visit_enter(ir_texture *ir) do_graft(&ir->lod_info.grad.dPdy)) return visit_stop; break; + case ir_tg4: + if (do_graft(&ir->lod_info.component)) + return visit_stop; + break; } return visit_continue; @@ -313,9 +316,9 @@ try_tree_grafting(ir_assignment *start, ir_tree_grafting_visitor v(start, lhs_var); if (debug) { - printf("trying to graft: "); - lhs_var->print(); - printf("\n"); + fprintf(stderr, "trying to graft: "); + lhs_var->fprint(stderr); + fprintf(stderr, "\n"); } for (ir_instruction *ir = (ir_instruction *)start->next; @@ -323,9 +326,9 @@ try_tree_grafting(ir_assignment *start, ir = (ir_instruction *)ir->next) { if (debug) { - printf("- "); - ir->print(); - printf("\n"); + fprintf(stderr, "- "); + ir->fprint(stderr); + fprintf(stderr, "\n"); } ir_visitor_status s = ir->accept(&v); @@ -356,9 +359,9 @@ tree_grafting_basic_block(ir_instruction *bb_first, if (!lhs_var) continue; - if (lhs_var->mode == ir_var_function_out || - lhs_var->mode == ir_var_function_inout || - lhs_var->mode == ir_var_shader_out) + if (lhs_var->data.mode == ir_var_function_out || + lhs_var->data.mode == ir_var_function_inout || + lhs_var->data.mode == ir_var_shader_out) continue; ir_variable_refcount_entry *entry = info->refs->get_variable_entry(lhs_var); diff --git a/dist/Mesa/src/glsl/ralloc.c b/dist/Mesa/src/glsl/ralloc.c index e79dad764..36bc61fd0 100644 --- a/dist/Mesa/src/glsl/ralloc.c +++ b/dist/Mesa/src/glsl/ralloc.c @@ -53,8 +53,10 @@ _CRTIMP int _vscprintf(const char *format, va_list argptr); struct ralloc_header { +#ifdef DEBUG /* A canary value used to determine whether a pointer is ralloc'd. */ unsigned canary; +#endif struct ralloc_header *parent; @@ -78,7 +80,9 @@ get_header(const void *ptr) { ralloc_header *info = (ralloc_header *) (((char *) ptr) - sizeof(ralloc_header)); +#ifdef DEBUG assert(info->canary == CANARY); +#endif return info; } @@ -117,7 +121,9 @@ ralloc_size(const void *ctx, size_t size) add_child(parent, info); +#ifdef DEBUG info->canary = CANARY; +#endif return PTR_FROM_HEADER(info); } diff --git a/dist/Mesa/src/glsl/s_expression.cpp b/dist/Mesa/src/glsl/s_expression.cpp index 1bdf6bca6..6906ff0eb 100644 --- a/dist/Mesa/src/glsl/s_expression.cpp +++ b/dist/Mesa/src/glsl/s_expression.cpp @@ -162,8 +162,8 @@ void s_symbol::print() void s_list::print() { printf("("); - foreach_iter(exec_list_iterator, it, this->subexpressions) { - s_expression *expr = (s_expression*) it.get(); + foreach_list(n, &this->subexpressions) { + s_expression *expr = (s_expression *) n; expr->print(); if (!expr->next->is_tail_sentinel()) printf(" "); @@ -201,11 +201,11 @@ s_match(s_expression *top, unsigned n, s_pattern *pattern, bool partial) return false; unsigned i = 0; - foreach_iter(exec_list_iterator, it, list->subexpressions) { + foreach_list(node, &list->subexpressions) { if (i >= n) return partial; /* More actual items than the pattern expected */ - s_expression *expr = (s_expression *) it.get(); + s_expression *expr = (s_expression *) node; if (expr == NULL || !pattern[i].match(expr)) return false; |