From 2e5d0b2e2a212ceb803681b717cbaf821f5e0929 Mon Sep 17 00:00:00 2001 From: Matthew Sloyan Date: Thu, 21 Oct 2021 14:05:31 +0100 Subject: IVGCVSW-6469 Add MirrorPad FrontEnd and Ref Support * Added PaddingMode enum to PaddingDescriptor to enable Symmetric and Reflect padding. * Added Symmetric and Reflect Ref implementation. * Added Serializer & Deserializer support. * Added unit tests. Signed-off-by: Matthew Sloyan Change-Id: I4bed907b31742b32ccefe5e8ca39a6f1e5bd9dee --- src/armnnSerializer/ArmnnSchema_generated.h | 53 ++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) (limited to 'src/armnnSerializer/ArmnnSchema_generated.h') diff --git a/src/armnnSerializer/ArmnnSchema_generated.h b/src/armnnSerializer/ArmnnSchema_generated.h index 712ad28574..7747f9edd9 100644 --- a/src/armnnSerializer/ArmnnSchema_generated.h +++ b/src/armnnSerializer/ArmnnSchema_generated.h @@ -1198,6 +1198,39 @@ inline const char *EnumNameNormalizationAlgorithmMethod(NormalizationAlgorithmMe return EnumNamesNormalizationAlgorithmMethod()[index]; } +enum PaddingMode { + PaddingMode_Constant = 0, + PaddingMode_Reflect = 1, + PaddingMode_Symmetric = 2, + PaddingMode_MIN = PaddingMode_Constant, + PaddingMode_MAX = PaddingMode_Symmetric +}; + +inline const PaddingMode (&EnumValuesPaddingMode())[3] { + static const PaddingMode values[] = { + PaddingMode_Constant, + PaddingMode_Reflect, + PaddingMode_Symmetric + }; + return values; +} + +inline const char * const *EnumNamesPaddingMode() { + static const char * const names[4] = { + "Constant", + "Reflect", + "Symmetric", + nullptr + }; + return names; +} + +inline const char *EnumNamePaddingMode(PaddingMode e) { + if (flatbuffers::IsOutRange(e, PaddingMode_Constant, PaddingMode_Symmetric)) return ""; + const size_t index = static_cast(e); + return EnumNamesPaddingMode()[index]; +} + enum Layer { Layer_NONE = 0, Layer_ActivationLayer = 1, @@ -6383,7 +6416,8 @@ struct PadDescriptor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef PadDescriptorBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PADLIST = 4, - VT_PADVALUE = 6 + VT_PADVALUE = 6, + VT_PADDINGMODE = 8 }; const flatbuffers::Vector *padList() const { return GetPointer *>(VT_PADLIST); @@ -6391,11 +6425,15 @@ struct PadDescriptor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { float padValue() const { return GetField(VT_PADVALUE, 0.0f); } + armnnSerializer::PaddingMode paddingMode() const { + return static_cast(GetField(VT_PADDINGMODE, 0)); + } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PADLIST) && verifier.VerifyVector(padList()) && VerifyField(verifier, VT_PADVALUE) && + VerifyField(verifier, VT_PADDINGMODE) && verifier.EndTable(); } }; @@ -6410,6 +6448,9 @@ struct PadDescriptorBuilder { void add_padValue(float padValue) { fbb_.AddElement(PadDescriptor::VT_PADVALUE, padValue, 0.0f); } + void add_paddingMode(armnnSerializer::PaddingMode paddingMode) { + fbb_.AddElement(PadDescriptor::VT_PADDINGMODE, static_cast(paddingMode), 0); + } explicit PadDescriptorBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -6425,22 +6466,26 @@ struct PadDescriptorBuilder { inline flatbuffers::Offset CreatePadDescriptor( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> padList = 0, - float padValue = 0.0f) { + float padValue = 0.0f, + armnnSerializer::PaddingMode paddingMode = armnnSerializer::PaddingMode_Constant) { PadDescriptorBuilder builder_(_fbb); builder_.add_padValue(padValue); builder_.add_padList(padList); + builder_.add_paddingMode(paddingMode); return builder_.Finish(); } inline flatbuffers::Offset CreatePadDescriptorDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *padList = nullptr, - float padValue = 0.0f) { + float padValue = 0.0f, + armnnSerializer::PaddingMode paddingMode = armnnSerializer::PaddingMode_Constant) { auto padList__ = padList ? _fbb.CreateVector(*padList) : 0; return armnnSerializer::CreatePadDescriptor( _fbb, padList__, - padValue); + padValue, + paddingMode); } /// @deprecated Use ElementwiseUnaryLayer instead -- cgit v1.2.1