aboutsummaryrefslogtreecommitdiff
path: root/verif/tosa_serializer.py
diff options
context:
space:
mode:
authorKevin Cheng <kevin.cheng@arm.com>2020-11-24 10:26:32 -0800
committerKevin Cheng <kevin.cheng@arm.com>2020-11-24 14:06:04 -0800
commit77d0f76b42c6353459d3271ccba9e41728d066cd (patch)
tree70f95376de80e249a15b15dba6faa27fb4d48f45 /verif/tosa_serializer.py
parentaee1facbde25caf27cc34e5ec08eb8bba6af8e18 (diff)
downloadreference_model-77d0f76b42c6353459d3271ccba9e41728d066cd.tar.gz
Update reference model/serialization library to 0.21.0 with unit tests added/updated
- update tosa.GATHER - update tosa.RESIZE - add tosa.SCATTER Signed-off-by: Kevin Cheng <kevin.cheng@arm.com> Change-Id: I1c3247b831a64e35a85c4044b24c6c29b8e18d25
Diffstat (limited to 'verif/tosa_serializer.py')
-rw-r--r--verif/tosa_serializer.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/verif/tosa_serializer.py b/verif/tosa_serializer.py
index 07e0e1a..3b7e339 100644
--- a/verif/tosa_serializer.py
+++ b/verif/tosa_serializer.py
@@ -63,12 +63,14 @@ class TosaSerializerUnion:
self.floats = []
self.strings = []
self.intvecs = []
+ self.fpvecs = []
def serialize(self, builder):
# We have to build strings and vectors first
strList = []
intVecList = []
+ fpVecList = []
for fcn, val in self.strings:
strList.append((fcn, builder.CreateString(val)))
@@ -76,6 +78,9 @@ class TosaSerializerUnion:
for fcn, val in self.intvecs:
intVecList.append((fcn, TosaSerializer.serializeInt32Vec(builder, val)))
+ for fcn, val in self.fpvecs:
+ fpVecList.append((fcn, TosaSerializer.serializeFpVec(builder, val)))
+
startFcn, endFcn = self.optFcns
# Then serialize the options object from the list of primitives and
@@ -96,6 +101,9 @@ class TosaSerializerUnion:
for fcn, val in intVecList:
fcn(builder, val)
+ for fcn, val in fpVecList:
+ fcn(builder, val)
+
return endFcn(builder)
class TosaSerializerAttribute(TosaSerializerUnion):
@@ -193,7 +201,7 @@ class TosaSerializerAttribute(TosaSerializerUnion):
self.intvecs.append((a.TileAttributeAddMultiples,
multiples))
- def ResizeAttribute(self, output_size, stride, offset, shift, mode):
+ def ResizeAttribute(self, output_size, stride, offset, shift, stride_fp, offset_fp, mode):
from tosa import ResizeAttribute as a, Attribute
self.utype = Attribute.Attribute().ResizeAttribute
@@ -207,6 +215,10 @@ class TosaSerializerAttribute(TosaSerializerUnion):
offset))
self.ints.append((a.ResizeAttributeAddShift,
shift))
+ self.fpvecs.append((a.ResizeAttributeAddStrideFp,
+ stride_fp))
+ self.fpvecs.append((a.ResizeAttributeAddOffsetFp,
+ offset_fp))
self.ints.append((a.ResizeAttributeAddMode,
mode))
@@ -692,6 +704,13 @@ class TosaSerializer:
return builder.EndVector(len(vec))
@staticmethod
+ def serializeFpVec(builder, vec):
+ builder.StartVector(4, len(vec), 4)
+ for v in vec[::-1]:
+ builder.PrependFloat32(v)
+ return builder.EndVector(len(vec))
+
+ @staticmethod
def serializeObjVec(builder, vec, start_fcn):
serialized_vec = []
for v in vec[::-1]: