MCPcopy Create free account
hub / github.com/ROCm/AMDMIGraphX / append_pointwise_module

Function append_pointwise_module

src/fuse_pointwise.cpp:141–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141static module::with_inputs append_pointwise_module(instruction_ref ins, instruction_ref output)
142{
143 std::unordered_set<instruction_ref> original_inputs{ins->inputs().begin(), ins->inputs().end()};
144 original_inputs.insert(output->inputs().begin(), output->inputs().end());
145 module pm = *ins->module_inputs().at(0);
146 module_ref xm = output->module_inputs().at(0);
147 const bool dependent = contains(output->inputs(), ins);
148 assert(not dependent or pm.get_returns().size() == 1);
149
150 std::unordered_map<instruction_ref, instruction_ref> map_ins =
151 pm.get_ins_param_map(ins->inputs());
152 if(dependent)
153 map_ins[ins] = pm.get_returns().front();
154 auto returns = pm.fuse(*xm, output->inputs(), &map_ins, nullptr, &to_scalar);
155 if(not is_used_once(ins, &output) or not dependent)
156 {
157 auto ireturns = pm.get_returns();
158 returns.insert(returns.end(), ireturns.begin(), ireturns.end());
159 }
160 pm.replace_return(returns);
161 auto inputs = find_inputs(map_ins, original_inputs, &pm);
162 return {std::move(pm), inputs};
163}
164
165static void replace_with_tuple(module& m, instruction_ref ins, instruction_ref rep, bool first)
166

Callers 1

merge_instructionFunction · 0.85

Calls 14

containsFunction · 0.85
is_used_onceFunction · 0.85
find_inputsFunction · 0.85
atMethod · 0.80
get_returnsMethod · 0.80
get_ins_param_mapMethod · 0.80
frontMethod · 0.80
replace_returnMethod · 0.80
beginMethod · 0.45
inputsMethod · 0.45
endMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected