class ANNGroupBuilder
{
public:
- ANNGroupBuilder(enco::Code *code) : _code{code}
+ ANNGroupBuilder(ANNContext *ctx) : _ctx{ctx}
{
// DO NOTHING
}
Compatibility kind(const Appender &appender) const;
public:
- void build(void) const;
+ void build(enco::Code *code) const;
private:
- enco::Code *_code;
+ ANNContext *_ctx;
};
Compatibility ANNGroupBuilder::kind(const Appender &app) const
Compatibility ANNGroupBuilder::kind(const coco::Block *blk) const
{
- return (_code->ann()->find(blk) != nullptr) ? COMPATIBLE : INCOMPATIBLE;
+ return (_ctx->find(blk) != nullptr) ? COMPATIBLE : INCOMPATIBLE;
}
-void ANNGroupBuilder::build(void) const
+void ANNGroupBuilder::build(enco::Code *code) const
{
- auto m = _code->module();
- auto d = _code->data();
+ auto m = code->module();
+ auto d = code->data();
ANNOpBuilder op_builder;
if (COMPATIBLE == t)
{
- _code->ann()->create(blk);
+ _ctx->create(blk);
}
};
if (cur_append)
{
// Update Android NN IR if the current instruction is compatible
- auto binder = _code->ann()->find(dst_blk);
+ auto binder = _ctx->find(dst_blk);
assert(binder != nullptr);
cur_append(binder);
}
void SplitPass::runOnCode(enco::Code *code) const
{
- ANNGroupBuilder group_builder{code};
- group_builder.build();
+ ANNGroupBuilder group_builder{code->ann()};
+ group_builder.build(code);
ANNModuleBuilder module_builder;
module_builder.build(code->ann());