summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-05-26 17:42:03 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-06-09 11:14:57 -0700
commit26d74cd1d140786b8f4b1ccbaf500a16e68eec3c (patch)
tree56e280b8452d98a2486a54a91491942f69090d9e
parentbe298063b501a3e0bd769209f531fd23e4e4646e (diff)
Add stub visitor support for ir_texture.
-rw-r--r--ir.h7
-rw-r--r--ir_constant_expression.cpp10
-rw-r--r--ir_constant_folding.cpp9
-rw-r--r--ir_function_inlining.cpp18
-rw-r--r--ir_hierarchical_visitor.cpp14
-rw-r--r--ir_hierarchical_visitor.h2
-rw-r--r--ir_hv_accept.cpp6
-rw-r--r--ir_visitor.h1
8 files changed, 67 insertions, 0 deletions
diff --git a/ir.h b/ir.h
index 44ffdc554e..a286e7b932 100644
--- a/ir.h
+++ b/ir.h
@@ -775,6 +775,13 @@ public:
/* empty */
}
+ virtual void accept(ir_visitor *v)
+ {
+ v->visit(this);
+ }
+
+ virtual ir_visitor_status accept(ir_hierarchical_visitor *);
+
/**
* Return a string representing the ir_texture_opcode.
*/
diff --git a/ir_constant_expression.cpp b/ir_constant_expression.cpp
index 361a7a1630..e89b5bc768 100644
--- a/ir_constant_expression.cpp
+++ b/ir_constant_expression.cpp
@@ -67,6 +67,7 @@ public:
virtual void visit(ir_function_signature *);
virtual void visit(ir_function *);
virtual void visit(ir_expression *);
+ virtual void visit(ir_texture *);
virtual void visit(ir_swizzle *);
virtual void visit(ir_dereference_variable *);
virtual void visit(ir_dereference_array *);
@@ -503,6 +504,15 @@ ir_constant_visitor::visit(ir_expression *ir)
void
+ir_constant_visitor::visit(ir_texture *ir)
+{
+ // FINISHME: Do stuff with texture lookups
+ (void) ir;
+ value = NULL;
+}
+
+
+void
ir_constant_visitor::visit(ir_swizzle *ir)
{
(void) ir;
diff --git a/ir_constant_folding.cpp b/ir_constant_folding.cpp
index b3f27c80c8..5dc4a7dc65 100644
--- a/ir_constant_folding.cpp
+++ b/ir_constant_folding.cpp
@@ -60,6 +60,7 @@ public:
virtual void visit(ir_function_signature *);
virtual void visit(ir_function *);
virtual void visit(ir_expression *);
+ virtual void visit(ir_texture *);
virtual void visit(ir_swizzle *);
virtual void visit(ir_dereference_variable *);
virtual void visit(ir_dereference_array *);
@@ -115,6 +116,14 @@ ir_constant_folding_visitor::visit(ir_expression *ir)
void
+ir_constant_folding_visitor::visit(ir_texture *ir)
+{
+ // FINISHME: Do stuff with texture lookups
+ (void) ir;
+}
+
+
+void
ir_constant_folding_visitor::visit(ir_swizzle *ir)
{
ir->val->accept(this);
diff --git a/ir_function_inlining.cpp b/ir_function_inlining.cpp
index 7cc8a325ff..d66eceedb8 100644
--- a/ir_function_inlining.cpp
+++ b/ir_function_inlining.cpp
@@ -50,6 +50,7 @@ public:
virtual ir_visitor_status visit_enter(ir_call *);
virtual ir_visitor_status visit_enter(ir_assignment *);
virtual ir_visitor_status visit_enter(ir_return *);
+ virtual ir_visitor_status visit_enter(ir_texture *);
virtual ir_visitor_status visit_enter(ir_swizzle *);
bool progress;
@@ -118,6 +119,7 @@ public:
virtual void visit(ir_function_signature *);
virtual void visit(ir_function *);
virtual void visit(ir_expression *);
+ virtual void visit(ir_texture *);
virtual void visit(ir_swizzle *);
virtual void visit(ir_dereference_variable *);
virtual void visit(ir_dereference_array *);
@@ -197,6 +199,14 @@ ir_function_cloning_visitor::visit(ir_expression *ir)
void
+ir_function_cloning_visitor::visit(ir_texture *ir)
+{
+ // FINISHME: Do stuff with texture lookups
+ (void) ir;
+}
+
+
+void
ir_function_cloning_visitor::visit(ir_swizzle *ir)
{
ir->val->accept(this);
@@ -437,6 +447,14 @@ ir_function_inlining_visitor::visit_enter(ir_return *ir)
ir_visitor_status
+ir_function_inlining_visitor::visit_enter(ir_texture *ir)
+{
+ (void) ir;
+ return visit_continue_with_parent;
+}
+
+
+ir_visitor_status
ir_function_inlining_visitor::visit_enter(ir_swizzle *ir)
{
(void) ir;
diff --git a/ir_hierarchical_visitor.cpp b/ir_hierarchical_visitor.cpp
index ad47487835..fd77391973 100644
--- a/ir_hierarchical_visitor.cpp
+++ b/ir_hierarchical_visitor.cpp
@@ -109,6 +109,20 @@ ir_hierarchical_visitor::visit_leave(ir_expression *ir)
}
ir_visitor_status
+ir_hierarchical_visitor::visit_enter(ir_texture *ir)
+{
+ (void) ir;
+ return visit_continue;
+}
+
+ir_visitor_status
+ir_hierarchical_visitor::visit_leave(ir_texture *ir)
+{
+ (void) ir;
+ return visit_continue;
+}
+
+ir_visitor_status
ir_hierarchical_visitor::visit_enter(ir_swizzle *ir)
{
(void) ir;
diff --git a/ir_hierarchical_visitor.h b/ir_hierarchical_visitor.h
index d3ba508cf1..85bc5bb150 100644
--- a/ir_hierarchical_visitor.h
+++ b/ir_hierarchical_visitor.h
@@ -113,6 +113,8 @@ public:
virtual ir_visitor_status visit_leave(class ir_function *);
virtual ir_visitor_status visit_enter(class ir_expression *);
virtual ir_visitor_status visit_leave(class ir_expression *);
+ virtual ir_visitor_status visit_enter(class ir_texture *);
+ virtual ir_visitor_status visit_leave(class ir_texture *);
virtual ir_visitor_status visit_enter(class ir_swizzle *);
virtual ir_visitor_status visit_leave(class ir_swizzle *);
virtual ir_visitor_status visit_enter(class ir_dereference_array *);
diff --git a/ir_hv_accept.cpp b/ir_hv_accept.cpp
index 8d535e24fa..7c1798a051 100644
--- a/ir_hv_accept.cpp
+++ b/ir_hv_accept.cpp
@@ -156,6 +156,12 @@ done:
return v->visit_leave(this);
}
+ir_visitor_status
+ir_texture::accept(ir_hierarchical_visitor *v)
+{
+ return visit_continue_with_parent;
+}
+
ir_visitor_status
ir_swizzle::accept(ir_hierarchical_visitor *v)
diff --git a/ir_visitor.h b/ir_visitor.h
index ba30858fe6..a6f9d2b7ee 100644
--- a/ir_visitor.h
+++ b/ir_visitor.h
@@ -48,6 +48,7 @@ public:
virtual void visit(class ir_function_signature *) = 0;
virtual void visit(class ir_function *) = 0;
virtual void visit(class ir_expression *) = 0;
+ virtual void visit(class ir_texture *) = 0;
virtual void visit(class ir_swizzle *) = 0;
virtual void visit(class ir_dereference_variable *) = 0;
virtual void visit(class ir_dereference_array *) = 0;