Add new SPLIT op
Also add tests for it.
Bug: 113563597
Test: NeuralNetworksTest_static with new tests
Change-Id: I32cb7ccd3fae023e97d207bdfbad29c497dc4044
Merged-In: I32cb7ccd3fae023e97d207bdfbad29c497dc4044
(cherry picked from commit a85cac86b4b5d53f0173197ff0882eb70ce0b2e1)
diff --git a/common/OperationsUtils.cpp b/common/OperationsUtils.cpp
index 9601853..cfd1c92 100644
--- a/common/OperationsUtils.cpp
+++ b/common/OperationsUtils.cpp
@@ -921,5 +921,24 @@
return true;
}
+
+bool splitPrepare(const Shape& input, int32_t axis, int32_t numOutputs,
+ std::vector<Shape>* output) {
+ axis = getDimensionIndex(input, axis);
+
+ const int32_t sizeOfAxisToSplit = input.dimensions[axis];
+ NN_OPS_CHECK(sizeOfAxisToSplit % numOutputs == 0);
+ const int32_t sliceSize = sizeOfAxisToSplit / numOutputs;
+
+ for (int i = 0; i < numOutputs; ++i) {
+ output->at(i).type = input.type;
+ output->at(i).dimensions = input.dimensions;
+ output->at(i).dimensions[axis] = sliceSize;
+ output->at(i).offset = input.offset;
+ output->at(i).scale = input.scale;
+ }
+ return true;
+}
+
} // namespace nn
} // namespace android