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