This commit enables to support Floor op for ACL neon.
Signed-off-by: jiseob.jang <jiseob.jang@samsung.com>
#include <arm_compute/runtime/NEON/functions/NEReduceMeanEx.h>
#include <arm_compute/runtime/NEON/functions/NEReshapeLayer.h>
#include <arm_compute/runtime/NEON/functions/NEStridedSlice.h>
+#include <arm_compute/runtime/NEON/functions/NEFloor.h>
#include <arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h>
#include <arm_compute/runtime/NEON/functions/NEFullyConnectedReshapingLayer.h>
#include <arm_compute/runtime/NEON/functions/NETransposeConvLayer.h>
_execution_builder->append(std::move(acl_fn));
}
+void KernelGenerator::visit(const model::operation::FloorNode &node)
+{
+ const auto ofm_index{node.getOutputs().at(0)};
+ const auto ifm_index{node.getInputs().at(model::operation::FloorNode::Input::INPUT)};
+
+ auto ofm_alloc = _tensor_builder->at(ofm_index).get();
+ auto ifm_alloc = _tensor_builder->at(ifm_index).get();
+
+ std::unique_ptr<::arm_compute::IFunction> fn;
+
+ auto l = nnfw::cpp14::make_unique<::arm_compute::NEFloor>();
+
+ l->configure(ifm_alloc->handle(), ofm_alloc->handle());
+
+ fn = std::move(l);
+
+ auto acl_fn = asAclFunction(std::move(fn));
+
+ _execution_builder->append(std::move(acl_fn));
+}
+
void KernelGenerator::visit(const model::operation::FullyConnectedNode &node)
{
using model::operation::FullyConnectedNode;
void visit(const model::operation::MeanNode &) override;
void visit(const model::operation::AvgPool2DNode &) override;
void visit(const model::operation::ConcatNode &) override;
+ void visit(const model::operation::FloorNode &) override;
void visit(const model::operation::FullyConnectedNode &) override;
void visit(const model::operation::MulNode &) override;
void visit(const model::operation::ReLUNode &) override;
void ShapeFixer::visit(const model::operation::ExpNode &) { /* DO NOTHING */}
+void ShapeFixer::visit(const model::operation::FloorNode &) { /* DO NOTHING */}
+
void ShapeFixer::visit(const model::operation::FullyConnectedNode &node)
{
using model::operation::FullyConnectedNode;
void visit(const model::operation::AvgPool2DNode &) override;
void visit(const model::operation::ConcatNode &) override;
void visit(const model::operation::ExpNode &) override;
+ void visit(const model::operation::FloorNode &) override;
void visit(const model::operation::FullyConnectedNode &) override;
void visit(const model::operation::MulNode &) override;
void visit(const model::operation::ReLUNode &) override;
assert(_ctx.at(output_index).typeInfo().type() == _ctx.at(input_index).typeInfo().type());
}
+void OperationValidator::visit(const model::operation::FloorNode &node)
+{
+ const auto output_index{node.getOutputs().at(0)};
+ const auto input_index{node.getInputs().at(model::operation::FloorNode::Input::INPUT)};
+
+ UNUSED_RELEASE(output_index);
+ UNUSED_RELEASE(input_index);
+
+ assert(_ctx.at(output_index).shape() == _ctx.at(input_index).shape());
+ assert(_ctx.at(output_index).typeInfo().type() == _ctx.at(input_index).typeInfo().type());
+}
+
void OperationValidator::visit(const model::operation::HashtableLookupNode &node)
{
const auto output_index{
void visit(const model::operation::SpaceToDepthNode &node) override;
void visit(const model::operation::EmbeddingLookupNode &node) override;
void visit(const model::operation::ExpNode &node) override;
+ void visit(const model::operation::FloorNode &node) override;
void visit(const model::operation::HashtableLookupNode &node) override;
void visit(const model::operation::TransposeConvNode &node) override;
void visit(const model::operation::GatherNode &node) override;
GeneratedTests.embedding_lookup
GeneratedTests.embedding_lookup_2d_nnfw
GeneratedTests.embedding_lookup_4d_nnfw
-GeneratedTests.floor_
GeneratedTests.greater_equal_ex*
GeneratedTests.hashtable_lookup*
GeneratedTests.l2_normalization*