1b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt/*
2b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * Copyright © 2010 Intel Corporation
3b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt *
4b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * Permission is hereby granted, free of charge, to any person obtaining a
5b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * copy of this software and associated documentation files (the "Software"),
6b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * to deal in the Software without restriction, including without limitation
7b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * and/or sell copies of the Software, and to permit persons to whom the
9b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * Software is furnished to do so, subject to the following conditions:
10b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt *
11b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * The above copyright notice and this permission notice (including the next
12b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * paragraph) shall be included in all copies or substantial portions of the
13b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * Software.
14b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt *
15b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * DEALINGS IN THE SOFTWARE.
22b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt */
23b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
24b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt/**
25b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * \file ir_rvalue_visitor.cpp
26b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt *
27b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * Generic class to implement the common pattern we have of wanting to
28b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * visit each ir_rvalue * and possibly change that node to a different
29b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt * class.
30b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt */
31b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
32b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt#include "ir.h"
33b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt#include "ir_visitor.h"
34b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt#include "ir_rvalue_visitor.h"
35b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt#include "ir_print_visitor.h"
36b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt#include "glsl_types.h"
37b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
38b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
398c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_expression *ir)
40b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
41b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   unsigned int operand;
42b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
43b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   for (operand = 0; operand < ir->get_num_operands(); operand++) {
44b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&ir->operands[operand]);
45b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   }
46b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
47b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
48b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
49b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
50b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
518c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_texture *ir)
52b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
53b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->coordinate);
54b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->projector);
55b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->shadow_comparitor);
56c5a27b5939427bdc95c926b450ed3de1ff4baafbKenneth Graunke   handle_rvalue(&ir->offset);
57b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
58b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   switch (ir->op) {
59b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   case ir_tex:
60b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      break;
61b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   case ir_txb:
62b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&ir->lod_info.bias);
63b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      break;
64b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   case ir_txf:
65b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   case ir_txl:
661e3bcbdf31f09666ba358f35ff9486faee3642caKenneth Graunke   case ir_txs:
67b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&ir->lod_info.lod);
68b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      break;
69b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   case ir_txd:
70b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&ir->lod_info.grad.dPdx);
71b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&ir->lod_info.grad.dPdy);
72b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      break;
73b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   }
74b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
75b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
76b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
77b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
78b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
798c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_swizzle *ir)
80b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
81b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->val);
82b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
83b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
84b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
85b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
868c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_dereference_array *ir)
87b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
88c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick   /* The array index is not the target of the assignment, so clear the
89c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick    * 'in_assignee' flag.  Restore it after returning from the array index.
90c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick    */
91c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick   const bool was_in_assignee = this->in_assignee;
92c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick   this->in_assignee = false;
93b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->array_index);
94c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick   this->in_assignee = was_in_assignee;
95c8ee8e07f7cc8f18d367ffcec065b45f8a6976f4Ian Romanick
96b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->array);
97b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
98b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
99b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
100b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
1018c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_dereference_record *ir)
102b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
103b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->record);
104b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
105b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
106b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
107b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
1088c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_assignment *ir)
109b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
110b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->rhs);
111b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->condition);
112b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
113b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
114b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
115b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
116b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
1178c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_call *ir)
118b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
119b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   foreach_iter(exec_list_iterator, iter, *ir) {
120b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      ir_rvalue *param = (ir_rvalue *)iter.get();
121b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      ir_rvalue *new_param = param;
122b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      handle_rvalue(&new_param);
123b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
124b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      if (new_param != param) {
125b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt	 param->replace_with(new_param);
126b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt      }
127b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   }
128b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
129b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
130b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
131b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
1328c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_return *ir)
133b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
134b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->value);;
135b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
136b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
137b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt
138b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholtir_visitor_status
1398c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_base_visitor::rvalue_visit(ir_if *ir)
140b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt{
141b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   handle_rvalue(&ir->condition);
142b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt   return visit_continue;
143b3b0cf6a4c6b23e0ebe7e5f5ab1b7cacf27268b1Eric Anholt}
1448c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1458c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1468c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1478c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_expression *ir)
1488c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1498c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1508c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1518c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1528c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1538c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_texture *ir)
1548c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1558c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1568c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1578c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1588c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1598c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_swizzle *ir)
1608c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1618c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1628c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1638c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1648c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1658c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_dereference_array *ir)
1668c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1678c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1688c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1698c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1708c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1718c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_dereference_record *ir)
1728c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1738c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1748c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1758c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1768c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1778c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_assignment *ir)
1788c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1798c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1808c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1818c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1828c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1838c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_call *ir)
1848c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1858c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1868c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1878c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1888c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1898c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_return *ir)
1908c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1918c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1928c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1938c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
1948c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
1958c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_visitor::visit_leave(ir_if *ir)
1968c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
1978c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
1988c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
1998c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2008c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2018c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_expression *ir)
2028c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2038c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2048c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2058c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2068c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2078c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_texture *ir)
2088c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2098c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2108c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2118c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2128c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2138c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_swizzle *ir)
2148c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2158c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2168c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2178c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2188c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2198c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_dereference_array *ir)
2208c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2218c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2228c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2238c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2248c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2258c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_dereference_record *ir)
2268c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2278c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2288c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2298c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2308c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2318c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_assignment *ir)
2328c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2338c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2348c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2358c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2368c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2378c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_call *ir)
2388c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2398c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2408c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2418c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2428c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2438c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_return *ir)
2448c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2458c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2468c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
2478c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt
2488c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_visitor_status
2498c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholtir_rvalue_enter_visitor::visit_enter(ir_if *ir)
2508c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt{
2518c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt   return rvalue_visit(ir);
2528c2a9838355cfd02356bf7b22eead408d909fe25Eric Anholt}
253