From c15f7d52aa4f360eba2344449baa418b7608ac7c Mon Sep 17 00:00:00 2001 From: James Ward Date: Wed, 7 Dec 2022 15:38:01 +0000 Subject: Schema changes for CLAMP, PAD float attributes * Float attributes now serialized as uint8 vectors, but treated as floats at input/output to serialization Signed-off-by: James Ward Change-Id: I417b0fabe0ef11fea263fe937b57d49bbfdb00da --- python/tosa/ClampAttribute.py | 62 +++++++++++++++++++++++++++++++++++++------ python/tosa/PadAttribute.py | 31 +++++++++++++++++++--- 2 files changed, 81 insertions(+), 12 deletions(-) (limited to 'python/tosa') diff --git a/python/tosa/ClampAttribute.py b/python/tosa/ClampAttribute.py index 58d1f0a..7937944 100644 --- a/python/tosa/ClampAttribute.py +++ b/python/tosa/ClampAttribute.py @@ -43,18 +43,58 @@ class ClampAttribute(object): return 0 # ClampAttribute - def MinFp(self): + def MinFp(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: - return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) - return 0.0 + a = self._tab.Vector(o) + return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1)) + return 0 + + # ClampAttribute + def MinFpAsNumpy(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + if o != 0: + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o) + return 0 + + # ClampAttribute + def MinFpLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # ClampAttribute + def MinFpIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + return o == 0 # ClampAttribute - def MaxFp(self): + def MaxFp(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: - return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) - return 0.0 + a = self._tab.Vector(o) + return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1)) + return 0 + + # ClampAttribute + def MaxFpAsNumpy(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) + if o != 0: + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o) + return 0 + + # ClampAttribute + def MaxFpLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # ClampAttribute + def MaxFpIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) + return o == 0 def ClampAttributeStart(builder): builder.StartObject(4) def Start(builder): @@ -65,12 +105,18 @@ def AddMinInt(builder, minInt): def ClampAttributeAddMaxInt(builder, maxInt): builder.PrependInt32Slot(1, maxInt, 0) def AddMaxInt(builder, maxInt): return ClampAttributeAddMaxInt(builder, maxInt) -def ClampAttributeAddMinFp(builder, minFp): builder.PrependFloat32Slot(2, minFp, 0.0) +def ClampAttributeAddMinFp(builder, minFp): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(minFp), 0) def AddMinFp(builder, minFp): return ClampAttributeAddMinFp(builder, minFp) -def ClampAttributeAddMaxFp(builder, maxFp): builder.PrependFloat32Slot(3, maxFp, 0.0) +def ClampAttributeStartMinFpVector(builder, numElems): return builder.StartVector(1, numElems, 1) +def StartMinFpVector(builder, numElems): + return ClampAttributeStartMinFpVector(builder, numElems) +def ClampAttributeAddMaxFp(builder, maxFp): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(maxFp), 0) def AddMaxFp(builder, maxFp): return ClampAttributeAddMaxFp(builder, maxFp) +def ClampAttributeStartMaxFpVector(builder, numElems): return builder.StartVector(1, numElems, 1) +def StartMaxFpVector(builder, numElems): + return ClampAttributeStartMaxFpVector(builder, numElems) def ClampAttributeEnd(builder): return builder.EndObject() def End(builder): return ClampAttributeEnd(builder) \ No newline at end of file diff --git a/python/tosa/PadAttribute.py b/python/tosa/PadAttribute.py index 8d49d5a..23698d1 100644 --- a/python/tosa/PadAttribute.py +++ b/python/tosa/PadAttribute.py @@ -63,11 +63,31 @@ class PadAttribute(object): return 0 # PadAttribute - def PadConstFp(self): + def PadConstFp(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: - return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) - return 0.0 + a = self._tab.Vector(o) + return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1)) + return 0 + + # PadAttribute + def PadConstFpAsNumpy(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + if o != 0: + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o) + return 0 + + # PadAttribute + def PadConstFpLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # PadAttribute + def PadConstFpIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + return o == 0 def PadAttributeStart(builder): builder.StartObject(3) def Start(builder): @@ -81,9 +101,12 @@ def StartPaddingVector(builder, numElems): def PadAttributeAddPadConstInt(builder, padConstInt): builder.PrependInt32Slot(1, padConstInt, 0) def AddPadConstInt(builder, padConstInt): return PadAttributeAddPadConstInt(builder, padConstInt) -def PadAttributeAddPadConstFp(builder, padConstFp): builder.PrependFloat32Slot(2, padConstFp, 0.0) +def PadAttributeAddPadConstFp(builder, padConstFp): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(padConstFp), 0) def AddPadConstFp(builder, padConstFp): return PadAttributeAddPadConstFp(builder, padConstFp) +def PadAttributeStartPadConstFpVector(builder, numElems): return builder.StartVector(1, numElems, 1) +def StartPadConstFpVector(builder, numElems): + return PadAttributeStartPadConstFpVector(builder, numElems) def PadAttributeEnd(builder): return builder.EndObject() def End(builder): return PadAttributeEnd(builder) \ No newline at end of file -- cgit v1.2.1