summaryrefslogtreecommitdiffstats
path: root/ir.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix typos of "variable" as "varaible"Carl Worth2010-06-231-1/+1
| | | | | One of these was just in a comment. But ther other was in an enum tag, (which is apparently not being used anywhere yet).
* Add a virtual clone() method to ir_instruction.Eric Anholt2010-06-231-36/+37
| | | | | This will be used by function inlining, the linker, and avoiding double usage of the LHS deref chains in ++, *=, and similar operations.
* ir_variable: Add query to get number of slots used by a variableIan Romanick2010-06-231-0/+8
|
* ir_variable: Track the location of uniforms, varings, attributes, etc.Ian Romanick2010-06-231-0/+17
|
* ir_variable: Add method to get string representing interpolation qualifierIan Romanick2010-06-231-0/+10
|
* ir_constant: Add method to determine if two constants have the same valueIan Romanick2010-06-231-0/+5
|
* ir_validate: New pass for checking our invariants.Eric Anholt2010-06-221-0/+2
|
* ir: Give ir_instruction a print visitor helper.Eric Anholt2010-06-221-0/+4
| | | | | | This avoids spamming each file with includes of ir_print_visitor.h because someone was doing debugging at some point, and is less typing when doing debugging.
* Include stdio.h and stdlib.h everywhere, and don't cook our own #define NULL.Eric Anholt2010-06-221-0/+3
|
* ir_constant: Eliminate 'void *' constructorIan Romanick2010-06-111-1/+1
| | | | | | | | | All of the places that had been using the (glsl_type *, void *) constructor were actually passing an ir_constant_data for the 'void *'. The code can be greatly simplified by replacing this constructor with a (glsl_type *, ir_constant_data *) constructor. This should also help prevent one class of invalid uses of the old constructor.
* Matrix and vector constructors with a single constant scalar are constantIan Romanick2010-06-111-6/+12
|
* ir_constant: Add get_record_field queryIan Romanick2010-06-111-0/+2
|
* ir_constant: Support constant structures in cloneIan Romanick2010-06-111-4/+7
|
* ir_constant: Add storage for multiple constants for arrays and recordsIan Romanick2010-06-111-0/+2
|
* Construct an ir_constant from a list of ir_constant valuesIan Romanick2010-06-111-0/+5
|
* Add methods to ir_constant to get scalar components in a particular typeIan Romanick2010-06-111-0/+14
|
* Construct an ir_constant from a scalar component of another ir_constantIan Romanick2010-06-111-0/+12
|
* Implement dFdx, dFdy, and fwidth via new expression opcodes.Kenneth Graunke2010-06-091-0/+8
|
* ir_function_cloning_visitor: Add support for ir_texture.Kenneth Graunke2010-06-091-1/+1
|
* Set the type of ir_texture properly; infer it from the sampler type.Kenneth Graunke2010-06-091-0/+3
|
* Add stub visitor support for ir_texture.Kenneth Graunke2010-06-091-0/+7
|
* Add mappings between ir_texture_opcode and strings.Kenneth Graunke2010-06-091-0/+10
|
* Define IR instruction for texture look-upsIan Romanick2010-06-091-0/+77
|
* There is no class ir_label, so there's no need for ir_instruction::as_labelIan Romanick2010-06-021-1/+0
|
* ir_vec_index_to_swizzle: Pass to convert indexing of vectors to swizzles.Eric Anholt2010-06-011-1/+6
| | | | | This should remove the burden of handling constant vector indexing well from backend codegen, and could help with swizzle optimizations.
* ir_dereference::mode is no longer used, kill with fireIan Romanick2010-05-261-13/+0
|
* Refactor whole-variable assigment checking into member functionIan Romanick2010-05-261-0/+26
|
* Refactor ir_dereference data fields to subclassesIan Romanick2010-05-261-15/+14
|
* Refactor ir_dereference support for ir_visitorIan Romanick2010-05-261-5/+15
| | | | | Move the accept method for visitors from ir_dereference to the derived classes.
* Refactor ir_dereference support for ir_hierarchical_visitorIan Romanick2010-05-261-2/+5
| | | | | | Move the accept method for hierarchical visitors from ir_dereference to the derived classes. This was mostly straight-forward, but I suspect that ir_dead_code_local may be broken now.
* Begin refactoring ir_dereferenceIan Romanick2010-05-261-8/+59
| | | | | | | | | | | Create separate subclasses of ir_dereference for variable, array, and record dereferences. As a side effect, array and record dereferences no longer point to ir_variable objects directly. Instead they each point to an ir_dereference_variable object. This is the first of several steps in the refactoring process. The intention is that ir_dereference will eventually become an abstract base class.
* Add ir_hierarchical_visitor base class and associated infrastructureIan Romanick2010-05-171-0/+28
| | | | | This type of visitor should eventually replace all or almost all current uses of ir_visitor.
* Add ir_rvalue::variable_referencedIan Romanick2010-05-141-0/+18
|
* Implement "sin" and "cos" builtins via new expression operators.Kenneth Graunke2010-05-141-0/+8
|
* Implement "sign" builtin via a new expression operator.Kenneth Graunke2010-05-141-0/+1
|
* ir_copy_propagation: New pass to rewrite dereferences to avoid copies.Eric Anholt2010-05-041-0/+6
| | | | | This is pretty basic. Right now it only handles pure assignments -- same type on each side, no swizzling, and only within basic blocks.
* ir_to_mesa.cpp: Fix missing types on some ir_swizzles.Eric Anholt2010-05-031-5/+1
| | | | | | | Debugging this took forever as I only looked at constructors in ir.cpp to find who wasn't setting up ->type. I dislike hiding code (as opposed to prototypes and definitions) in C++ header files, but in this case I have only myself to blame.
* Add ir_dereference constructor for structure field dereferencesIan Romanick2010-04-281-0/+2
|
* Move array of operator strings out of ir_print_visitor.cpp.Kenneth Graunke2010-04-281-2/+12
| | | | Also implement a reverse-lookup function for use in the IR reader.
* Factor out parameter list replacement for later reuse.Kenneth Graunke2010-04-281-0/+7
|
* Factor out parameter list matching from ast_function::hir for later reuse.Kenneth Graunke2010-04-281-1/+8
| | | | | | | Unfortunately, we still have two kinds of matching - one, with implicit conversions (for use in calls) and another without them (for finding a prototype to overwrite when processing a function body). This commit does not attempt to coalesce the two.
* Factor out qualifier checking code for later reuse.Kenneth Graunke2010-04-281-0/+7
|
* Refactor ir_expression::get_num_operands.Kenneth Graunke2010-04-281-1/+5
| | | | | | A new static version takes an ir_expression_operation enum, and the original non-static version now uses it. This will make it easier to read operations (where the ir_expression doesn't yet exist).
* Fix ir_dead_code for function refactoring.Kenneth Graunke2010-04-211-0/+6
|
* Remove ir_label since it is no longer used.Kenneth Graunke2010-04-211-20/+0
|
* Refactor IR function representation.Kenneth Graunke2010-04-211-5/+9
| | | | | | Now, ir_function is emitted as part of the IR instructions, rather than simply existing in the symbol table. Individual ir_function_signatures are not emitted themselves, but only as part of ir_function.
* Remove dead code assignments and variable declarations.Eric Anholt2010-04-191-0/+12
| | | | | | | | | | | | This pass only works on assignments where the variable is never referenced. There is no code flow analysis, so it can't do a better job of avoiding redundant assignments. For now, the optimizer only does do_dead_code_unlinked(), so it won't trim the builtin variable list or initializers outside of the scope of functions. This is because we don't have the visibility into other functions that might get linked in in order to eliminate work on global variables.
* Mark some variables as having usage beyond the shader's scope.Eric Anholt2010-04-191-0/+6
| | | | | | This will be important to optimization passes. We don't want to dead-code eliminate writes to out varyings, or propagate uninitialized values of uniforms.
* Add an ir_if simplification pass.Eric Anholt2010-04-141-0/+6
| | | | | | | This is relatively simple at the moment, recognizing only constant values, and not (for example) values that are restricted to a range that make the branching constant. However, it does remove 59 lines from the printout of CorrectParse2.vert.
* Inline functions consisting of a return of an expression.Eric Anholt2010-04-081-0/+47
|