|
|
|
@ -24,9 +24,11 @@
|
|
|
|
|
|
|
|
|
|
#include "optimizer/optimizer.h"
|
|
|
|
|
#include "optimizer/irpass.h"
|
|
|
|
|
#include "ir/optimizer_caller.h"
|
|
|
|
|
#include "optimizer/irpass/prim_eliminate.h"
|
|
|
|
|
#include "ir/visitor.h"
|
|
|
|
|
#include "operator/ops.h"
|
|
|
|
|
#include "ir/pattern_matcher.h"
|
|
|
|
|
|
|
|
|
|
namespace mindspore {
|
|
|
|
|
namespace opt {
|
|
|
|
@ -191,6 +193,17 @@ class ZeroLikeFillZero : public AnfVisitor {
|
|
|
|
|
AnfNodePtr y_{nullptr};
|
|
|
|
|
PrimitivePtr PrimFill_, PrimShape_, PrimDType_;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// {prim::kPrimDepend, X, ValueCond}->X
|
|
|
|
|
class DependValueElim : public OptimizerCaller {
|
|
|
|
|
public:
|
|
|
|
|
AnfNodePtr operator()(const OptimizerPtr &, const AnfNodePtr &node) override {
|
|
|
|
|
PatternNode<AnfNodePtr> x, cond;
|
|
|
|
|
MATCH_REPLACE_IF(node, PPrimitive(prim::kPrimDepend, x, cond), x, IsVNode(cond.GetNode(node)));
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace irpass
|
|
|
|
|
} // namespace opt
|
|
|
|
|
} // namespace mindspore
|
|
|
|
|