Commit bd86c201 authored by Shucai Xiao's avatar Shucai Xiao
Browse files

clang format

parent bbbf98a4
...@@ -90,15 +90,12 @@ program& program::operator=(program&&) noexcept = default; ...@@ -90,15 +90,12 @@ program& program::operator=(program&&) noexcept = default;
program::~program() noexcept = default; program::~program() noexcept = default;
// copy constructor // copy constructor
program::program(const program& p) noexcept program::program(const program& p) noexcept { copy(p); }
{
copy(p);
}
// copy assignment operator // copy assignment operator
program& program::operator=(const program& p) noexcept program& program::operator=(const program& p) noexcept
{ {
if (this != &p) if(this != &p)
{ {
copy(p); copy(p);
} }
...@@ -109,44 +106,49 @@ program& program::operator=(const program& p) noexcept ...@@ -109,44 +106,49 @@ program& program::operator=(const program& p) noexcept
void program::copy(const program& p) void program::copy(const program& p)
{ {
// clean the current program // clean the current program
if (!impl) if(!impl)
{ {
impl = std::make_unique<program_impl>(); impl = std::make_unique<program_impl>();
} }
else if (!impl->instructions.empty()) else if(!impl->instructions.empty())
{ {
remove_instructions(begin(), end()); remove_instructions(begin(), end());
} }
impl->ctx = p.impl->ctx; impl->ctx = p.impl->ctx;
std::unordered_map<instruction_ref, instruction_ref> ins_map; std::unordered_map<instruction_ref, instruction_ref> ins_map;
for (auto ins : iterator_for(p)) for(auto ins : iterator_for(p))
{ {
instruction_ref copy_ins{}; instruction_ref copy_ins{};
if (ins->name() == "@literal") if(ins->name() == "@literal")
{ {
auto l = ins->get_literal(); auto l = ins->get_literal();
copy_ins = impl->instructions.insert(impl->instructions.end(), instruction{l}); copy_ins = impl->instructions.insert(impl->instructions.end(), instruction{l});
} }
else if (ins->name() == "@param") else if(ins->name() == "@param")
{ {
auto&& name = any_cast<builtin::param>(ins->get_operator()).parameter; auto&& name = any_cast<builtin::param>(ins->get_operator()).parameter;
auto s = ins->get_shape(); auto s = ins->get_shape();
copy_ins = impl->instructions.insert(impl->instructions.end(), {builtin::param{std::move(name)}, std::move(s), {}}); copy_ins = impl->instructions.insert(
impl->instructions.end(), {builtin::param{std::move(name)}, std::move(s), {}});
} }
else if (ins->name() == "@outline") else if(ins->name() == "@outline")
{ {
auto s = ins->get_shape(); auto s = ins->get_shape();
copy_ins = impl->instructions.insert(impl->instructions.end(), {builtin::outline{s}, s, {}}); copy_ins =
impl->instructions.insert(impl->instructions.end(), {builtin::outline{s}, s, {}});
} }
else else
{ {
// retrieve its mapped input // retrieve its mapped input
auto inputs = ins->inputs(); auto inputs = ins->inputs();
// ensure all inputs have its corresponding copy instructions // ensure all inputs have its corresponding copy instructions
assert(std::all_of(inputs.begin(), inputs.end(), [&](auto i) { return ins_map.count(i) > 0; })); assert(std::all_of(
inputs.begin(), inputs.end(), [&](auto i) { return ins_map.count(i) > 0; }));
std::vector<instruction_ref> copy_inputs(inputs.size()); std::vector<instruction_ref> copy_inputs(inputs.size());
std::transform(inputs.begin(), inputs.end(), copy_inputs.begin(), [&] (auto i) { return ins_map[i]; }); std::transform(inputs.begin(), inputs.end(), copy_inputs.begin(), [&](auto i) {
return ins_map[i];
});
copy_ins = add_instruction(ins->get_operator(), copy_inputs); copy_ins = add_instruction(ins->get_operator(), copy_inputs);
} }
......
...@@ -36,9 +36,9 @@ TEST_CASE(program_copy) ...@@ -36,9 +36,9 @@ TEST_CASE(program_copy)
migraphx::shape s{migraphx::shape::float_type, {3, 4, 5}}; migraphx::shape s{migraphx::shape::float_type, {3, 4, 5}};
std::vector<float> data(3 * 4 * 5); std::vector<float> data(3 * 4 * 5);
std::iota(data.begin(), data.end(), 1.0f); std::iota(data.begin(), data.end(), 1.0f);
auto l2 = p.add_literal(migraphx::literal(s, data)); auto l2 = p.add_literal(migraphx::literal(s, data));
auto p1 = p.add_parameter("x", s); auto p1 = p.add_parameter("x", s);
auto po = p.add_outline(s); auto po = p.add_outline(s);
auto sum = p.add_instruction(migraphx::op::add{}, l2, p1); auto sum = p.add_instruction(migraphx::op::add{}, l2, p1);
p.add_instruction(migraphx::op::mul{}, sum, po); p.add_instruction(migraphx::op::mul{}, sum, po);
...@@ -60,7 +60,7 @@ TEST_CASE(program_copy) ...@@ -60,7 +60,7 @@ TEST_CASE(program_copy)
{ {
auto p1 = create_program_1(); auto p1 = create_program_1();
auto p2 = create_program(); auto p2 = create_program();
p2 = p1; p2 = p1;
EXPECT(p1 == p2); EXPECT(p1 == p2);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment