Commit Graph

29 Commits

Author SHA1 Message Date
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