Update hvxservice to use the correct getPadding implementation. am: ba9a2c7ebe am: d00708a634 am: 7e2e6e231c
am: a9651a94af
Change-Id: If83acf30b34b9baf63926e54f3a40ccaa3f24133
diff --git a/1.0/HexagonOperationsCheck.cpp b/1.0/HexagonOperationsCheck.cpp
index e67cd0b..23e01f8 100644
--- a/1.0/HexagonOperationsCheck.cpp
+++ b/1.0/HexagonOperationsCheck.cpp
@@ -85,8 +85,11 @@
filter_width = model->getScalar<int32_t>(ins[7]);
filter_height = model->getScalar<int32_t>(ins[8]);
- HEXAGON_SOFT_ASSERT_NE(getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom),
+ HEXAGON_SOFT_ASSERT_NE(getPadding(inShape.dimensions[2], inShape.dimensions[1],
+ stride_width, stride_height,
+ filter_width, filter_height,
+ padding_left, padding_right,
+ padding_top, padding_bottom),
NN_PAD_NA, "Unknown padding");
}
else {
@@ -178,8 +181,9 @@
stride_width = model->getScalar<int32_t>(ins[7]);
stride_height = model->getScalar<int32_t>(ins[8]);
- HEXAGON_SOFT_ASSERT_NE(getPadding(filterShape.dimensions[2], filterShape.dimensions[1],
- padding_left, padding_right,
+ HEXAGON_SOFT_ASSERT_NE(getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
padding_top, padding_bottom),
NN_PAD_NA, "Unknown padding");
}
@@ -238,10 +242,12 @@
stride_width = model->getScalar<int32_t>(ins[7]);
stride_height = model->getScalar<int32_t>(ins[8]);
- HEXAGON_SOFT_ASSERT_NE(getPadding(filterShape.dimensions[2], filterShape.dimensions[1],
- padding_left, padding_right,
+ HEXAGON_SOFT_ASSERT_NE(getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
padding_top, padding_bottom),
NN_PAD_NA, "Unknown padding");
+
}
else {
const int32_t padding_implicit = model->getScalar<int32_t>(ins[3]);
diff --git a/1.0/HexagonOperationsPrepare.cpp b/1.0/HexagonOperationsPrepare.cpp
index efae956..1c2d7cd 100644
--- a/1.0/HexagonOperationsPrepare.cpp
+++ b/1.0/HexagonOperationsPrepare.cpp
@@ -76,8 +76,10 @@
filter_height = model->getScalar<int32_t>(ins[8]);
act = model->getFloatActivation(ins[9]);
- pad = getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom);
+ const Shape inputShape = model->getShape(ins[0]);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filter_width, filter_height,
+ padding_left, padding_right, padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -146,9 +148,12 @@
stride_height = model->getScalar<int32_t>(ins[8]);
act = model->getFloatActivation(ins[9]);
+ const Shape inputShape = model->getShape(ins[0]);
const Shape filterShape = model->getShape(ins[1]);
- pad = getPadding(filterShape.dimensions[2], filterShape.dimensions[1], padding_left,
- padding_right, padding_top, padding_bottom);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
+ padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -195,9 +200,12 @@
depth_multiplier = model->getScalar<int32_t>(ins[9]);
act = model->getFloatActivation(ins[10]);
+ const Shape inputShape = model->getShape(ins[0]);
const Shape filterShape = model->getShape(ins[1]);
- pad = getPadding(filterShape.dimensions[2], filterShape.dimensions[1], padding_left,
- padding_right, padding_top, padding_bottom);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
+ padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -262,8 +270,10 @@
filter_height = model->getScalar<int32_t>(ins[8]);
act = model->getFloatActivation(ins[9]);
- pad = getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom);
+ const Shape inputShape = model->getShape(ins[0]);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filter_width, filter_height,
+ padding_left, padding_right, padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -346,8 +356,10 @@
filter_height = model->getScalar<int32_t>(ins[8]);
act = model->getFloatActivation(ins[9]);
- pad = getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom);
+ const Shape inputShape = model->getShape(ins[0]);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filter_width, filter_height,
+ padding_left, padding_right, padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -531,8 +543,10 @@
filter_height = model->getScalar<int32_t>(ins[8]);
act = model->getQuantizedActivation(ins[9]);
- pad = getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom);
+ const Shape inputShape = model->getShape(ins[0]);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filter_width, filter_height,
+ padding_left, padding_right, padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -605,9 +619,12 @@
stride_height = model->getScalar<int32_t>(ins[8]);
act = model->getQuantizedActivation(ins[9]);
+ const Shape inputShape = model->getShape(ins[0]);
const Shape filterShape = model->getShape(ins[1]);
- pad = getPadding(filterShape.dimensions[2], filterShape.dimensions[1], padding_left,
- padding_right, padding_top, padding_bottom);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
+ padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -658,9 +675,12 @@
depth_multiplier = model->getScalar<int32_t>(ins[9]);
act = model->getQuantizedActivation(ins[10]);
+ const Shape inputShape = model->getShape(ins[0]);
const Shape filterShape = model->getShape(ins[1]);
- pad = getPadding(filterShape.dimensions[2], filterShape.dimensions[1], padding_left,
- padding_right, padding_top, padding_bottom);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filterShape.dimensions[2],
+ filterShape.dimensions[1], padding_left, padding_right,
+ padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
@@ -770,8 +790,10 @@
filter_height = model->getScalar<int32_t>(ins[8]);
act = model->getQuantizedActivation(ins[9]);
- pad = getPadding(filter_width, filter_height, padding_left,
- padding_right, padding_top, padding_bottom);
+ const Shape inputShape = model->getShape(ins[0]);
+ pad = getPadding(inputShape.dimensions[2], inputShape.dimensions[1],
+ stride_width, stride_height, filter_width, filter_height,
+ padding_left, padding_right, padding_top, padding_bottom);
HEXAGON_SOFT_ASSERT_NE(pad, NN_PAD_NA, "Unknown padding");
}
else {
diff --git a/1.0/HexagonUtils.cpp b/1.0/HexagonUtils.cpp
index 74a4c4d..a1c55d2 100644
--- a/1.0/HexagonUtils.cpp
+++ b/1.0/HexagonUtils.cpp
@@ -48,10 +48,13 @@
};
}
-hexagon_nn_padding_type getPadding(uint32_t filterWidth, uint32_t filterHeight,
- uint32_t paddingLeft, uint32_t paddingRight,
- uint32_t paddingTop, uint32_t paddingBottom) {
- return getPadding(::android::nn::getPaddingScheme(filterWidth, filterHeight, paddingLeft,
+hexagon_nn_padding_type getPadding(int32_t inWidth, int32_t inHeight,
+ int32_t strideWidth, int32_t strideHeight,
+ int32_t filterWidth, int32_t filterHeight,
+ int32_t paddingLeft, int32_t paddingRight,
+ int32_t paddingTop, int32_t paddingBottom) {
+ return getPadding(::android::nn::getPaddingScheme(inWidth, inHeight, strideWidth, strideHeight,
+ filterWidth, filterHeight, paddingLeft,
paddingRight, paddingTop, paddingBottom));
}
diff --git a/1.0/HexagonUtils.h b/1.0/HexagonUtils.h
index cd027b0..88379d2 100644
--- a/1.0/HexagonUtils.h
+++ b/1.0/HexagonUtils.h
@@ -61,9 +61,11 @@
bool isHexagonAvailable();
hexagon_nn_padding_type getPadding(uint32_t pad);
-hexagon_nn_padding_type getPadding(uint32_t filterWidth, uint32_t filterHeight,
- uint32_t paddingLeft, uint32_t paddingRight,
- uint32_t paddingTop, uint32_t paddingBottom);
+hexagon_nn_padding_type getPadding(int32_t inWidth, int32_t inHeight,
+ int32_t strideWidth, int32_t strideHeight,
+ int32_t filterWidth, int32_t filterHeight,
+ int32_t paddingLeft, int32_t paddingRight,
+ int32_t paddingTop, int32_t paddingBottom);
op_type getFloatActivationFunction(FusedActivationFunc act);
op_type getQuantizedActivationFunction(FusedActivationFunc act);