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);