diff options
author | Rob Elliott <robert.elliott@arm.com> | 2023-08-17 14:27:06 +0000 |
---|---|---|
committer | Rickard Bolin <rickard.bolin@arm.com> | 2023-08-21 16:14:51 +0000 |
commit | 00a15db3e1a188b25065d095152d701f4394cdc5 (patch) | |
tree | 96761b9f7ac3ad759f9f0ffbf63a6d0ef115ad14 /ethosu/vela/tosa/TosaBasicBlock.py | |
parent | 8ea90edb75e5d2353aa91c264356fc9d460ca308 (diff) | |
download | ethos-u-vela-00a15db3e1a188b25065d095152d701f4394cdc5.tar.gz |
Moving Vela to use TOSA v0.80.0 specification
* Using serialization_lib main branch to update statically copied
files sha 5f920211ac23393a7b98a0d358bfbfc3232d5c8f (v0.80.0)
* All files within the ethosu/vela/tosa are copied from that revision
* Note: hope to move to serialization_lib as a pip module in future
* Modified the ethosu/vela/{tosa_mapping,tosa_reader}.py to use
v0.80.0 TOSA FlatBuffers implementation
* These are the additional changes made to support this new version,
with changes in the format of the FlatBuffers file and where various
values are stored. Either changing from input to attribute, or
moving to different attributes.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Change-Id: I5e1fcc2a9964148619be3477adf1e88e84cbae2d
Diffstat (limited to 'ethosu/vela/tosa/TosaBasicBlock.py')
-rw-r--r-- | ethosu/vela/tosa/TosaBasicBlock.py | 112 |
1 files changed, 98 insertions, 14 deletions
diff --git a/ethosu/vela/tosa/TosaBasicBlock.py b/ethosu/vela/tosa/TosaBasicBlock.py index 8f1604ab..b31f455f 100644 --- a/ethosu/vela/tosa/TosaBasicBlock.py +++ b/ethosu/vela/tosa/TosaBasicBlock.py @@ -3,17 +3,27 @@ # namespace: tosa import flatbuffers +from flatbuffers.compat import import_numpy +np = import_numpy() class TosaBasicBlock(object): __slots__ = ['_tab'] @classmethod - def GetRootAsTosaBasicBlock(cls, buf, offset): + def GetRootAs(cls, buf, offset=0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = TosaBasicBlock() x.Init(buf, n + offset) return x + @classmethod + def GetRootAsTosaBasicBlock(cls, buf, offset=0): + """This method is deprecated. Please switch to GetRootAs.""" + return cls.GetRootAs(buf, offset) + @classmethod + def TosaBasicBlockBufferHasIdentifier(cls, buf, offset, size_prefixed=False): + return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) + # TosaBasicBlock def Init(self, buf, pos): self._tab = flatbuffers.table.Table(buf, pos) @@ -32,7 +42,7 @@ class TosaBasicBlock(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .TosaOperator import TosaOperator + from tosa.TosaOperator import TosaOperator obj = TosaOperator() obj.Init(self._tab.Bytes, x) return obj @@ -46,13 +56,18 @@ class TosaBasicBlock(object): return 0 # TosaBasicBlock + def OperatorsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) + return o == 0 + + # TosaBasicBlock def Tensors(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .TosaTensor import TosaTensor + from tosa.TosaTensor import TosaTensor obj = TosaTensor() obj.Init(self._tab.Bytes, x) return obj @@ -66,6 +81,11 @@ class TosaBasicBlock(object): return 0 # TosaBasicBlock + def TensorsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + return o == 0 + + # TosaBasicBlock def Inputs(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: @@ -81,6 +101,11 @@ class TosaBasicBlock(object): return 0 # TosaBasicBlock + def InputsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) + return o == 0 + + # TosaBasicBlock def Outputs(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) if o != 0: @@ -95,14 +120,73 @@ class TosaBasicBlock(object): return self._tab.VectorLen(o) return 0 -def TosaBasicBlockStart(builder): builder.StartObject(5) -def TosaBasicBlockAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def TosaBasicBlockAddOperators(builder, operators): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(operators), 0) -def TosaBasicBlockStartOperatorsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaBasicBlockAddTensors(builder, tensors): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(tensors), 0) -def TosaBasicBlockStartTensorsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaBasicBlockAddInputs(builder, inputs): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(inputs), 0) -def TosaBasicBlockStartInputsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaBasicBlockAddOutputs(builder, outputs): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(outputs), 0) -def TosaBasicBlockStartOutputsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaBasicBlockEnd(builder): return builder.EndObject() + # TosaBasicBlock + def OutputsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) + return o == 0 + +def TosaBasicBlockStart(builder): + builder.StartObject(5) + +def Start(builder): + TosaBasicBlockStart(builder) + +def TosaBasicBlockAddName(builder, name): + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + +def AddName(builder, name): + TosaBasicBlockAddName(builder, name) + +def TosaBasicBlockAddOperators(builder, operators): + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(operators), 0) + +def AddOperators(builder, operators): + TosaBasicBlockAddOperators(builder, operators) + +def TosaBasicBlockStartOperatorsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartOperatorsVector(builder, numElems: int) -> int: + return TosaBasicBlockStartOperatorsVector(builder, numElems) + +def TosaBasicBlockAddTensors(builder, tensors): + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(tensors), 0) + +def AddTensors(builder, tensors): + TosaBasicBlockAddTensors(builder, tensors) + +def TosaBasicBlockStartTensorsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartTensorsVector(builder, numElems: int) -> int: + return TosaBasicBlockStartTensorsVector(builder, numElems) + +def TosaBasicBlockAddInputs(builder, inputs): + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(inputs), 0) + +def AddInputs(builder, inputs): + TosaBasicBlockAddInputs(builder, inputs) + +def TosaBasicBlockStartInputsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartInputsVector(builder, numElems: int) -> int: + return TosaBasicBlockStartInputsVector(builder, numElems) + +def TosaBasicBlockAddOutputs(builder, outputs): + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(outputs), 0) + +def AddOutputs(builder, outputs): + TosaBasicBlockAddOutputs(builder, outputs) + +def TosaBasicBlockStartOutputsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartOutputsVector(builder, numElems: int) -> int: + return TosaBasicBlockStartOutputsVector(builder, numElems) + +def TosaBasicBlockEnd(builder): + return builder.EndObject() + +def End(builder): + return TosaBasicBlockEnd(builder) |