#include <arm_compute/runtime/IFunction.h>
#include <arm_compute/runtime/CL/CLScheduler.h>
+#include "internal/Convert.h"
#include "backend/acl_cl/kernel/View.h"
#include "backend/acl_cl/TensorBuilder.h"
#include "internal/nnapi/kernel/Reader.h"
#include "model.h"
#include "logging.h"
-::arm_compute::TensorShape asTensorShape(int32_t h, int32_t w)
-{
- return ::arm_compute::TensorShape(w, h);
-}
-
-::arm_compute::TensorShape asTensorShape(const nnfw::util::feature::Shape &shape)
-{
- return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, 1);
-}
-
-::arm_compute::TensorShape asTensorShape(const nnfw::util::kernel::Shape &shape)
-{
- return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, shape.N);
-}
-
-::arm_compute::TensorInfo asTensorInfo(const nnfw::util::feature::Shape &shape)
-{
- return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32);
-}
-
-::arm_compute::TensorInfo asTensorInfo(const nnfw::util::kernel::Shape &shape)
-{
- return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32);
-}
-
-::arm_compute::TensorInfo asTensorInfo(int32_t size)
-{
- return ::arm_compute::TensorInfo(::arm_compute::TensorShape(size), 1,
- ::arm_compute::DataType::F32);
-}
-
-::arm_compute::TensorInfo asTensorInfo(int32_t h, int32_t w)
-{
- return ::arm_compute::TensorInfo(::arm_compute::TensorShape(w, h), 1,
- ::arm_compute::DataType::F32);
-}
-
#include "codegen/IPlanBuilder.h"
#include "codegen/BackendResolver.h"
const auto bias_size = _ctx.at(bias_index).shape().asVector();
// Set Shape Constraints
- _builder.addShapeConstr(ofm_index, asTensorInfo(ofm_shape));
- _builder.addShapeConstr(ifm_index, asTensorInfo(ifm_shape));
- _builder.addShapeConstr(ker_index, asTensorInfo(ker_shape));
- _builder.addShapeConstr(bias_index, asTensorInfo(bias_size));
+ _builder.addShapeConstr(ofm_index, ::internal::asTensorInfo(ofm_shape));
+ _builder.addShapeConstr(ifm_index, ::internal::asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(ker_index, ::internal::asTensorInfo(ker_shape));
+ _builder.addShapeConstr(bias_index, ::internal::asTensorInfo(bias_size));
// Generate Initializers
auto init_gen = _backend_resolver.getInitializerGenerator(typeid(node));
const auto ifm_shape = _ctx.at(ifm_index).shape().asFeature();
// Set Shape Constraints
- _builder.addShapeConstr(ofm_index, asTensorInfo(ofm_shape));
- _builder.addShapeConstr(ifm_index, asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(ofm_index, ::internal::asTensorInfo(ofm_shape));
+ _builder.addShapeConstr(ifm_index, ::internal::asTensorInfo(ifm_shape));
// Generate Stage
auto stage_gen = _backend_resolver.getStageGenerator(typeid(node));
const auto ifm_shape = _ctx.at(ifm_index).shape().asFeature();
// Set Shape Constraints
- _builder.addShapeConstr(ofm_index, asTensorInfo(ofm_shape));
- _builder.addShapeConstr(ifm_index, asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(ofm_index, ::internal::asTensorInfo(ofm_shape));
+ _builder.addShapeConstr(ifm_index, ::internal::asTensorInfo(ifm_shape));
// Generate Stage
auto stage_gen = _backend_resolver.getStageGenerator(typeid(node));
3);
// Set Shape Constraints (for output)
- _builder.addShapeConstr(ofm_index, asTensorInfo(ofm_shape));
+ _builder.addShapeConstr(ofm_index, ::internal::asTensorInfo(ofm_shape));
// Set Shape Constraints (for input)
uint32_t depth = 0;
{
const ::internal::tflite::operand::Index ifm_index{index};
const auto ifm_shape = _ctx.at(ifm_index).shape().asFeature();
- _builder.addShapeConstr(ifm_index, asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(ifm_index, ::internal::asTensorInfo(ifm_shape));
}
// Generate Stage
const auto bias_size = _ctx.at(bias_index).shape().asVector();
// Set Shape Constraints
- _builder.addShapeConstr(output_index, asTensorInfo(output_size));
- _builder.addShapeConstr(input_index, asTensorInfo(ifm_shape));
- _builder.addShapeConstr(weight_index, asTensorInfo(num_output /*H*/, input_size /*W*/));
- _builder.addShapeConstr(bias_index, asTensorInfo(bias_size));
+ _builder.addShapeConstr(output_index, ::internal::asTensorInfo(output_size));
+ _builder.addShapeConstr(input_index, ::internal::asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(weight_index,
+ ::internal::asTensorInfo(num_output /*H*/, input_size /*W*/));
+ _builder.addShapeConstr(bias_index, ::internal::asTensorInfo(bias_size));
// Generate Initializers
auto init_gen = _backend_resolver.getInitializerGenerator(typeid(node));
assert(ifm_shape.W == 1);
assert((ifm_shape.C * ifm_shape.H * ifm_shape.W) == out_size);
- _builder.addShapeConstr(output_index, asTensorInfo(out_size));
- _builder.addShapeConstr(input_index, asTensorInfo(ifm_shape));
+ _builder.addShapeConstr(output_index, ::internal::asTensorInfo(out_size));
+ _builder.addShapeConstr(input_index, ::internal::asTensorInfo(ifm_shape));
// Generate Stage
auto stage_gen = _backend_resolver.getStageGenerator(typeid(node));
const uint32_t len = _ctx.at(output_index).shape().dim(1);
- _builder.addShapeConstr(output_index, asTensorInfo(len));
- _builder.addShapeConstr(input_index, asTensorInfo(len));
+ _builder.addShapeConstr(output_index, ::internal::asTensorInfo(len));
+ _builder.addShapeConstr(input_index, ::internal::asTensorInfo(len));
// Generate Stage
auto stage_gen = _backend_resolver.getStageGenerator(typeid(node));
--- /dev/null
+#include "Convert.h"
+
+namespace internal
+{
+
+::arm_compute::TensorShape asTensorShape(int32_t h, int32_t w)
+{
+ return ::arm_compute::TensorShape(w, h);
+}
+
+::arm_compute::TensorShape asTensorShape(const nnfw::util::feature::Shape &shape)
+{
+ return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, 1);
+}
+
+::arm_compute::TensorShape asTensorShape(const nnfw::util::kernel::Shape &shape)
+{
+ return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, shape.N);
+}
+
+::arm_compute::TensorInfo asTensorInfo(const nnfw::util::feature::Shape &shape)
+{
+ return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32);
+}
+
+::arm_compute::TensorInfo asTensorInfo(const nnfw::util::kernel::Shape &shape)
+{
+ return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32);
+}
+
+::arm_compute::TensorInfo asTensorInfo(int32_t size)
+{
+ return ::arm_compute::TensorInfo(::arm_compute::TensorShape(size), 1,
+ ::arm_compute::DataType::F32);
+}
+
+::arm_compute::TensorInfo asTensorInfo(int32_t h, int32_t w)
+{
+ return ::arm_compute::TensorInfo(::arm_compute::TensorShape(w, h), 1,
+ ::arm_compute::DataType::F32);
+}
+
+} // namespace internal