IVGCVSW-6598 Add MirrorPad to PyArmNN

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ie54d2deff3059978a55667fe8a1d91418ef785dd
diff --git a/python/pyarmnn/src/pyarmnn/__init__.py b/python/pyarmnn/src/pyarmnn/__init__.py
index fecc4f5..a5d5c84 100644
--- a/python/pyarmnn/src/pyarmnn/__init__.py
+++ b/python/pyarmnn/src/pyarmnn/__init__.py
@@ -91,7 +91,7 @@
     GatherDescriptor, InstanceNormalizationDescriptor, LstmDescriptor, L2NormalizationDescriptor, MeanDescriptor
 from ._generated.pyarmnn import NormalizationAlgorithmChannel_Across, NormalizationAlgorithmChannel_Within, \
     NormalizationAlgorithmMethod_LocalBrightness, NormalizationAlgorithmMethod_LocalContrast, NormalizationDescriptor
-from ._generated.pyarmnn import PadDescriptor
+from ._generated.pyarmnn import PaddingMode_Constant, PaddingMode_Reflect, PaddingMode_Symmetric, PadDescriptor
 from ._generated.pyarmnn import PermutationVector, PermuteDescriptor
 from ._generated.pyarmnn import OutputShapeRounding_Ceiling, OutputShapeRounding_Floor, \
     PaddingMethod_Exclude, PaddingMethod_IgnoreValue, PoolingAlgorithm_Average, PoolingAlgorithm_L2, \
diff --git a/python/pyarmnn/src/pyarmnn/swig/modules/armnn_descriptors.i b/python/pyarmnn/src/pyarmnn/swig/modules/armnn_descriptors.i
index 5f4afd3..6ab7f24 100644
--- a/python/pyarmnn/src/pyarmnn/swig/modules/armnn_descriptors.i
+++ b/python/pyarmnn/src/pyarmnn/swig/modules/armnn_descriptors.i
@@ -579,15 +579,23 @@
                                    The second tuple value is the number of values to add after the tensor in the dimension.
                                    The number of pairs should match the number of dimensions in the input tensor.
         m_PadValue (bool): Optional value to use for padding. Default: 0.
+        m_PaddingMode (int): The padding mode controls whether the padding should be filled
+                             with constant values (`PaddingMode_Constant`), or reflect the input,
+                             either excluding the border values (`PaddingMode_Reflect`)
+                             or including them (`PaddingMode_Symmetric`).
+                             Default: 0 (`PaddingMode_Constant`).
 
     ") PadDescriptor;
 struct PadDescriptor
 {
     PadDescriptor();
-    PadDescriptor(const std::vector<std::pair<unsigned int, unsigned int>>& padList, const float& padValue = 0);
+    PadDescriptor(const std::vector<std::pair<unsigned int, unsigned int>>& padList,
+                  const float& padValue = 0,
+                  const PaddingMode& paddingMode = PaddingMode_Constant);
 
     std::vector<std::pair<unsigned int, unsigned int>> m_PadList;
     float m_PadValue;
+    PaddingMode m_PaddingMode;
 
     bool operator ==(const PadDescriptor& rhs) const;
 };
diff --git a/python/pyarmnn/test/test_descriptors.py b/python/pyarmnn/test/test_descriptors.py
index a397666..507afad 100644
--- a/python/pyarmnn/test/test_descriptors.py
+++ b/python/pyarmnn/test/test_descriptors.py
@@ -232,6 +232,7 @@
 def test_pad_descriptor_default_values():
     desc = ann.PadDescriptor()
     assert desc.m_PadValue == 0
+    assert desc.m_PaddingMode == ann.PaddingMode_Constant
 
 
 def test_permute_descriptor_default_values():