Ian Romanick
461c294ac5
Use ir_rvalue::variable_referenced instead of open coding it
2010-05-18 13:53:20 +02:00
Ian Romanick
c65cfef317
ir_visit_tree is no longer used, remove ir_visit_tree.{cpp,h}
2010-05-17 12:03:13 -07:00
Ian Romanick
551c9c0deb
Reimplement kill_for_derefs using ir_hierarchical_vistor
...
The output of all test cases was verified to be the same using diff.
2010-05-17 12:03:13 -07:00
Ian Romanick
77dd4f3536
Reimplement has_call_callback using ir_hierarchical_vistor
...
This has the added advantage that it will stop traversing the tree as
soon as the first call is found.
The output of all test cases was verified to be the same using diff.
2010-05-17 12:03:13 -07:00
Ian Romanick
a0b4f3d631
Reimplement ir_if_simplicifation_visitor using ir_hierarchical_vistor
...
The output of all test cases was verified to be the same using diff.
2010-05-17 12:03:13 -07:00
Ian Romanick
458d5c61ef
Make visit_list_elements safe against node removals
2010-05-17 12:03:13 -07:00
Ian Romanick
671e4f6321
Reimplement ir_function_can_inline_visitor using ir_hierarchical_vistor
...
The output of all test cases was verified to be the same using diff.
2010-05-17 12:03:13 -07:00
Ian Romanick
b5a7cf9344
Reimplement ir_dead_code_visitor using ir_hierarchical_vistor
...
The output of all test cases was verified to be the same using diff.
2010-05-17 12:03:13 -07:00
Ian Romanick
8895bae55b
Add ir_hierarchical_visitor base class and associated infrastructure
...
This type of visitor should eventually replace all or almost all
current uses of ir_visitor.
2010-05-17 12:03:13 -07:00
Ian Romanick
86790dd43f
Replace find_dead_code with visit_exec_list
...
find_dead_code appears to be an open-coded version of visit_exec_list
that was implemented first.
2010-05-17 12:03:13 -07:00
Ian Romanick
5d82e239f9
Use ir_rvalue::variable_referenced instead of open-coding it
2010-05-14 17:36:00 -07:00
Ian Romanick
2b3c476fa0
Add ir_rvalue::variable_referenced
2010-05-14 17:35:42 -07:00
Kenneth Graunke
67e07ad3a3
Refresh autogenerated builtin_function.cpp.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
c8de850dd5
Implement "tan" builtin.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
57e7da173e
Implement "sin" and "cos" builtins via new expression operators.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
6a9b1e1f06
Implement "cross" builtin.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
d9bda3c29d
Implement "fract" builtin.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
a4b7b5a654
Implement "sign" builtin via a new expression operator.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
c2de187523
Implement "smoothstep" builtin.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
a2b63d3ed1
Implement "step" builtin.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
9287ecc3aa
Integrate generate_builtins.pl into the build process.
...
make will now regenerate builtin_function.cpp whenever you
change/add/remove files in the builtins/* folders.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
b3262128fe
Replace old builtin_function.cpp with new autogenerated one.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
4c7367b3f9
Add a perl script to generate builtin_function.cpp.
...
Usage: ./builtins/tools/generate_builtins.pl > builtin_function.cpp
2010-05-14 16:34:46 -07:00
Kenneth Graunke
a40e68b256
Fix bogus expression typing in various builtins.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
e4afc64290
Initial commit of IR for builtins.
...
These were all generated by Eric's existing builtin_functions.cpp; I split
the uvec* signatures out of 110 into the 130 folder.
2010-05-14 16:34:46 -07:00
Kenneth Graunke
f6c90d8b34
ir_reader: Set function signatures as defined.
2010-05-14 16:34:46 -07:00
Eric Anholt
c05bc5b7cc
FS gl_FragCoord and and gl_FrontFacing are FS ins, not outs.
2010-05-14 16:11:37 -07:00
Ian Romanick
2384937835
Fix function call parameter printer to omit extraneous leading comma
...
The output of all test cases was verified to be the same using diff.
2010-05-14 16:07:04 -07:00
Ian Romanick
2b97dc657a
Replace many uses of foreach_list with foreach_list_typed
2010-05-10 17:42:05 -07:00
Ian Romanick
4cfbad9e4d
exec_list: Add foreach_list_typed and foreach_list_typed_const
...
These variations are parameterized by the type of the nodes in the
list. This enables skipping the explicit usage of exec_node_data in
the loop body.
2010-05-10 17:40:41 -07:00
Ian Romanick
304ea90233
Convert ast_node use of simple_node to exec_list and exec_node
2010-05-10 11:17:53 -07:00
Ian Romanick
752c905b8c
exec_list: Add simpler exec_list for-each macros
2010-05-10 11:17:23 -07:00
Ian Romanick
43bfc2b6b5
exec_list: Add macros to get ptr to structure containing a node
...
This has some ugly hackery to work-around C++ fail. I have
emperically determined that it works in all the cases that matter.
2010-05-10 11:16:24 -07:00
Ian Romanick
4f9d72fa9e
Loop bodies, then-statements, and else-statements are not lists
...
The statement making up a loop body, a then-statement, or an
else-statement are single nodes. If the statement is a block, the
single node will be an ast_compound_statement. There is no need to
loop at the top level when processing these statements.
2010-05-10 11:10:26 -07:00
Ian Romanick
f4e06981cc
Remove unnecessary include of simple_list.h
2010-05-10 11:04:22 -07:00
Ian Romanick
3521f0bdd5
Store AST function call parameters in expressions
...
Previously the list of function call parameters was stored as a
circular list in ast_expression::subexpressions[1]. They are now
stored as a regular list in ast_expression::expressions.
2010-05-10 11:04:02 -07:00
Eric Anholt
bdd9b1f3ff
Move optimization pass prototypes to a single header.
2010-05-05 11:47:33 -07:00
Eric Anholt
6255a1f4c6
ir_dead_code_local: Remove redundant assignments within basic blocks.
...
This cleans up a bunch of junk code in some of the GLSL parser tests,
and could potentially help real-world too (particularly after copy
propagation has happened).
2010-05-05 11:08:18 -07:00
Eric Anholt
dc1dbd65e1
ir_visit_tree: Make sure we visit dereference targets, too.
...
Found this with the local dead code pass, which never saw variable
dereferences occurring.
2010-05-05 11:08:18 -07:00
Eric Anholt
aef0aaee67
ir_copy_propagation: Fix up the doxygen about the file.
2010-05-05 09:38:09 -07:00
Eric Anholt
8e75de3164
ir_copy_propagation: Return true if we optimized out any assignments.
...
This may trigger other optimization phases to make more progress themselves.
2010-05-05 09:32:44 -07:00
Eric Anholt
4e2c0b99d9
ir_copy_propagation: Handle swizzles and array derefs on LHS of assign.
...
This improves the ACP to not get cleared when more complicated assignments
occur, cleaning up more redundant copies in programs.
2010-05-05 09:27:50 -07:00
Eric Anholt
5c89f0ecb9
ir_copy_propagation: New pass to rewrite dereferences to avoid copies.
...
This is pretty basic. Right now it only handles pure assignments --
same type on each side, no swizzling, and only within basic blocks.
2010-05-04 17:00:42 -07:00
Eric Anholt
05a4e59c24
ir_to_mesa.cpp: Fix missing types on some ir_swizzles.
...
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.
2010-05-03 17:09:31 -07:00
Eric Anholt
3bc8b68436
Remove the pedantic C junk.
...
Mesa doesn't use pedantic ANSI C89, so I have no idea why we would.
2010-05-03 11:41:00 -07:00
Eric Anholt
3623df68fa
Store warnings and errors in a parser state infolog.
...
Cleans up compile warning about unused state in _mesa_glsl_warning. We
would want infolog handling roughly like this anyway.
2010-05-03 11:40:26 -07:00
Eric Anholt
81f49a774e
Quiet warnings about ir_shader not being handled in places it's not needed.
2010-05-03 11:40:26 -07:00
Eric Anholt
7f436a837c
Use the AM_SILENT_RULES when available.
2010-05-03 11:40:26 -07:00
Eric Anholt
a35e62d97a
glsl_lexer: Quiet warning about unused unput().
2010-05-03 11:40:25 -07:00
Ian Romanick
970353e047
Merge branch 'fixes'
2010-05-03 10:15:02 -07:00