Eric Anholt
4b6fd39c89
Add a virtual clone() method to ir_instruction.
...
This will be used by function inlining, the linker, and avoiding double
usage of the LHS deref chains in ++, *=, and similar operations.
2010-06-23 15:20:29 -07:00
Eric Anholt
ac95f2f8c8
Include stdio.h and stdlib.h everywhere, and don't cook our own #define NULL.
2010-06-22 12:30:55 -07:00
Ian Romanick
f8b88bea0f
ir_constant_visitor: Type of constant result is same as original expression
...
The type of the resulting constant must be the same as the type of the
original expression. The changes to the code require that the case
where an unhandled expression is received, and there really shouldn't
be any of these, must be an exit point.
2010-06-11 17:12:12 -07:00
Ian Romanick
083d75a942
ir_constant_visitor: Types of ir_binop_{equal,nequal} must match
...
The types must match exactly, so there is no reason to check the types here.
2010-06-11 17:11:14 -07:00
Ian Romanick
4daaab6040
ir_constant_visitor: Use 'union ir_constant_data' in expression handler
2010-06-11 17:11:06 -07:00
Ian Romanick
0bb70a30d5
ir_constant_visitor: Use 'union ir_constant_data' instead of open-coded version
2010-06-11 15:49:49 -07:00
Ian Romanick
39d6dd3537
ir_constant_visitor: Handle bool-to-int and int-to-bool
2010-06-11 15:43:59 -07:00
Ian Romanick
c2ba619092
ir_constant_visitor: Handle constant swizzles
2010-06-11 15:43:59 -07:00
Ian Romanick
9b92af9ebc
ir_constant_visitor: Handle array access of constant vectors and matrices
2010-06-11 15:43:56 -07:00
Ian Romanick
253dedeb6c
ir_constant_visitor: Handle dereferences of constant records
2010-06-11 15:37:27 -07:00
Ian Romanick
d4b33edbd0
ir_constant_visitor: Use clone to create a constant from a variable reference
2010-06-11 13:51:42 -07:00
Ian Romanick
7dc2b71a89
Add float/bool conversion to ir_constant_expression.cpp.
2010-06-11 13:51:42 -07:00
Kenneth Graunke
d6a32d4b54
ir_constant_visitor: Add support for dFdx and dFdy operations.
...
If the argument is a constant expression...it's not changing per pixel,
so the result is simply 0.
2010-06-09 15:23:40 -07:00
Kenneth Graunke
26d74cd1d1
Add stub visitor support for ir_texture.
2010-06-09 11:14:57 -07:00
Eric Anholt
43ad37aa88
ir_constant_expression: Handle several floating point unops.
...
Cleans up a bunch of pointless operations in a GStreamer fragment shader.
2010-06-01 15:15:04 -07:00
Ian Romanick
36ea28646c
Refactor ir_dereference data fields to subclasses
2010-05-26 15:23:25 -07:00
Ian Romanick
c7b1046a9f
Refactor ir_dereference support for ir_visitor
...
Move the accept method for visitors from ir_dereference to the derived
classes.
2010-05-26 15:23:25 -07:00
Kenneth Graunke
3289886688
Remove ir_label since it is no longer used.
2010-04-21 15:37:10 -07:00
Ian Romanick
77cce649c9
Add support for bool to ir_equal and ir_nequal constant handling
2010-04-07 16:49:25 -07:00
Ian Romanick
f8e31e00b1
Add ir_loop_jump to represent 'break' and 'continue' in loops
2010-04-07 11:42:30 -07:00
Ian Romanick
fad607a9be
Add ir_loop to represent loops
...
This touches a lot of files because everything derived from ir_visitor
has to be updated. This is the primary disadvantage of the visitor pattern.
2010-04-07 11:41:50 -07:00
Eric Anholt
af18641f0a
Add float/int conversion to ir_constant_expression.cpp.
...
Gives CorrectParse2.frag one more constant folding.
2010-04-06 11:42:34 -07:00
Eric Anholt
326c676236
Handle constant expressions using derefs of const values.
...
Fixes CorrectParse1.frag and makes for a ton of folding in
CorrectParse2.frag.
2010-04-06 11:42:34 -07:00
Eric Anholt
ec1949e804
Add support for =, != to ir_constant_expresion.cpp
...
This results in constant folding of one more expression in CorrectParse2.frag.
2010-04-06 11:42:34 -07:00
Eric Anholt
85171c2dd8
Add ir_constant_expression.cpp support for <, >, <=, >=.
...
This results in folding one more constant expression in CorrectParse2.frag.
2010-04-06 11:42:34 -07:00
Eric Anholt
d251b92f8d
Add some more operations to ir_constant_expression.cpp.
2010-04-02 11:22:41 -07:00
Eric Anholt
d98da9738e
Make ir_constant_expression.cpp support multi-component types.
2010-04-02 11:22:41 -07:00
Eric Anholt
160d092507
Simplify ir_constant_expression.cpp by factoring operand computation out.
2010-04-02 11:22:41 -07:00
Eric Anholt
528bb85359
Handle logic not in constant expression evaluation.
2010-04-02 11:22:41 -07:00
Eric Anholt
a576f9d84c
Start trying to fill in a few bits of ir_constant_expression.cpp
...
This makes a little progress on CorrectParse2.frag.
2010-04-02 11:05:16 -07:00
Ian Romanick
1cf43a4331
Initial bits of constant expression evaluator
...
Currently only works for constants. The rest will be added later.
2010-03-30 16:56:50 -07:00