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

Function find_input_pointwise

src/fuse_pointwise.cpp:217–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

215}
216
217static auto find_input_pointwise(const module& m, instruction_ref ins, bool multi_out)
218{
219 auto it = std::find_if(ins->inputs().begin(), ins->inputs().end(), [&](auto i) {
220 return i->name() == "pointwise" and i->outputs().size() == 1 and m.has_instruction(i);
221 });
222 if(it == ins->inputs().end() and multi_out)
223 {
224 it = std::find_if(ins->inputs().begin(), ins->inputs().end(), [&](auto i) {
225 if(not m.has_instruction(i))
226 return false;
227 auto base_distance = std::distance(i, ins);
228 return i->name() == "pointwise" and
229 std::none_of(i->outputs().begin(), i->outputs().end(), [&](auto output) {
230 if(not m.has_instruction(output))
231 return true;
232 if(output == ins)
233 return false;
234 if(std::distance(i, output) > base_distance)
235 return false;
236 return reaches(output, ins, &m);
237 });
238 });
239 }
240 return it;
241}
242
243static std::vector<instruction_ref>
244find_output_pointwise(const module& m, instruction_ref ins, bool multi_out)

Callers 1

find_pointwise_modulesFunction · 0.85

Calls 11

distanceFunction · 0.85
reachesFunction · 0.85
outputsMethod · 0.80
find_ifFunction · 0.50
none_ofFunction · 0.50
beginMethod · 0.45
inputsMethod · 0.45
endMethod · 0.45
nameMethod · 0.45
sizeMethod · 0.45
has_instructionMethod · 0.45

Tested by

no test coverage detected