normalize_ops.cpp 933 Bytes
Newer Older
Shucai Xiao's avatar
Shucai Xiao committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <unordered_set>
#include <migraphx/normalize_attributes.hpp>
#include <migraphx/normalize_ops.hpp>
#include <migraphx/iterator_for.hpp>
#include <migraphx/ranges.hpp>
#include <migraphx/auto_any_cast.hpp>
#include <migraphx/value.hpp>
#include <migraphx/make_op.hpp>
#include <migraphx/instruction.hpp>
#include <migraphx/instruction_ref.hpp>

namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS {

void normalize_ops::apply(module& m) const
{
    for(auto ins : iterator_for(m))
    {
        auto inputs = ins->inputs();
        if(inputs.empty())
            continue;

charlie's avatar
charlie committed
23
        auto s                    = inputs[0]->get_shape();
Shucai Xiao's avatar
Shucai Xiao committed
24
        migraphx::operation tuned_op = ins->get_operator();
charlie's avatar
charlie committed
25
        if(normalize_attributes(tuned_op, s))
Shucai Xiao's avatar
Shucai Xiao committed
26
27
        {
            m.replace_instruction(ins, tuned_op, inputs);
28
            ins->set_normalized();
Shucai Xiao's avatar
Shucai Xiao committed
29
30
31
32
33
34
        }
    }
}

} // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx