MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / expand_elem_chain

Function expand_elem_chain

src/gopt/test/basic_arith.cpp:28–42  ·  view source on GitHub ↗

! * get all operands of a chain of element-wise oprs of the same mode */

Source from the content-addressed store, hash-verified

26 * get all operands of a chain of element-wise oprs of the same mode
27 */
28std::vector<VarNode*> expand_elem_chain(VarNode* var, opr::Elemwise::Mode mode) {
29 if (var->owner_opr()->same_type<opr::Elemwise>()) {
30 auto&& op = var->owner_opr()->cast_final<opr::Elemwise>();
31 if (op.param().mode == mode) {
32 auto ret = expand_elem_chain(op.input(0), mode);
33 for (size_t i = 1; i < op.input().size(); ++i) {
34 auto cur = expand_elem_chain(op.input()[i], mode);
35 ret.reserve(ret.size() + cur.size());
36 ret.insert(ret.end(), cur.begin(), cur.end());
37 }
38 return ret;
39 }
40 }
41 return {var};
42}
43
44SymbolVar fma3(SymbolVar a, SymbolVar b, SymbolVar c) {
45 return Elemwise::make({a, b, c}, Mode::FUSE_MUL_ADD3);

Callers 1

TESTFunction · 0.85

Calls 8

owner_oprMethod · 0.45
paramMethod · 0.45
inputMethod · 0.45
sizeMethod · 0.45
reserveMethod · 0.45
insertMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected