aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core/Helpers.inl
diff options
context:
space:
mode:
authorIsabella Gottardi <isabella.gottardi@arm.com>2018-02-27 17:41:55 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:48:33 +0000
commitd17a677a70d477ae508c084148ba6974fc38477d (patch)
treedf6719551b1125941ecdfe4889826b0daa92088b /arm_compute/core/Helpers.inl
parent240cfa65322da0c9b2ec0e78960ff4bd87c7573e (diff)
downloadComputeLibrary-d17a677a70d477ae508c084148ba6974fc38477d.tar.gz
COMPMID-979: Add NHWC data layout to the tensor's metadata
Change-Id: I89bdab7dc63a437eb7d60c0ae652c53c3875e503 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/122524 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Diffstat (limited to 'arm_compute/core/Helpers.inl')
-rw-r--r--arm_compute/core/Helpers.inl41
1 files changed, 41 insertions, 0 deletions
diff --git a/arm_compute/core/Helpers.inl b/arm_compute/core/Helpers.inl
index 8b86c22676..ff85773abb 100644
--- a/arm_compute/core/Helpers.inl
+++ b/arm_compute/core/Helpers.inl
@@ -227,6 +227,7 @@ inline bool auto_init_if_empty(ITensorInfo &info_sink, const ITensorInfo &info_s
info_sink.set_tensor_shape(info_source.tensor_shape());
info_sink.set_fixed_point_position(info_source.fixed_point_position());
info_sink.set_quantization_info(info_source.quantization_info());
+ info_sink.set_data_layout(info_source.data_layout());
return true;
}
@@ -266,6 +267,17 @@ inline bool set_data_type_if_unknown(ITensorInfo &info, DataType data_type)
return false;
}
+inline bool set_data_layout_if_unknown(ITensorInfo &info, DataLayout data_layout)
+{
+ if(info.data_layout() == DataLayout::UNKNOWN)
+ {
+ info.set_data_layout(data_layout);
+ return true;
+ }
+
+ return false;
+}
+
inline bool set_fixed_point_position_if_zero(ITensorInfo &info, int fixed_point_position)
{
if(info.fixed_point_position() == 0 && (info.data_type() == DataType::QS8 || info.data_type() == DataType::QS16))
@@ -357,4 +369,33 @@ inline int coords2index(const TensorShape &shape, const Coordinates &coord)
return index;
}
+
+inline int get_data_layout_dimension_index(const ITensorInfo &info, const DataLayoutDimension data_layout_dimension)
+{
+ ARM_COMPUTE_ERROR_ON_MSG(info.data_layout() == DataLayout::UNKNOWN, "Cannot retrieve the dimension index for an unknown layout!");
+
+ /* Return the index based on the data layout
+ * [N C H W]
+ * [3 2 1 0]
+ * [N H W C]
+ */
+ switch(data_layout_dimension)
+ {
+ case DataLayoutDimension::CHANNEL:
+ return (info.data_layout() == DataLayout::NCHW) ? 2 : 0;
+ break;
+ case DataLayoutDimension::HEIGHT:
+ return (info.data_layout() == DataLayout::NCHW) ? 1 : 2;
+ break;
+ case DataLayoutDimension::WIDTH:
+ return (info.data_layout() == DataLayout::NCHW) ? 0 : 1;
+ break;
+ case DataLayoutDimension::BATCHES:
+ return 3;
+ break;
+ default:
+ ARM_COMPUTE_ERROR("Data layout index not supported!");
+ break;
+ }
+}
} // namespace arm_compute