This commit allows users to construct 'push' statement through 'module'.
Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
#include "nest/VarContext.h"
#include "nest/DomainContext.h"
+#include "nest/Block.h"
namespace nest
{
public:
DomainContext &domain(void) { return _domain_ctx; }
const DomainContext &domain(void) const { return _domain_ctx; }
+
+private:
+ Block _block;
+
+public:
+ const Block &block(void) const { return _block; }
+
+public:
+ void push(const Expr &expr);
};
} // namespace nest
--- /dev/null
+#include "nest/Module.h"
+
+namespace nest
+{
+
+void Module::push(const Expr &expr)
+{
+ auto stmt = std::make_shared<stmt::PushNode>(expr);
+ _block.append(stmt);
+}
+
+} // namespace nest
create(m, {1, 3, 3});
check(m);
}
+
+TEST(MODULE, push)
+{
+ nest::Module m;
+
+ auto ifm = m.domain().make({1, 3, 3});
+
+ auto var_ch = m.var().make();
+ auto var_row = m.var().make();
+ auto var_col = m.var().make();
+
+ m.push(ifm(var_ch, var_row, var_col));
+
+ ASSERT_EQ(m.block().size(), 1);
+ ASSERT_NE(m.block().at(0)->asPush(), nullptr);
+}