blob: c2376cc0575d76edecf701000999cf381a1e9d45 [file]
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
import unittest
from executorch.backends.xnnpack.serialization.xnnpack_graph_schema import (
ConstantDataOffset,
XNNGraph,
)
from executorch.backends.xnnpack.serialization.xnnpack_graph_serialize import (
_HEADER_BYTEORDER,
serialize_xnnpack_binary,
XNNHeader,
)
class TestSerialization(unittest.TestCase):
def test_serialize_xnnpack_binary(self):
xnn_graph = XNNGraph(
version="0",
xnodes=[],
xvalues=[],
num_externs=0,
input_ids=[],
output_ids=[],
constant_data=[ConstantDataOffset(0, 0)],
)
constant_data_bytes = b"\x00" * 24
serialized_binary = serialize_xnnpack_binary(
xnn_graph, bytearray(constant_data_bytes)
)
# Check header
self.assertEqual(serialized_binary[0:4], b"\x00\x00\x00\x00")
self.assertEqual(serialized_binary[XNNHeader.MAGIC_OFFSET], b"XH00")
flatbuffer_offset_bytes = serialized_binary[XNNHeader.FLATBUFFER_OFFSET_OFFSET]
# Check flatbuffer is at flatbuffer offset
flatbuffer_offset = int.from_bytes(
flatbuffer_offset_bytes, byteorder=_HEADER_BYTEORDER
)
# Flatbuffer magic should be in the same spot as the Header's magic
self.assertEqual(
serialized_binary[flatbuffer_offset:][XNNHeader.MAGIC_OFFSET], b"XN01"
)