From 60bfbe2671ed2bbd327e6a84cf8c504b0aeadc82 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Thu, 10 Jul 2025 12:06:55 +0100 Subject: [PATCH 1/9] test(python_api): add Python API test suite - Add `tests/test_python_api.hjson` manifest listing model specs for models from ML Zoo - Implement test script `tests/test_python_api.py` with full test suite for testing the Python API Signed-off-by: Deeptanshu Sekhri --- tests/test_python_api.hjson | 62 +++++++ tests/test_python_api.py | 333 ++++++++++++++++++++++++++++++++++++ 2 files changed, 395 insertions(+) create mode 100644 tests/test_python_api.hjson create mode 100644 tests/test_python_api.py diff --git a/tests/test_python_api.hjson b/tests/test_python_api.hjson new file mode 100644 index 0000000..2111485 --- /dev/null +++ b/tests/test_python_api.hjson @@ -0,0 +1,62 @@ +# +# SPDX-FileCopyrightText: Copyright 2025 Arm Limited and/or its affiliates +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Model manifest for Python API tests. +# Each entry must include: +# - name: a unique identifier for the model spec +# - path: the relative model path in the ML Zoo repository + +[ + { + "name": "ad_small_int8", + "path": "models/anomaly_detection/micronet_small/tflite_int8/ad_small_int8.tflite" + }, + { + "name": "ds_cnn_s_quantized_int16", + "path": "models/keyword_spotting/ds_cnn_small/model_package_tf/model_archive/TFLite/tflite_int16/ds_cnn_s_quantized_int16.tflite" + }, + { + "name": "kws_micronet_s", + "path": "models/keyword_spotting/micronet_small/tflite_int8/kws_micronet_s.tflite" + }, + { + "name": "tiny_wav2letter_pruned_int8", + "path": "models/speech_recognition/tiny_wav2letter/tflite_pruned_int8/tiny_wav2letter_pruned_int8.tflite" + }, + { + "name": "yolov3_tiny_int8_pruned_backbone_only", + "path": "models/experimental/yolov3_tiny_int8_pruned_backbone_only/yolov3_tiny_int8_pruned_backbone_only.tflite" + }, + { + "name": "cnn_s_quantized", + "path": "models/keyword_spotting/cnn_small/model_package_tf/model_archive/TFLite/tflite_int8/cnn_s_quantized.tflite" + }, + { + "name": "efficientnet_lite0_224", + "path": "models/experimental/efficientnet_lite0_224/efficientnet_lite0_224.tflite" + }, + { + "name": "mobilenet_v2_1.0_224_quantized_1_default_1", + "path": "models/image_classification/mobilenet_v2_1.0_224/tflite_uint8/mobilenet_v2_1.0_224_quantized_1_default_1.tflite" + }, + { + "name": "vww4_128_128_INT8", + "path": "models/visual_wake_words/micronet_vww4/tflite_int8/vww4_128_128_INT8.tflite" + }, + { + "name": "dnn_s_quantized", + "path": "models/keyword_spotting/dnn_small/model_package_tf/model_archive/TFLite/tflite_int8/dnn_s_quantized.tflite" + }, + { + "name": "har_int8", + "path": "models/experimental/har_cnn/har_int8.tflite" + }, + { + "name": "ssd_mobilenet_v3_int8", + "path": "models/experimental/ssd_mobilenet_v3_int8/ssd_mobilenet_v3_int8.tflite" + }, + +] diff --git a/tests/test_python_api.py b/tests/test_python_api.py new file mode 100644 index 0000000..a2fce6a --- /dev/null +++ b/tests/test_python_api.py @@ -0,0 +1,333 @@ +# +# SPDX-FileCopyrightText: Copyright 2025 Arm Limited and/or its affiliates +# +# SPDX-License-Identifier: Apache-2.0 +# +""" +Test suite for the `tosa-converter-for-tflite` Python API. + +To run tests with logging: + TOSA_TEST_ELIDE=1 pytest tests/test_python_api.py -v --log-cli-level=DEBUG + +To add a new model spec: + 1. Edit `tests/test_python_api.hjson`, adding an entry with: + - name (str): unique spec identifier + - path (str): relative model path in Arm ML Zoo repo + 2. Place the corresponding golden MLIR file under `tests/gold/test_python_api/.mlir`, normalised for whitespace. + +Tests cover: + - File based & stream based conversion + - Bytecode vs text output via `TosaConverterOutputFormat` + - MLIR text regression + - Error cases: invalid sink types, truncated inputs, invalid format args + - Pre-commit sanity checks +""" +import io +import logging +import os +import shutil +import subprocess +from functools import lru_cache +from pathlib import Path +from typing import Any +from typing import Dict +from typing import List + +import hjson +import pytest +from tosa_converter_for_tflite import tflite_flatbuffer_to_tosa_mlir +from tosa_converter_for_tflite import TosaConverterOutputFormat + +# ----------------------------------------------------------------------------- +# Logger configuration +# ----------------------------------------------------------------------------- +logger = logging.getLogger(__name__) + +# ----------------------------------------------------------------------------- +# Constants & paths +# ----------------------------------------------------------------------------- +TEST_ROOT: Path = Path(__file__).parent +MANIFEST_FILE: Path = TEST_ROOT / "test_python_api.hjson" +GOLDEN_DIR: Path = TEST_ROOT / "gold" / "test_python_api" +GENERATED_DIR: Path = TEST_ROOT / "generated" / "test_python_api" +# Model-Zoo repo details +MODEL_ZOO_REPO_DIR_PATH: str = os.environ.get("MODEL_ZOO_REPO_DIR_PATH") +MODEL_ZOO_REPO_URL: str = "https://github.com/Arm-Examples/ML-zoo.git" +MODEL_ZOO_BRANCH: str = "master" +MODEL_ZOO_REPO_DIR_NAME: str = "ml_zoo_repo" + + +# ----------------------------------------------------------------------------- +# Helper functions +# ----------------------------------------------------------------------------- +@lru_cache +def load_manifest() -> List[Dict[str, Any]]: + """Parse the model manifest file into a list of dictionaries.""" + text = MANIFEST_FILE.read_text(encoding="utf-8") + specs = hjson.loads(text) + logger.debug(f"Loaded {len(specs)} specs from manifest") + return specs + + +def normalise_lines(lines: List[str]) -> List[str]: + """Strip trailing whitespace, drop blank lines.""" + normalised = [] + for ln in lines: + # Strip trailing whitespace + ln = ln.rstrip() + # Skip blank lines + if ln: + normalised.append(ln) + return normalised + + +def assert_mlir_matches_golden(name: str, gen_path: Path) -> None: + """ + Compare generated MLIR file to golden, after normalization. + Always copy generated MLIR to GENERATED_DIR for missing or mismatched cases. + """ + golden_path = GOLDEN_DIR / f"{name}.mlir" + dump_path = GENERATED_DIR / f"{name}.mlir" + + # If golden missing or content mismatched, dump and report + if not golden_path.exists(): + shutil.copy(gen_path, dump_path) + pytest.fail( + f"Golden MLIR missing for '{name}'; generated file dumped to {dump_path}" + ) + + gold_lines = normalise_lines(golden_path.read_text().splitlines()) + gen_lines = normalise_lines(gen_path.read_text().splitlines()) + if gen_lines != gold_lines: + shutil.copy(gen_path, dump_path) + logger.error(f"MLIR regression detected for '{name}'") + pytest.fail(f"MLIR regression for '{name}'; see dumped file {dump_path}") + + logger.debug(f"MLIR matches golden for '{name}'") + # Clean up any leftover dump + dump_path.unlink(missing_ok=True) + + +# ----------------------------------------------------------------------------- +# Parametrise specs dynamically +# ----------------------------------------------------------------------------- +def pytest_generate_tests(metafunc: pytest.Metafunc) -> None: + """Parametrise all tests that accept 'spec' with entries from the manifest.""" + if "spec" in metafunc.fixturenames: + if not MANIFEST_FILE.is_file(): + pytest.skip(f"Manifest not found at {MANIFEST_FILE}") + specs = load_manifest() + ids = [s.get("name", "") for s in specs] + metafunc.parametrize("spec", specs, ids=ids) + + +# ----------------------------------------------------------------------------- +# Session scoped fixtures +# ----------------------------------------------------------------------------- +@pytest.fixture(scope="session") +def manifest() -> List[Dict[str, Any]]: + """Session scoped fixture: parsed list of model specs.""" + return load_manifest() + + +@pytest.fixture(scope="session") +def tflite_files( + tmp_path_factory: pytest.TempPathFactory, + manifest: List[Dict[str, Any]], +) -> Dict[str, Path]: + """ + Get .tflite model files from Model Zoo repo or from MODEL_ZOO_DIR env if provided. + Returns mapping spec_name to .tflite Path. + """ + # Use existing repo if provided + if MODEL_ZOO_REPO_DIR_PATH: + repo_dir = Path(MODEL_ZOO_REPO_DIR_PATH) + if not repo_dir.is_dir(): + pytest.skip( + f"MODEL_ZOO_DIR set to '{MODEL_ZOO_REPO_DIR_PATH}', but it is not a directory" + ) + logger.info(f"Using existing Model Zoo at {repo_dir}") + else: + # Clone into a fresh temp dir + repo_dir = tmp_path_factory.mktemp(MODEL_ZOO_REPO_DIR_NAME) + subprocess.run( + [ + "git", + "clone", + f"--branch={MODEL_ZOO_BRANCH}", + "--depth=1", + MODEL_ZOO_REPO_URL, + str(repo_dir), + ], + check=True, + ) + subprocess.run( + ["git", "-C", str(repo_dir), "sparse-checkout", "init", "--cone"], + check=True, + ) + dirs_to_include = sorted({Path(spec["path"]).parent for spec in manifest}) + subprocess.run( + ["git", "-C", str(repo_dir), "sparse-checkout", "set", *dirs_to_include], + check=True, + ) + + # Build index of available models + models = {p.stem: p for p in repo_dir.rglob("*.tflite")} + mapping: Dict[str, Path] = {} + missing: List[str] = [] + for spec in manifest: + name = spec["name"] + model_path = models.get(name) + if not model_path: + missing.append(name) + else: + mapping[name] = model_path + logger.debug("Selected model %s at %s", name, model_path) + if missing: + logger.warning("Skipping missing models: %s", missing) + return mapping + + +@pytest.fixture(autouse=True, scope="session") +def clear_generated_dir() -> None: + """Clean or create the generated_mlir directory once before any tests run.""" + if GENERATED_DIR.exists(): + shutil.rmtree(GENERATED_DIR) + GENERATED_DIR.mkdir(parents=True, exist_ok=True) + logger.debug(f"Prepared clean generated directory at {GENERATED_DIR}") + + +# ----------------------------------------------------------------------------- +# Module scoped fixtures +# ----------------------------------------------------------------------------- +@pytest.fixture(scope="module") +def sample_tflite_file( + manifest: List[Dict[str, Any]], tflite_files: Dict[str, Path] +) -> Path: + """ + Pick one model from the manifest (the first) and return its .tflite path. + """ + name = manifest[0]["name"] + return tflite_files[name] + + +# ----------------------------------------------------------------------------- +# Function scoped fixtures +# ----------------------------------------------------------------------------- +@pytest.fixture +def tflite_file(spec: Dict[str, Any], tflite_files: Dict[str, Path]) -> Path: + """Lookup the prebuilt .tflite for this spec, skip tests if missing.""" + name = spec["name"] + if name not in tflite_files: + pytest.skip(f"Skipping '{name}': model not available") + return tflite_files[name] + + +# ----------------------------------------------------------------------------- +# Tests +# ----------------------------------------------------------------------------- +@pytest.mark.python_api +def test_bytecode_filesystem( + tmp_path: Path, spec: Dict[str, Any], tflite_file: Path +) -> None: + """Ensure that file based bytecode conversion creates a non empty .tosa.mlirbc file.""" + out_file = tmp_path / f"{spec['name']}.tosa.mlirbc" + logger.info(f"Testing filesystem bytecode output for '{spec['name']}'") + tflite_flatbuffer_to_tosa_mlir(str(tflite_file), str(out_file)) + assert out_file.exists(), "Output file not created" + assert out_file.stat().st_size > 0, "Output file is empty" + logger.debug(f"Created bytecode file {out_file} ({out_file.stat().st_size} bytes)") + + +@pytest.mark.slow +@pytest.mark.python_api +def test_mlir_text_regression( + tmp_path: Path, spec: Dict[str, Any], tflite_file: Path +) -> None: + """Generate MLIR text and compare against golden MLIR text files.""" + name = spec["name"] + gen_tmp = tmp_path / f"{name}.mlir" + logger.info(f"Testing MLIR text regression for '{name}'") + tflite_flatbuffer_to_tosa_mlir( + str(tflite_file), str(gen_tmp), TosaConverterOutputFormat.Text + ) + assert gen_tmp.exists(), f"Generated MLIR missing: {gen_tmp}" + assert_mlir_matches_golden(name, gen_tmp) + + +@pytest.mark.python_api +def test_bytecode_stream_vs_filesystem( + tmp_path: Path, sample_tflite_file: Path +) -> None: + """Verify that in memory bytecode == file based bytecode and flush() was called.""" + buf = io.BytesIO() + called = False + + def _flush() -> None: + nonlocal called + called = True + + buf.flush = _flush + + tflite_flatbuffer_to_tosa_mlir( + str(sample_tflite_file), buf, TosaConverterOutputFormat.Bytecode + ) + data_stream = buf.getvalue() + assert data_stream, "In memory bytecode is empty" + assert called, "flush() was not called on the stream" + + fs_path = tmp_path / "sample_fs.tosa.mlirbc" + tflite_flatbuffer_to_tosa_mlir( + str(sample_tflite_file), str(fs_path), TosaConverterOutputFormat.Bytecode + ) + data_file = fs_path.read_bytes() + + assert data_stream == data_file, "Bytecode mismatch between stream and file" + + +@pytest.mark.python_api +def test_missing_input_file(tmp_path: Path): + """Missing Input file.""" + bad = tmp_path / "does_not_exist.tflite" + with pytest.raises(RuntimeError): + tflite_flatbuffer_to_tosa_mlir(str(bad), "missing_input.tosa") + + +@pytest.mark.python_api +@pytest.mark.parametrize("sink", [123, None, 5.6]) +def test_invalid_sink(sample_tflite_file: Path, sink: Any) -> None: + """Passing a non path, non stream sink should raise TypeError.""" + with pytest.raises(TypeError): + tflite_flatbuffer_to_tosa_mlir(str(sample_tflite_file), sink) + + +@pytest.mark.python_api +def test_truncated_tflite(tmp_path: Path, sample_tflite_file: Path) -> None: + """A truncated .tflite input should cause a RuntimeError.""" + data = sample_tflite_file.read_bytes() + trunc = data[: len(data) // 2] + trunc_path = tmp_path / "trunc.tflite" + trunc_path.write_bytes(trunc) + with pytest.raises(RuntimeError): + tflite_flatbuffer_to_tosa_mlir( + str(trunc_path), str(tmp_path / "truncated_input.tosa.mlirbc") + ) + + +@pytest.mark.python_api +@pytest.mark.parametrize("fmt", [123, "bogus", None]) +def test_invalid_format(tmp_path: Path, sample_tflite_file: Path, fmt: Any) -> None: + """Passing an invalid format argument should raise TypeError or ValueError.""" + with pytest.raises((TypeError, ValueError)): + tflite_flatbuffer_to_tosa_mlir( + str(sample_tflite_file), str(tmp_path / "invalid_format.tosa.mlirbc"), fmt + ) + + +@pytest.mark.python_api +@pytest.mark.pre_commit +def test_precommit_sanity(manifest: List[Dict[str, Any]]) -> None: + """Sanity check for pre-commit: manifest must not be empty and API callable.""" + logger.info("Running pre-commit sanity checks") + assert manifest, "Manifest is empty" + assert callable(tflite_flatbuffer_to_tosa_mlir), "API function missing" -- GitLab From 85d35f15c3df44cfe23dcf493bc188e5e7b7e7cf Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Thu, 10 Jul 2025 12:16:49 +0100 Subject: [PATCH 2/9] test(python_api): add generated textual MLIR gold files Signed-off-by: Deeptanshu Sekhri --- tests/gold/test_python_api/ad_small_int8.mlir | 84 ++ .../gold/test_python_api/cnn_s_quantized.mlir | 120 +++ .../gold/test_python_api/dnn_s_quantized.mlir | 114 ++ .../ds_cnn_s_quantized_int16.mlir | 125 +++ .../efficientnet_lite0_224.mlir | 528 ++++++++++ tests/gold/test_python_api/har_int8.mlir | 117 +++ .../gold/test_python_api/kws_micronet_s.mlir | 103 ++ ...enet_v2_1.0_224_quantized_1_default_1.mlir | 427 ++++++++ .../ssd_mobilenet_v3_int8.mlir | 993 ++++++++++++++++++ .../tiny_wav2letter_pruned_int8.mlir | 128 +++ .../test_python_api/vww4_128_128_INT8.mlir | 514 +++++++++ ...yolov3_tiny_int8_pruned_backbone_only.mlir | 197 ++++ 12 files changed, 3450 insertions(+) create mode 100644 tests/gold/test_python_api/ad_small_int8.mlir create mode 100644 tests/gold/test_python_api/cnn_s_quantized.mlir create mode 100644 tests/gold/test_python_api/dnn_s_quantized.mlir create mode 100644 tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir create mode 100644 tests/gold/test_python_api/efficientnet_lite0_224.mlir create mode 100644 tests/gold/test_python_api/har_int8.mlir create mode 100644 tests/gold/test_python_api/kws_micronet_s.mlir create mode 100644 tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir create mode 100644 tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir create mode 100644 tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir create mode 100644 tests/gold/test_python_api/vww4_128_128_INT8.mlir create mode 100644 tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir diff --git a/tests/gold/test_python_api/ad_small_int8.mlir b/tests/gold/test_python_api/ad_small_int8.mlir new file mode 100644 index 0000000..8794d9e --- /dev/null +++ b/tests/gold/test_python_api/ad_small_int8.mlir @@ -0,0 +1,84 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x32x32x1xi8>) -> tensor<1x8xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %5 = "tosa.const"() <{values = dense<41> : tensor<8xi8>}> : () -> tensor<8xi8> + %6 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %7 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> + %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x276xi8>}> : () -> tensor<8x1x1x276xi8> + %10 = "tosa.const"() <{values = dense<42> : tensor<276xi8>}> : () -> tensor<276xi8> + %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276x1x1x276xi8>}> : () -> tensor<276x1x1x276xi8> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi8>}> : () -> tensor<276xi8> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x276xi8>}> : () -> tensor<1x3x3x276xi8> + %16 = "tosa.const"() <{values = dense<41> : tensor<276xi8>}> : () -> tensor<276xi8> + %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> + %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276x1x1x220xi8>}> : () -> tensor<276x1x1x220xi8> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi8>}> : () -> tensor<220xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x220xi8>}> : () -> tensor<1x3x3x220xi8> + %23 = "tosa.const"() <{values = dense<39> : tensor<220xi8>}> : () -> tensor<220xi8> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220x1x1x164xi8>}> : () -> tensor<220x1x1x164xi8> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> + %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x164xi8>}> : () -> tensor<1x3x3x164xi8> + %29 = "tosa.const"() <{values = dense<39> : tensor<164xi8>}> : () -> tensor<164xi8> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164x1x1x72xi8>}> : () -> tensor<164x1x1x72xi8> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x72xi8>}> : () -> tensor<1x3x3x72xi8> + %36 = "tosa.const"() <{values = dense<38> : tensor<72xi8>}> : () -> tensor<72xi8> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %38 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %39 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x3x3x1xi8>}> : () -> tensor<72x3x3x1xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %42 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> + %43 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %44 = tosa.conv2d %arg0, %40, %41, %42, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x1xi8>, tensor<72x3x3x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x72xi32> + %45 = tosa.rescale %44, %37, %36, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x72xi8> + %46 = tosa.clamp %45 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x72xi8>) -> tensor<1x32x32x72xi8> + %47 = tosa.reshape %35, %3 : (tensor<1x3x3x72xi8>, !tosa.shape<4>) -> tensor<3x3x72x1xi8> + %48 = tosa.depthwise_conv2d %46, %47, %41, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x72xi8>, tensor<3x3x72x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x72xi32> + %49 = tosa.rescale %48, %34, %33, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x72xi8> + %50 = tosa.clamp %49 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x72xi8>) -> tensor<1x16x16x72xi8> + %51 = tosa.conv2d %50, %32, %31, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x72xi8>, tensor<164x1x1x72xi8>, tensor<164xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x164xi32> + %52 = tosa.rescale %51, %30, %29, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x164xi32>, tensor<164xi32>, tensor<164xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x164xi8> + %53 = tosa.clamp %52 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x164xi8>) -> tensor<1x16x16x164xi8> + %54 = tosa.reshape %28, %2 : (tensor<1x3x3x164xi8>, !tosa.shape<4>) -> tensor<3x3x164x1xi8> + %55 = tosa.depthwise_conv2d %53, %54, %31, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x164xi8>, tensor<3x3x164x1xi8>, tensor<164xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x164xi32> + %56 = tosa.rescale %55, %27, %29, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x164xi32>, tensor<164xi32>, tensor<164xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x164xi8> + %57 = tosa.clamp %56 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x164xi8>) -> tensor<1x16x16x164xi8> + %58 = tosa.conv2d %57, %26, %25, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x164xi8>, tensor<220x1x1x164xi8>, tensor<220xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x220xi32> + %59 = tosa.rescale %58, %24, %23, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x220xi32>, tensor<220xi32>, tensor<220xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x220xi8> + %60 = tosa.clamp %59 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x220xi8>) -> tensor<1x16x16x220xi8> + %61 = tosa.reshape %22, %1 : (tensor<1x3x3x220xi8>, !tosa.shape<4>) -> tensor<3x3x220x1xi8> + %62 = tosa.depthwise_conv2d %60, %61, %25, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x220xi8>, tensor<3x3x220x1xi8>, tensor<220xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x220xi32> + %63 = tosa.rescale %62, %21, %20, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x220xi32>, tensor<220xi32>, tensor<220xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x220xi8> + %64 = tosa.clamp %63 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x220xi8>) -> tensor<1x8x8x220xi8> + %65 = tosa.conv2d %64, %19, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x220xi8>, tensor<276x1x1x220xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x276xi32> + %66 = tosa.rescale %65, %17, %16, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x276xi8> + %67 = tosa.clamp %66 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x276xi8>) -> tensor<1x8x8x276xi8> + %68 = tosa.reshape %15, %0 : (tensor<1x3x3x276xi8>, !tosa.shape<4>) -> tensor<3x3x276x1xi8> + %69 = tosa.depthwise_conv2d %67, %68, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x276xi8>, tensor<3x3x276x1xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x276xi32> + %70 = tosa.rescale %69, %14, %13, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x276xi8> + %71 = tosa.clamp %70 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x276xi8>) -> tensor<1x4x4x276xi8> + %72 = tosa.conv2d %71, %12, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x276xi8>, tensor<276x1x1x276xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x276xi32> + %73 = tosa.rescale %72, %11, %10, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x276xi8> + %74 = tosa.clamp %73 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x276xi8>) -> tensor<1x4x4x276xi8> + %75 = tosa.avg_pool2d %74, %43, %43 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x4x4x276xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x276xi8> + %76 = tosa.conv2d %75, %9, %8, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x276xi8>, tensor<8x1x1x276xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x8xi32> + %77 = tosa.rescale %76, %6, %5, %39, %7 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x8xi8> + %78 = tosa.reshape %77, %4 : (tensor<1x1x1x8xi8>, !tosa.shape<2>) -> tensor<1x8xi8> + return %78 : tensor<1x8xi8> + } +} diff --git a/tests/gold/test_python_api/cnn_s_quantized.mlir b/tests/gold/test_python_api/cnn_s_quantized.mlir new file mode 100644 index 0000000..dd1148f --- /dev/null +++ b/tests/gold/test_python_api/cnn_s_quantized.mlir @@ -0,0 +1,120 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.14.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { + %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> + %12 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %17 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %18 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %20 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> + %21 = "tosa.const"() <{values = dense<1201210766> : tensor<1xi32>}> : () -> tensor<1xi32> + %22 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> + %23 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %24 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x128xi8>}> : () -> tensor<12x128xi8> + %27 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %28 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> + %29 = "tosa.const"() <{values = dense<1937167208> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x16xi8>}> : () -> tensor<128x16xi8> + %33 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> + %34 = "tosa.const"() <{values = dense<1331195725> : tensor<1xi32>}> : () -> tensor<1xi32> + %35 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> + %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %37 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1920xi8>}> : () -> tensor<16x1920xi8> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi8>}> : () -> tensor<30xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi32>}> : () -> tensor<30xi32> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi32>}> : () -> tensor<30xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30x10x4x28xi8>}> : () -> tensor<30x10x4x28xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %46 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %47 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %48 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %49 = "tosa.const"() <{values = dense<102> : tensor<1xi8>}> : () -> tensor<1xi8> + %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x10x4x1xi8>}> : () -> tensor<28x10x4x1xi8> + %52 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %53 = tosa.reshape %arg0, %52 : (tensor, !tosa.shape<4>) -> tensor + %54 = tosa.conv2d %53, %51, %50, %49, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<28x10x4x1xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %55 = tosa.rescale %54, %45, %44, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %56 = tosa.clamp %55 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %57 = tosa.conv2d %56, %43, %42, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<30x10x4x28xi8>, tensor<30xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %58 = tosa.rescale %57, %41, %40, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<30xi32>, tensor<30xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %59 = tosa.clamp %58 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %60 = tosa.reshape %59, %37 : (tensor, !tosa.shape<4>) -> tensor + %61 = tosa.reshape %39, %36 : (tensor<16x1920xi8>, !tosa.shape<4>) -> tensor<16x1x1x1920xi8> + %62 = tosa.conv2d %60, %61, %38, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<16x1x1x1920xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %63 = tosa.rescale %62, %34, %33, %47, %35 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %64 = tosa.reshape %32, %30 : (tensor<128x16xi8>, !tosa.shape<4>) -> tensor<128x1x1x16xi8> + %65 = tosa.conv2d %63, %64, %31, %35, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x16xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %66 = tosa.rescale %65, %29, %28, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %67 = tosa.reshape %66, %27 : (tensor, !tosa.shape<2>) -> tensor + %68 = tosa.clamp %67 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %69 = tosa.reshape %68, %24 : (tensor, !tosa.shape<4>) -> tensor + %70 = tosa.reshape %26, %23 : (tensor<12x128xi8>, !tosa.shape<4>) -> tensor<12x1x1x128xi8> + %71 = tosa.conv2d %69, %70, %25, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x128xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %72 = tosa.rescale %71, %21, %20, %47, %22 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %73 = tosa.reshape %72, %19 : (tensor, !tosa.shape<2>) -> tensor + %74 = tosa.rescale %73, %18, %17, %22, %47 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %75 = tosa.reduce_max %74 {axis = 1 : i32} : (tensor) -> tensor + %76 = tosa.sub %74, %75 : (tensor, tensor) -> tensor + %77 = tosa.rescale %76, %18, %12, %47, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor + %78 = tosa.table %77, %16 : (tensor, tensor<513xi16>) -> tensor + %79 = tosa.table %77, %15 : (tensor, tensor<513xi16>) -> tensor + %80 = tosa.table %77, %14 : (tensor, tensor<513xi16>) -> tensor + %81 = tosa.table %77, %13 : (tensor, tensor<513xi16>) -> tensor + %82 = tosa.logical_left_shift %78, %10 : (tensor, tensor<1x1xi32>) -> tensor + %83 = tosa.logical_left_shift %79, %9 : (tensor, tensor<1x1xi32>) -> tensor + %84 = tosa.logical_left_shift %80, %8 : (tensor, tensor<1x1xi32>) -> tensor + %85 = tosa.arithmetic_right_shift %81, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %86 = tosa.add %82, %83 : (tensor, tensor) -> tensor + %87 = tosa.add %86, %84 : (tensor, tensor) -> tensor + %88 = tosa.add %87, %85 : (tensor, tensor) -> tensor + %89 = tosa.arithmetic_right_shift %88, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %90 = tosa.reduce_sum %89 {axis = 1 : i32} : (tensor) -> tensor + %91 = tosa.clz %90 : (tensor) -> tensor + %92 = tosa.sub %91, %8 : (tensor, tensor<1x1xi32>) -> tensor + %93 = tosa.logical_left_shift %90, %92 : (tensor, tensor) -> tensor + %94 = tosa.mul %93, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %95 = tosa.add %94, %3 : (tensor, tensor<1x1xi32>) -> tensor + %96 = tosa.mul %95, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %97 = tosa.sub %4, %96 : (tensor<1x1xi32>, tensor) -> tensor + %98 = tosa.mul %95, %97, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %99 = tosa.mul %98, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %100 = tosa.add %95, %99 : (tensor, tensor) -> tensor + %101 = tosa.mul %100, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %102 = tosa.sub %4, %101 : (tensor<1x1xi32>, tensor) -> tensor + %103 = tosa.mul %100, %102, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %104 = tosa.mul %103, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %105 = tosa.add %100, %104 : (tensor, tensor) -> tensor + %106 = tosa.mul %105, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %107 = tosa.sub %4, %106 : (tensor<1x1xi32>, tensor) -> tensor + %108 = tosa.mul %105, %107, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %109 = tosa.mul %108, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %110 = tosa.add %105, %109 : (tensor, tensor) -> tensor + %111 = tosa.mul %88, %110, %17 : (tensor, tensor, tensor<1xi8>) -> tensor + %112 = tosa.sub %0, %91 : (tensor<1x1xi32>, tensor) -> tensor + %113 = tosa.arithmetic_right_shift %111, %112 {round = true} : (tensor, tensor) -> tensor + %114 = tosa.rescale %113, %18, %17, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + return %114 : tensor + } +} diff --git a/tests/gold/test_python_api/dnn_s_quantized.mlir b/tests/gold/test_python_api/dnn_s_quantized.mlir new file mode 100644 index 0000000..44e67fd --- /dev/null +++ b/tests/gold/test_python_api/dnn_s_quantized.mlir @@ -0,0 +1,114 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.14.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { + %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %16 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %17 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %18 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %19 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> + %20 = "tosa.const"() <{values = dense<1374243659> : tensor<1xi32>}> : () -> tensor<1xi32> + %21 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %22 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x144xi8>}> : () -> tensor<12x144xi8> + %25 = "tosa.const"() <{values = dense<1143565917> : tensor<1xi32>}> : () -> tensor<1xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x144xi8>}> : () -> tensor<144x144xi8> + %28 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> + %29 = "tosa.const"() <{values = dense<1857097977> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %31 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x144xi8>}> : () -> tensor<144x144xi8> + %34 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %35 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> + %36 = "tosa.const"() <{values = dense<1901577989> : tensor<1xi32>}> : () -> tensor<1xi32> + %37 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %38 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %39 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %40 = "tosa.const"() <{values = dense<100> : tensor<1xi8>}> : () -> tensor<1xi8> + %41 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x250xi8>}> : () -> tensor<144x250xi8> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %44 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %45 = tosa.reshape %arg0, %44 : (tensor, !tosa.shape<4>) -> tensor + %46 = tosa.reshape %42, %41 : (tensor<144x250xi8>, !tosa.shape<4>) -> tensor<144x1x1x250xi8> + %47 = tosa.conv2d %45, %46, %43, %40, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x250xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %48 = tosa.rescale %47, %36, %35, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %49 = tosa.reshape %48, %34 : (tensor, !tosa.shape<2>) -> tensor + %50 = tosa.clamp %49 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %51 = tosa.reshape %50, %31 : (tensor, !tosa.shape<4>) -> tensor + %52 = tosa.reshape %33, %30 : (tensor<144x144xi8>, !tosa.shape<4>) -> tensor<144x1x1x144xi8> + %53 = tosa.conv2d %51, %52, %32, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x144xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %54 = tosa.rescale %53, %29, %28, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %55 = tosa.reshape %54, %34 : (tensor, !tosa.shape<2>) -> tensor + %56 = tosa.clamp %55 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %57 = tosa.reshape %56, %31 : (tensor, !tosa.shape<4>) -> tensor + %58 = tosa.reshape %27, %30 : (tensor<144x144xi8>, !tosa.shape<4>) -> tensor<144x1x1x144xi8> + %59 = tosa.conv2d %57, %58, %26, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x144xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %60 = tosa.rescale %59, %25, %35, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %61 = tosa.reshape %60, %34 : (tensor, !tosa.shape<2>) -> tensor + %62 = tosa.clamp %61 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %63 = tosa.reshape %62, %31 : (tensor, !tosa.shape<4>) -> tensor + %64 = tosa.reshape %24, %22 : (tensor<12x144xi8>, !tosa.shape<4>) -> tensor<12x1x1x144xi8> + %65 = tosa.conv2d %63, %64, %23, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x144xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %66 = tosa.rescale %65, %20, %19, %38, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %67 = tosa.reshape %66, %18 : (tensor, !tosa.shape<2>) -> tensor + %68 = tosa.rescale %67, %17, %16, %21, %38 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %69 = tosa.reduce_max %68 {axis = 1 : i32} : (tensor) -> tensor + %70 = tosa.sub %68, %69 : (tensor, tensor) -> tensor + %71 = tosa.rescale %70, %17, %21, %38, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor + %72 = tosa.table %71, %15 : (tensor, tensor<513xi16>) -> tensor + %73 = tosa.table %71, %14 : (tensor, tensor<513xi16>) -> tensor + %74 = tosa.table %71, %13 : (tensor, tensor<513xi16>) -> tensor + %75 = tosa.table %71, %12 : (tensor, tensor<513xi16>) -> tensor + %76 = tosa.logical_left_shift %72, %10 : (tensor, tensor<1x1xi32>) -> tensor + %77 = tosa.logical_left_shift %73, %9 : (tensor, tensor<1x1xi32>) -> tensor + %78 = tosa.logical_left_shift %74, %8 : (tensor, tensor<1x1xi32>) -> tensor + %79 = tosa.arithmetic_right_shift %75, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %80 = tosa.add %76, %77 : (tensor, tensor) -> tensor + %81 = tosa.add %80, %78 : (tensor, tensor) -> tensor + %82 = tosa.add %81, %79 : (tensor, tensor) -> tensor + %83 = tosa.arithmetic_right_shift %82, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %84 = tosa.reduce_sum %83 {axis = 1 : i32} : (tensor) -> tensor + %85 = tosa.clz %84 : (tensor) -> tensor + %86 = tosa.sub %85, %8 : (tensor, tensor<1x1xi32>) -> tensor + %87 = tosa.logical_left_shift %84, %86 : (tensor, tensor) -> tensor + %88 = tosa.mul %87, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %89 = tosa.add %88, %3 : (tensor, tensor<1x1xi32>) -> tensor + %90 = tosa.mul %89, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %91 = tosa.sub %4, %90 : (tensor<1x1xi32>, tensor) -> tensor + %92 = tosa.mul %89, %91, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %93 = tosa.mul %92, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %94 = tosa.add %89, %93 : (tensor, tensor) -> tensor + %95 = tosa.mul %94, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %96 = tosa.sub %4, %95 : (tensor<1x1xi32>, tensor) -> tensor + %97 = tosa.mul %94, %96, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %98 = tosa.mul %97, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %99 = tosa.add %94, %98 : (tensor, tensor) -> tensor + %100 = tosa.mul %99, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %101 = tosa.sub %4, %100 : (tensor<1x1xi32>, tensor) -> tensor + %102 = tosa.mul %99, %101, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %103 = tosa.mul %102, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %104 = tosa.add %99, %103 : (tensor, tensor) -> tensor + %105 = tosa.mul %82, %104, %16 : (tensor, tensor, tensor<1xi8>) -> tensor + %106 = tosa.sub %0, %85 : (tensor<1x1xi32>, tensor) -> tensor + %107 = tosa.arithmetic_right_shift %105, %106 {round = true} : (tensor, tensor) -> tensor + %108 = tosa.rescale %107, %17, %16, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + return %108 : tensor + } +} diff --git a/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir b/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir new file mode 100644 index 0000000..4b0d719 --- /dev/null +++ b/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir @@ -0,0 +1,125 @@ +module attributes {tf_saved_model.semantics, tfl.description = "MLIR Converted.", tfl.metadata = {CONVERSION_METADATA = "\0C\00\00\00\08\00\0E\00\08\00\04\00\08\00\00\00\10\00\00\00(\00\00\00\00\00\06\00\08\00\04\00\06\00\00\00\04\00\00\00\01\00\00\00\EC\03\00\00\00\00\0A\00\10\00\0C\00\08\00\04\00\0A\00\00\00\02\00\00\00\02\00\00\00\04\00\00\00\05\00\00\002.9.1\00\00\00", min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor {tf_saved_model.index_path = ["input"]}) -> (tensor {tf_saved_model.index_path = ["dense"]}) attributes {tf.entry_function = {inputs = "serving_default_input:0", outputs = "StatefulPartitionedCall:0"}, tf_saved_model.exported_names = ["serving_default"]} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = "tosa.const"() <{values = dense<31> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %2 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %3 = "tosa.const"() <{values = dense<32768> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %4 = "tosa.const"() <{values = dense<14> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %5 = "tosa.const"() <{values = dense<1073741824> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %6 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %8 = "tosa.const"() <{values = dense<32767> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %9 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> + %10 = "tosa.const"() <{values = dense<1564587505> : tensor<1xi32>}> : () -> tensor<1xi32> + %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %12 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %13 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %14 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %15 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %16 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %17 = "tosa.const"() <{values = dense<23137> : tensor<1xi16>}> : () -> tensor<1xi16> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi48>}> : () -> tensor<12xi48> + %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x64xi8>}> : () -> tensor<12x64xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> + %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> + %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> + %55 = "tosa.const"() <{values = dense<0> : tensor<1xi48>}> : () -> tensor<1xi48> + %56 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %57 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> + %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x10x4x1xi8>}> : () -> tensor<64x10x4x1xi8> + %60 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %61 = tosa.reshape %arg0, %60 : (tensor, !tosa.shape<4>) -> tensor + %62 = tosa.conv2d %61, %59, %58, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x10x4x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %63 = tosa.rescale %62, %54, %53, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %64 = tosa.clamp %63 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %65 = tosa.reshape %52, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> + %66 = tosa.depthwise_conv2d %64, %65, %51, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %67 = tosa.rescale %66, %50, %49, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %68 = tosa.clamp %67 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %69 = tosa.conv2d %68, %48, %47, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %70 = tosa.rescale %69, %46, %45, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %71 = tosa.clamp %70 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %72 = tosa.reshape %44, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> + %73 = tosa.depthwise_conv2d %71, %72, %43, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %74 = tosa.rescale %73, %42, %41, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %75 = tosa.clamp %74 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %76 = tosa.conv2d %75, %40, %39, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %77 = tosa.rescale %76, %38, %37, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %78 = tosa.clamp %77 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %79 = tosa.reshape %36, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> + %80 = tosa.depthwise_conv2d %78, %79, %35, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %81 = tosa.rescale %80, %34, %33, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %82 = tosa.clamp %81 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %83 = tosa.conv2d %82, %32, %31, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %84 = tosa.rescale %83, %30, %29, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %85 = tosa.clamp %84 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %86 = tosa.reshape %28, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> + %87 = tosa.depthwise_conv2d %85, %86, %27, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %88 = tosa.rescale %87, %26, %25, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %89 = tosa.clamp %88 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %90 = tosa.conv2d %89, %24, %23, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %91 = tosa.rescale %90, %22, %21, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %92 = tosa.clamp %91 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor + %93 = tosa.avg_pool2d %92, %57, %57 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor, tensor<1xi16>, tensor<1xi16>) -> tensor + %94 = tosa.reshape %20, %19 : (tensor<12x64xi8>, !tosa.shape<4>) -> tensor<12x1x1x64xi8> + %95 = tosa.conv2d %93, %94, %18, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x64xi8>, tensor<12xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor + %96 = tosa.rescale %95, %17, %16, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<1xi16>, tensor<1xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor + %97 = tosa.reshape %96, %15 : (tensor, !tosa.shape<2>) -> tensor + %98 = tosa.rescale %97, %14, %13, %57, %12 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi16>, tensor<1xi32>) -> tensor + %99 = tosa.reduce_max %98 {axis = 1 : i32} : (tensor) -> tensor + %100 = tosa.sub %98, %99 : (tensor, tensor) -> tensor + %101 = tosa.rescale %100, %10, %9, %12, %12 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor + %102 = tosa.add %101, %8 : (tensor, tensor<1x1xi32>) -> tensor + %103 = tosa.cast %102 : (tensor) -> tensor + %104 = tosa.table %103, %11 : (tensor, tensor<513xi16>) -> tensor + %105 = tosa.arithmetic_right_shift %104, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %106 = tosa.reduce_sum %105 {axis = 1 : i32} : (tensor) -> tensor + %107 = tosa.clz %106 : (tensor) -> tensor + %108 = tosa.sub %107, %6 : (tensor, tensor<1x1xi32>) -> tensor + %109 = tosa.logical_left_shift %106, %108 : (tensor, tensor) -> tensor + %110 = tosa.sub %109, %5 : (tensor, tensor<1x1xi32>) -> tensor + %111 = tosa.arithmetic_right_shift %110, %4 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %112 = tosa.sub %111, %3 : (tensor, tensor<1x1xi32>) -> tensor + %113 = tosa.cast %112 : (tensor) -> tensor + %114 = tosa.table %113, %2 : (tensor, tensor<513xi16>) -> tensor + %115 = tosa.arithmetic_right_shift %114, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %116 = tosa.mul %115, %105, %56 : (tensor, tensor, tensor<1xi8>) -> tensor + %117 = tosa.sub %1, %107 : (tensor<1x1xi32>, tensor) -> tensor + %118 = tosa.arithmetic_right_shift %116, %117 {round = true} : (tensor, tensor) -> tensor + %119 = tosa.rescale %118, %14, %13, %12, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor + return %119 : tensor + } +} diff --git a/tests/gold/test_python_api/efficientnet_lite0_224.mlir b/tests/gold/test_python_api/efficientnet_lite0_224.mlir new file mode 100644 index 0000000..77ae940 --- /dev/null +++ b/tests/gold/test_python_api/efficientnet_lite0_224.mlir @@ -0,0 +1,528 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x224x224x3xui8>) -> tensor<1x1000xui8> attributes {tf.entry_function = {inputs = "images", outputs = "Softmax"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %11 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %12 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %13 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %14 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %15 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %16 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %17 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %18 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %19 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %20 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %21 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> + %22 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %27 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %28 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> + %29 = "tosa.const"() <{values = dense<1076206832> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = "tosa.const"() <{values = dense<-62> : tensor<1xi8>}> : () -> tensor<1xi8> + %31 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1000xi32>}> : () -> tensor<1000xi32> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1000x1280xi8>}> : () -> tensor<1000x1280xi8> + %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi8>}> : () -> tensor<1280xi8> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280x1x1x320xi8>}> : () -> tensor<1280x1x1x320xi8> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi8>}> : () -> tensor<320xi8> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> + %40 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320x1x1x1152xi8>}> : () -> tensor<320x1x1x1152xi8> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x1152xi8>}> : () -> tensor<1x3x3x1152xi8> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> + %51 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> + %52 = "tosa.const"() <{values = dense<1844865123> : tensor<1xi32>}> : () -> tensor<1xi32> + %53 = "tosa.const"() <{values = dense<2111135967> : tensor<1xi32>}> : () -> tensor<1xi32> + %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %56 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> + %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> + %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> + %67 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> + %68 = "tosa.const"() <{values = dense<1566288474> : tensor<1xi32>}> : () -> tensor<1xi32> + %69 = "tosa.const"() <{values = dense<1421836328> : tensor<1xi32>}> : () -> tensor<1xi32> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %72 = "tosa.const"() <{values = dense<-27> : tensor<1xi8>}> : () -> tensor<1xi8> + %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> + %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> + %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %80 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> + %83 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> + %84 = "tosa.const"() <{values = dense<2090466540> : tensor<1xi32>}> : () -> tensor<1xi32> + %85 = "tosa.const"() <{values = dense<1656099189> : tensor<1xi32>}> : () -> tensor<1xi32> + %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %88 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> + %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> + %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> + %95 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> + %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> + %98 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> + %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %101 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> + %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x672xi8>}> : () -> tensor<192x1x1x672xi8> + %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> + %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> + %112 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> + %113 = "tosa.const"() <{values = dense<1858682003> : tensor<1xi32>}> : () -> tensor<1xi32> + %114 = "tosa.const"() <{values = dense<1095275027> : tensor<1xi32>}> : () -> tensor<1xi32> + %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> + %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %117 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x672xi8>}> : () -> tensor<112x1x1x672xi8> + %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %123 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> + %124 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %126 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> + %128 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> + %129 = "tosa.const"() <{values = dense<1874662413> : tensor<1xi32>}> : () -> tensor<1xi32> + %130 = "tosa.const"() <{values = dense<1480402198> : tensor<1xi32>}> : () -> tensor<1xi32> + %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> + %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %133 = "tosa.const"() <{values = dense<21> : tensor<1xi8>}> : () -> tensor<1xi8> + %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x672xi8>}> : () -> tensor<112x1x1x672xi8> + %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> + %140 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> + %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> + %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> + %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> + %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x480xi8>}> : () -> tensor<112x1x1x480xi8> + %148 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x480xi8>}> : () -> tensor<1x5x5x480xi8> + %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> + %156 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> + %157 = "tosa.const"() <{values = dense<1077008715> : tensor<1xi32>}> : () -> tensor<1xi32> + %158 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> + %159 = "tosa.const"() <{values = dense<2000085201> : tensor<1xi32>}> : () -> tensor<1xi32> + %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> + %161 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %162 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x480xi8>}> : () -> tensor<80x1x1x480xi8> + %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x480xi8>}> : () -> tensor<1x3x3x480xi8> + %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> + %172 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> + %173 = "tosa.const"() <{values = dense<2135713319> : tensor<1xi32>}> : () -> tensor<1xi32> + %174 = "tosa.const"() <{values = dense<1310035080> : tensor<1xi32>}> : () -> tensor<1xi32> + %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> + %176 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %177 = "tosa.const"() <{values = dense<13> : tensor<1xi8>}> : () -> tensor<1xi8> + %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x480xi8>}> : () -> tensor<80x1x1x480xi8> + %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %181 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x480xi8>}> : () -> tensor<1x3x3x480xi8> + %184 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> + %185 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> + %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> + %188 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> + %189 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> + %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x240xi8>}> : () -> tensor<80x1x1x240xi8> + %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x240xi8>}> : () -> tensor<1x3x3x240xi8> + %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> + %200 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> + %201 = "tosa.const"() <{values = dense<1934301239> : tensor<1xi32>}> : () -> tensor<1xi32> + %202 = "tosa.const"() <{values = dense<1676171725> : tensor<1xi32>}> : () -> tensor<1xi32> + %203 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %204 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %205 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> + %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> + %208 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %209 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> + %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %213 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %214 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %215 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> + %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %218 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> + %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x144xi8>}> : () -> tensor<40x1x1x144xi8> + %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x144xi8>}> : () -> tensor<1x5x5x144xi8> + %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> + %229 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> + %230 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> + %231 = "tosa.const"() <{values = dense<1867833568> : tensor<1xi32>}> : () -> tensor<1xi32> + %232 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %233 = "tosa.const"() <{values = dense<2065654195> : tensor<1xi32>}> : () -> tensor<1xi32> + %234 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> + %235 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> + %236 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %238 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> + %239 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %240 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x144xi8>}> : () -> tensor<24x1x1x144xi8> + %241 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %242 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %243 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %244 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> + %245 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> + %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> + %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %257 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %260 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> + %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %263 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> + %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x32xi8>}> : () -> tensor<16x1x1x32xi8> + %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x32xi8>}> : () -> tensor<1x3x3x32xi8> + %270 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %272 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %273 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x3xi8>}> : () -> tensor<32x3x3x3xi8> + %275 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %276 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %277 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %278 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %279 = "tosa.const"() <{values = dense<-125> : tensor<1xi8>}> : () -> tensor<1xi8> + %280 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> + %281 = tosa.rescale %arg0, %277, %278, %279, %280 {input_unsigned = true, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x224x224x3xui8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> + %282 = tosa.rescale %281, %277, %278, %280, %280 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x224x224x3xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> + %283 = tosa.conv2d %282, %274, %273, %280, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x224x224x3xi8>, tensor<32x3x3x3xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> + %284 = tosa.rescale %283, %271, %270, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> + %285 = tosa.clamp %284 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x32xi8>) -> tensor<1x112x112x32xi8> + %286 = tosa.reshape %269, %10 : (tensor<1x3x3x32xi8>, !tosa.shape<4>) -> tensor<3x3x32x1xi8> + %287 = tosa.depthwise_conv2d %285, %286, %268, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<3x3x32x1xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> + %288 = tosa.rescale %287, %267, %266, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> + %289 = tosa.clamp %288 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x32xi8>) -> tensor<1x112x112x32xi8> + %290 = tosa.conv2d %289, %265, %264, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<16x1x1x32xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x16xi32> + %291 = tosa.rescale %290, %262, %261, %272, %263 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x16xi8> + %292 = tosa.conv2d %291, %260, %259, %263, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x96xi32> + %293 = tosa.rescale %292, %258, %257, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x96xi8> + %294 = tosa.clamp %293 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x96xi8>) -> tensor<1x112x112x96xi8> + %295 = tosa.reshape %256, %9 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %296 = tosa.depthwise_conv2d %294, %295, %255, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x96xi32> + %297 = tosa.rescale %296, %254, %253, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x96xi8> + %298 = tosa.clamp %297 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x96xi8>) -> tensor<1x56x56x96xi8> + %299 = tosa.conv2d %298, %252, %251, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> + %300 = tosa.rescale %299, %250, %249, %272, %276 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %301 = tosa.conv2d %300, %248, %247, %276, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %302 = tosa.rescale %301, %246, %245, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %303 = tosa.clamp %302 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> + %304 = tosa.reshape %244, %8 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> + %305 = tosa.depthwise_conv2d %303, %304, %243, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %306 = tosa.rescale %305, %242, %241, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %307 = tosa.clamp %306 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> + %308 = tosa.conv2d %307, %240, %239, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<24x1x1x144xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> + %309 = tosa.rescale %308, %237, %236, %272, %238 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %310 = tosa.rescale %309, %277, %235, %238, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %311 = tosa.rescale %300, %277, %234, %276, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %312 = tosa.rescale %311, %233, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %313 = tosa.add %310, %312 : (tensor<1x56x56x24xi32>, tensor<1x56x56x24xi32>) -> tensor<1x56x56x24xi32> + %314 = tosa.rescale %313, %231, %230, %272, %229 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %315 = tosa.conv2d %314, %228, %227, %229, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %316 = tosa.rescale %315, %226, %225, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %317 = tosa.clamp %316 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> + %318 = tosa.reshape %224, %7 : (tensor<1x5x5x144xi8>, !tosa.shape<4>) -> tensor<5x5x144x1xi8> + %319 = tosa.depthwise_conv2d %317, %318, %223, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<5x5x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x144xi32> + %320 = tosa.rescale %319, %222, %221, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x144xi8> + %321 = tosa.clamp %320 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x144xi8>) -> tensor<1x28x28x144xi8> + %322 = tosa.conv2d %321, %220, %219, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x144xi8>, tensor<40x1x1x144xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x40xi32> + %323 = tosa.rescale %322, %217, %216, %272, %218 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> + %324 = tosa.conv2d %323, %215, %214, %218, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> + %325 = tosa.rescale %324, %213, %212, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> + %326 = tosa.clamp %325 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> + %327 = tosa.reshape %211, %6 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> + %328 = tosa.depthwise_conv2d %326, %327, %210, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> + %329 = tosa.rescale %328, %209, %208, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> + %330 = tosa.clamp %329 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> + %331 = tosa.conv2d %330, %207, %206, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x40xi32> + %332 = tosa.rescale %331, %204, %203, %272, %205 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> + %333 = tosa.rescale %332, %277, %234, %205, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x40xi32> + %334 = tosa.rescale %333, %202, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x40xi32> + %335 = tosa.rescale %323, %277, %235, %218, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x40xi32> + %336 = tosa.add %334, %335 : (tensor<1x28x28x40xi32>, tensor<1x28x28x40xi32>) -> tensor<1x28x28x40xi32> + %337 = tosa.rescale %336, %201, %230, %272, %200 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> + %338 = tosa.conv2d %337, %199, %198, %200, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> + %339 = tosa.rescale %338, %197, %196, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> + %340 = tosa.clamp %339 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> + %341 = tosa.reshape %195, %5 : (tensor<1x3x3x240xi8>, !tosa.shape<4>) -> tensor<3x3x240x1xi8> + %342 = tosa.depthwise_conv2d %340, %341, %194, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<3x3x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x240xi32> + %343 = tosa.rescale %342, %193, %192, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x240xi8> + %344 = tosa.clamp %343 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x240xi8>) -> tensor<1x14x14x240xi8> + %345 = tosa.conv2d %344, %191, %190, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x240xi8>, tensor<80x1x1x240xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> + %346 = tosa.rescale %345, %189, %188, %272, %276 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> + %347 = tosa.conv2d %346, %187, %186, %276, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %348 = tosa.rescale %347, %185, %184, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %349 = tosa.clamp %348 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %350 = tosa.reshape %183, %4 : (tensor<1x3x3x480xi8>, !tosa.shape<4>) -> tensor<3x3x480x1xi8> + %351 = tosa.depthwise_conv2d %349, %350, %182, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<3x3x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %352 = tosa.rescale %351, %181, %180, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %353 = tosa.clamp %352 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %354 = tosa.conv2d %353, %179, %178, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<80x1x1x480xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> + %355 = tosa.rescale %354, %176, %175, %272, %177 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> + %356 = tosa.rescale %355, %277, %234, %177, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %357 = tosa.rescale %356, %174, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %358 = tosa.rescale %346, %277, %235, %276, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %359 = tosa.add %357, %358 : (tensor<1x14x14x80xi32>, tensor<1x14x14x80xi32>) -> tensor<1x14x14x80xi32> + %360 = tosa.rescale %359, %173, %230, %272, %172 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> + %361 = tosa.conv2d %360, %171, %170, %172, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %362 = tosa.rescale %361, %169, %168, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %363 = tosa.clamp %362 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %364 = tosa.reshape %167, %4 : (tensor<1x3x3x480xi8>, !tosa.shape<4>) -> tensor<3x3x480x1xi8> + %365 = tosa.depthwise_conv2d %363, %364, %166, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<3x3x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %366 = tosa.rescale %365, %165, %164, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %367 = tosa.clamp %366 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %368 = tosa.conv2d %367, %163, %162, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<80x1x1x480xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> + %369 = tosa.rescale %368, %161, %160, %272, %200 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> + %370 = tosa.rescale %369, %277, %234, %200, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %371 = tosa.rescale %370, %159, %158, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %372 = tosa.rescale %360, %277, %235, %172, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> + %373 = tosa.add %371, %372 : (tensor<1x14x14x80xi32>, tensor<1x14x14x80xi32>) -> tensor<1x14x14x80xi32> + %374 = tosa.rescale %373, %157, %156, %272, %280 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> + %375 = tosa.conv2d %374, %155, %154, %280, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %376 = tosa.rescale %375, %153, %152, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %377 = tosa.clamp %376 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %378 = tosa.reshape %151, %3 : (tensor<1x5x5x480xi8>, !tosa.shape<4>) -> tensor<5x5x480x1xi8> + %379 = tosa.depthwise_conv2d %377, %378, %150, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<5x5x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> + %380 = tosa.rescale %379, %149, %148, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> + %381 = tosa.clamp %380 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> + %382 = tosa.conv2d %381, %147, %146, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<112x1x1x480xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> + %383 = tosa.rescale %382, %145, %144, %272, %235 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> + %384 = tosa.conv2d %383, %143, %142, %235, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> + %385 = tosa.rescale %384, %141, %140, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> + %386 = tosa.clamp %385 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> + %387 = tosa.reshape %139, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> + %388 = tosa.depthwise_conv2d %386, %387, %138, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> + %389 = tosa.rescale %388, %137, %136, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> + %390 = tosa.clamp %389 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> + %391 = tosa.conv2d %390, %135, %134, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<112x1x1x672xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> + %392 = tosa.rescale %391, %132, %131, %272, %133 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> + %393 = tosa.rescale %392, %277, %234, %133, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %394 = tosa.rescale %393, %130, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %395 = tosa.rescale %383, %277, %235, %235, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %396 = tosa.add %394, %395 : (tensor<1x14x14x112xi32>, tensor<1x14x14x112xi32>) -> tensor<1x14x14x112xi32> + %397 = tosa.rescale %396, %129, %230, %272, %128 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> + %398 = tosa.conv2d %397, %127, %126, %128, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> + %399 = tosa.rescale %398, %125, %124, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> + %400 = tosa.clamp %399 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> + %401 = tosa.reshape %123, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> + %402 = tosa.depthwise_conv2d %400, %401, %122, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> + %403 = tosa.rescale %402, %121, %120, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> + %404 = tosa.clamp %403 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> + %405 = tosa.conv2d %404, %119, %118, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<112x1x1x672xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> + %406 = tosa.rescale %405, %116, %115, %272, %117 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> + %407 = tosa.rescale %406, %277, %234, %117, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %408 = tosa.rescale %407, %114, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %409 = tosa.rescale %397, %277, %235, %128, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> + %410 = tosa.add %408, %409 : (tensor<1x14x14x112xi32>, tensor<1x14x14x112xi32>) -> tensor<1x14x14x112xi32> + %411 = tosa.rescale %410, %113, %230, %272, %112 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> + %412 = tosa.conv2d %411, %111, %110, %112, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> + %413 = tosa.rescale %412, %109, %108, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> + %414 = tosa.clamp %413 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> + %415 = tosa.reshape %107, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> + %416 = tosa.depthwise_conv2d %414, %415, %106, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x672xi32> + %417 = tosa.rescale %416, %105, %104, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x672xi8> + %418 = tosa.clamp %417 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x672xi8>) -> tensor<1x7x7x672xi8> + %419 = tosa.conv2d %418, %103, %102, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x672xi8>, tensor<192x1x1x672xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> + %420 = tosa.rescale %419, %100, %99, %272, %101 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %421 = tosa.conv2d %420, %98, %97, %101, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %422 = tosa.rescale %421, %96, %95, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %423 = tosa.clamp %422 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %424 = tosa.reshape %94, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> + %425 = tosa.depthwise_conv2d %423, %424, %93, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %426 = tosa.rescale %425, %92, %91, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %427 = tosa.clamp %426 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %428 = tosa.conv2d %427, %90, %89, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> + %429 = tosa.rescale %428, %87, %86, %272, %88 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %430 = tosa.rescale %429, %277, %234, %88, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %431 = tosa.rescale %430, %85, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %432 = tosa.rescale %420, %277, %235, %101, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %433 = tosa.add %431, %432 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> + %434 = tosa.rescale %433, %84, %230, %272, %83 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %435 = tosa.conv2d %434, %82, %81, %83, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %436 = tosa.rescale %435, %80, %79, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %437 = tosa.clamp %436 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %438 = tosa.reshape %78, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> + %439 = tosa.depthwise_conv2d %437, %438, %77, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %440 = tosa.rescale %439, %76, %75, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %441 = tosa.clamp %440 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %442 = tosa.conv2d %441, %74, %73, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> + %443 = tosa.rescale %442, %71, %70, %272, %72 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %444 = tosa.rescale %443, %277, %234, %72, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %445 = tosa.rescale %444, %69, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %446 = tosa.rescale %434, %277, %235, %83, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %447 = tosa.add %445, %446 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> + %448 = tosa.rescale %447, %68, %230, %272, %67 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %449 = tosa.conv2d %448, %66, %65, %67, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %450 = tosa.rescale %449, %64, %63, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %451 = tosa.clamp %450 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %452 = tosa.reshape %62, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> + %453 = tosa.depthwise_conv2d %451, %452, %61, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %454 = tosa.rescale %453, %60, %59, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %455 = tosa.clamp %454 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %456 = tosa.conv2d %455, %58, %57, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> + %457 = tosa.rescale %456, %55, %54, %272, %56 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %458 = tosa.rescale %457, %277, %234, %56, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %459 = tosa.rescale %458, %53, %158, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %460 = tosa.rescale %448, %277, %235, %67, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> + %461 = tosa.add %459, %460 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> + %462 = tosa.rescale %461, %52, %230, %272, %51 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> + %463 = tosa.conv2d %462, %50, %49, %51, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %464 = tosa.rescale %463, %48, %47, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %465 = tosa.clamp %464 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %466 = tosa.reshape %46, %0 : (tensor<1x3x3x1152xi8>, !tosa.shape<4>) -> tensor<3x3x1152x1xi8> + %467 = tosa.depthwise_conv2d %465, %466, %45, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<3x3x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> + %468 = tosa.rescale %467, %44, %43, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> + %469 = tosa.clamp %468 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> + %470 = tosa.conv2d %469, %42, %41, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<320x1x1x1152xi8>, tensor<320xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x320xi32> + %471 = tosa.rescale %470, %39, %38, %272, %40 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x320xi32>, tensor<320xi32>, tensor<320xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x320xi8> + %472 = tosa.conv2d %471, %37, %36, %40, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x320xi8>, tensor<1280x1x1x320xi8>, tensor<1280xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1280xi32> + %473 = tosa.rescale %472, %35, %34, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1280xi32>, tensor<1280xi32>, tensor<1280xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1280xi8> + %474 = tosa.clamp %473 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1280xi8>) -> tensor<1x7x7x1280xi8> + %475 = tosa.avg_pool2d %474, %276, %276 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x7x7x1280xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1280xi8> + %476 = tosa.reshape %33, %31 : (tensor<1000x1280xi8>, !tosa.shape<4>) -> tensor<1000x1x1x1280xi8> + %477 = tosa.conv2d %475, %476, %32, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x1280xi8>, tensor<1000x1x1x1280xi8>, tensor<1000xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1000xi32> + %478 = tosa.rescale %477, %29, %28, %272, %30 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x1000xi8> + %479 = tosa.reshape %478, %27 : (tensor<1x1x1x1000xi8>, !tosa.shape<2>) -> tensor<1x1000xi8> + %480 = tosa.rescale %479, %277, %278, %30, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1000xi32> + %481 = tosa.reduce_max %480 {axis = 1 : i32} : (tensor<1x1000xi32>) -> tensor<1x1xi32> + %482 = tosa.sub %480, %481 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %483 = tosa.rescale %482, %277, %22, %272, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor<1x1000xi16> + %484 = tosa.table %483, %26 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> + %485 = tosa.table %483, %25 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> + %486 = tosa.table %483, %24 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> + %487 = tosa.table %483, %23 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> + %488 = tosa.logical_left_shift %484, %20 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %489 = tosa.logical_left_shift %485, %19 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %490 = tosa.logical_left_shift %486, %18 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %491 = tosa.arithmetic_right_shift %487, %17 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %492 = tosa.add %488, %489 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> + %493 = tosa.add %492, %490 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> + %494 = tosa.add %493, %491 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> + %495 = tosa.arithmetic_right_shift %494, %16 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %496 = tosa.reduce_sum %495 {axis = 1 : i32} : (tensor<1x1000xi32>) -> tensor<1x1xi32> + %497 = tosa.clz %496 : (tensor<1x1xi32>) -> tensor<1x1xi32> + %498 = tosa.sub %497, %18 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %499 = tosa.logical_left_shift %496, %498 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %500 = tosa.mul %499, %12, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %501 = tosa.add %500, %13 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %502 = tosa.mul %501, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %503 = tosa.sub %14, %502 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %504 = tosa.mul %501, %503, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %505 = tosa.mul %504, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %506 = tosa.add %501, %505 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %507 = tosa.mul %506, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %508 = tosa.sub %14, %507 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %509 = tosa.mul %506, %508, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %510 = tosa.mul %509, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %511 = tosa.add %506, %510 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %512 = tosa.mul %511, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %513 = tosa.sub %14, %512 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %514 = tosa.mul %511, %513, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %515 = tosa.mul %514, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> + %516 = tosa.add %511, %515 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %517 = tosa.mul %494, %516, %278 : (tensor<1x1000xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1000xi32> + %518 = tosa.sub %11, %497 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> + %519 = tosa.arithmetic_right_shift %517, %518 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> + %520 = tosa.rescale %519, %277, %278, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1000xi8> + %521 = tosa.rescale %520, %277, %278, %275, %275 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1000xi8> + %522 = tosa.rescale %521, %277, %278, %275, %276 {input_unsigned = false, output_unsigned = true, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1000xui8> + return %522 : tensor<1x1000xui8> + } +} diff --git a/tests/gold/test_python_api/har_int8.mlir b/tests/gold/test_python_api/har_int8.mlir new file mode 100644 index 0000000..e66ed22 --- /dev/null +++ b/tests/gold/test_python_api/har_int8.mlir @@ -0,0 +1,117 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "conv2d_input", outputs = "Identity"}} { + %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> + %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> + %12 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> + %17 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %18 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %20 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> + %21 = "tosa.const"() <{values = dense<1078364279> : tensor<1xi32>}> : () -> tensor<1xi32> + %22 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %23 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<6xi32>}> : () -> tensor<6xi32> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<6x128xi8>}> : () -> tensor<6x128xi8> + %26 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> + %27 = "tosa.const"() <{values = dense<1596441372> : tensor<1xi32>}> : () -> tensor<1xi32> + %28 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %29 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x128xi8>}> : () -> tensor<128x128xi8> + %32 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %33 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> + %34 = "tosa.const"() <{values = dense<1440829658> : tensor<1xi32>}> : () -> tensor<1xi32> + %35 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x5632xi8>}> : () -> tensor<128x5632xi8> + %39 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %40 = tosa.const_shape {values = dense<0> : tensor<4xindex>} : () -> !tosa.shape<4> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %43 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %44 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x2x2x1xi8>}> : () -> tensor<128x2x2x1xi8> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %47 = "tosa.const"() <{values = dense<-45> : tensor<1xi8>}> : () -> tensor<1xi8> + %48 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %49 = tosa.conv2d %arg0, %45, %46, %47, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x2x2x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %50 = tosa.rescale %49, %42, %41, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %51 = tosa.clamp %50 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %52 = tosa.slice %51, %40, %39 : (tensor, !tosa.shape<4>, !tosa.shape<4>) -> tensor + %53 = tosa.max_pool2d %52 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %54 = tosa.reshape %53, %36 : (tensor, !tosa.shape<4>) -> tensor + %55 = tosa.reshape %38, %35 : (tensor<128x5632xi8>, !tosa.shape<4>) -> tensor<128x1x1x5632xi8> + %56 = tosa.conv2d %54, %55, %37, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x5632xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %57 = tosa.rescale %56, %34, %33, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %58 = tosa.reshape %57, %32 : (tensor, !tosa.shape<2>) -> tensor + %59 = tosa.clamp %58 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %60 = tosa.reshape %59, %29 : (tensor, !tosa.shape<4>) -> tensor + %61 = tosa.reshape %31, %28 : (tensor<128x128xi8>, !tosa.shape<4>) -> tensor<128x1x1x128xi8> + %62 = tosa.conv2d %60, %61, %30, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x128xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %63 = tosa.rescale %62, %27, %26, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %64 = tosa.reshape %63, %32 : (tensor, !tosa.shape<2>) -> tensor + %65 = tosa.clamp %64 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor + %66 = tosa.reshape %65, %29 : (tensor, !tosa.shape<4>) -> tensor + %67 = tosa.reshape %25, %23 : (tensor<6x128xi8>, !tosa.shape<4>) -> tensor<6x1x1x128xi8> + %68 = tosa.conv2d %66, %67, %24, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<6x1x1x128xi8>, tensor<6xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %69 = tosa.rescale %68, %21, %20, %44, %22 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %70 = tosa.reshape %69, %19 : (tensor, !tosa.shape<2>) -> tensor + %71 = tosa.rescale %70, %18, %17, %22, %44 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %72 = tosa.reduce_max %71 {axis = 1 : i32} : (tensor) -> tensor + %73 = tosa.sub %71, %72 : (tensor, tensor) -> tensor + %74 = tosa.rescale %73, %18, %12, %44, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor + %75 = tosa.table %74, %16 : (tensor, tensor<513xi16>) -> tensor + %76 = tosa.table %74, %15 : (tensor, tensor<513xi16>) -> tensor + %77 = tosa.table %74, %14 : (tensor, tensor<513xi16>) -> tensor + %78 = tosa.table %74, %13 : (tensor, tensor<513xi16>) -> tensor + %79 = tosa.logical_left_shift %75, %10 : (tensor, tensor<1x1xi32>) -> tensor + %80 = tosa.logical_left_shift %76, %9 : (tensor, tensor<1x1xi32>) -> tensor + %81 = tosa.logical_left_shift %77, %8 : (tensor, tensor<1x1xi32>) -> tensor + %82 = tosa.arithmetic_right_shift %78, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %83 = tosa.add %79, %80 : (tensor, tensor) -> tensor + %84 = tosa.add %83, %81 : (tensor, tensor) -> tensor + %85 = tosa.add %84, %82 : (tensor, tensor) -> tensor + %86 = tosa.arithmetic_right_shift %85, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor + %87 = tosa.reduce_sum %86 {axis = 1 : i32} : (tensor) -> tensor + %88 = tosa.clz %87 : (tensor) -> tensor + %89 = tosa.sub %88, %8 : (tensor, tensor<1x1xi32>) -> tensor + %90 = tosa.logical_left_shift %87, %89 : (tensor, tensor) -> tensor + %91 = tosa.mul %90, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %92 = tosa.add %91, %3 : (tensor, tensor<1x1xi32>) -> tensor + %93 = tosa.mul %92, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %94 = tosa.sub %4, %93 : (tensor<1x1xi32>, tensor) -> tensor + %95 = tosa.mul %92, %94, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %96 = tosa.mul %95, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %97 = tosa.add %92, %96 : (tensor, tensor) -> tensor + %98 = tosa.mul %97, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %99 = tosa.sub %4, %98 : (tensor<1x1xi32>, tensor) -> tensor + %100 = tosa.mul %97, %99, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %101 = tosa.mul %100, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %102 = tosa.add %97, %101 : (tensor, tensor) -> tensor + %103 = tosa.mul %102, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %104 = tosa.sub %4, %103 : (tensor<1x1xi32>, tensor) -> tensor + %105 = tosa.mul %102, %104, %1 : (tensor, tensor, tensor<1xi8>) -> tensor + %106 = tosa.mul %105, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor + %107 = tosa.add %102, %106 : (tensor, tensor) -> tensor + %108 = tosa.mul %85, %107, %17 : (tensor, tensor, tensor<1xi8>) -> tensor + %109 = tosa.sub %0, %88 : (tensor<1x1xi32>, tensor) -> tensor + %110 = tosa.arithmetic_right_shift %108, %109 {round = true} : (tensor, tensor) -> tensor + %111 = tosa.rescale %110, %18, %17, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + return %111 : tensor + } +} diff --git a/tests/gold/test_python_api/kws_micronet_s.mlir b/tests/gold/test_python_api/kws_micronet_s.mlir new file mode 100644 index 0000000..f9cf330 --- /dev/null +++ b/tests/gold/test_python_api/kws_micronet_s.mlir @@ -0,0 +1,103 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x49x10x1xi8>) -> tensor<1x12xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %3 = "tosa.const"() <{values = dense<41> : tensor<12xi8>}> : () -> tensor<12xi8> + %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %5 = "tosa.const"() <{values = dense<-49> : tensor<1xi8>}> : () -> tensor<1xi8> + %6 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %7 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x196xi8>}> : () -> tensor<12x1x1x196xi8> + %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi8>}> : () -> tensor<196xi8> + %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi32>}> : () -> tensor<196xi32> + %10 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi32>}> : () -> tensor<196xi32> + %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196x1x1x84xi8>}> : () -> tensor<196x1x1x84xi8> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x84xi8>}> : () -> tensor<84x1x1x84xi8> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x84xi8>}> : () -> tensor<84x1x1x84xi8> + %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x112xi8>}> : () -> tensor<84x1x1x112xi8> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x112xi8>}> : () -> tensor<1x3x3x112xi8> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x84xi8>}> : () -> tensor<112x1x1x84xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> + %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %50 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %51 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x10x4x1xi8>}> : () -> tensor<84x10x4x1xi8> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> + %54 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> + %55 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %56 = tosa.conv2d %arg0, %52, %53, %54, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x49x10x1xi8>, tensor<84x10x4x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x49x10x84xi32> + %57 = tosa.rescale %56, %49, %48, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x49x10x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x49x10x84xi8> + %58 = tosa.clamp %57 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x49x10x84xi8>) -> tensor<1x49x10x84xi8> + %59 = tosa.reshape %47, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> + %60 = tosa.depthwise_conv2d %58, %59, %46, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x49x10x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %61 = tosa.rescale %60, %45, %44, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %62 = tosa.clamp %61 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %63 = tosa.conv2d %62, %43, %42, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<112x1x1x84xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x112xi32> + %64 = tosa.rescale %63, %41, %40, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x112xi8> + %65 = tosa.clamp %64 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x112xi8>) -> tensor<1x25x5x112xi8> + %66 = tosa.reshape %39, %0 : (tensor<1x3x3x112xi8>, !tosa.shape<4>) -> tensor<3x3x112x1xi8> + %67 = tosa.depthwise_conv2d %65, %66, %38, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x112xi8>, tensor<3x3x112x1xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x112xi32> + %68 = tosa.rescale %67, %37, %36, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x112xi8> + %69 = tosa.clamp %68 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x112xi8>) -> tensor<1x25x5x112xi8> + %70 = tosa.conv2d %69, %35, %34, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x112xi8>, tensor<84x1x1x112xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %71 = tosa.rescale %70, %33, %32, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %72 = tosa.clamp %71 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %73 = tosa.reshape %31, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> + %74 = tosa.depthwise_conv2d %72, %73, %30, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %75 = tosa.rescale %74, %29, %28, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %76 = tosa.clamp %75 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %77 = tosa.conv2d %76, %27, %26, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<84x1x1x84xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %78 = tosa.rescale %77, %25, %24, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %79 = tosa.clamp %78 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %80 = tosa.reshape %23, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> + %81 = tosa.depthwise_conv2d %79, %80, %22, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %82 = tosa.rescale %81, %21, %20, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %83 = tosa.clamp %82 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %84 = tosa.conv2d %83, %19, %18, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<84x1x1x84xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %85 = tosa.rescale %84, %17, %16, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %86 = tosa.clamp %85 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %87 = tosa.reshape %15, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> + %88 = tosa.depthwise_conv2d %86, %87, %14, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> + %89 = tosa.rescale %88, %13, %12, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> + %90 = tosa.clamp %89 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> + %91 = tosa.conv2d %90, %11, %10, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<196x1x1x84xi8>, tensor<196xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x196xi32> + %92 = tosa.rescale %91, %9, %8, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x196xi32>, tensor<196xi32>, tensor<196xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x196xi8> + %93 = tosa.clamp %92 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x196xi8>) -> tensor<1x25x5x196xi8> + %94 = tosa.avg_pool2d %93, %55, %55 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x25x5x196xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x196xi8> + %95 = tosa.conv2d %94, %7, %6, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x196xi8>, tensor<12x1x1x196xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x12xi32> + %96 = tosa.rescale %95, %4, %3, %51, %5 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x12xi8> + %97 = tosa.reshape %96, %2 : (tensor<1x1x1x12xi8>, !tosa.shape<2>) -> tensor<1x12xi8> + return %97 : tensor<1x12xi8> + } +} diff --git a/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir b/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir new file mode 100644 index 0000000..4db4c11 --- /dev/null +++ b/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir @@ -0,0 +1,427 @@ +module attributes {tfl.description = "TOCO Converted.", tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x224x224x3xui8>) -> tensor<1x1001xui8> attributes {tf.entry_function = {inputs = "input", outputs = "output"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %8 = "tosa.const"() <{values = dense<42> : tensor<1xi8>}> : () -> tensor<1xi8> + %9 = "tosa.const"() <{values = dense<1769517290> : tensor<1xi32>}> : () -> tensor<1xi32> + %10 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> + %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1001xi32>}> : () -> tensor<1001xi32> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1001x1x1x1280xi8>}> : () -> tensor<1001x1x1x1280xi8> + %13 = "tosa.const"() <{values = dense<1764866200> : tensor<1xi32>}> : () -> tensor<1xi32> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280x1x1x320xi8>}> : () -> tensor<1280x1x1x320xi8> + %16 = "tosa.const"() <{values = dense<1771764546> : tensor<1xi32>}> : () -> tensor<1xi32> + %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320x1x1x960xi8>}> : () -> tensor<320x1x1x960xi8> + %19 = "tosa.const"() <{values = dense<1413581440> : tensor<1xi32>}> : () -> tensor<1xi32> + %20 = "tosa.const"() <{values = dense<73> : tensor<1xi8>}> : () -> tensor<1xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> + %23 = "tosa.const"() <{values = dense<1255718954> : tensor<1xi32>}> : () -> tensor<1xi32> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> + %26 = "tosa.const"() <{values = dense<1733986385> : tensor<1xi32>}> : () -> tensor<1xi32> + %27 = "tosa.const"() <{values = dense<1908224859> : tensor<1xi32>}> : () -> tensor<1xi32> + %28 = "tosa.const"() <{values = dense<38> : tensor<1xi8>}> : () -> tensor<1xi8> + %29 = "tosa.const"() <{values = dense<1409905126> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x960xi8>}> : () -> tensor<160x1x1x960xi8> + %32 = "tosa.const"() <{values = dense<1471261696> : tensor<1xi32>}> : () -> tensor<1xi32> + %33 = "tosa.const"() <{values = dense<-26> : tensor<1xi8>}> : () -> tensor<1xi8> + %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> + %36 = "tosa.const"() <{values = dense<1403672173> : tensor<1xi32>}> : () -> tensor<1xi32> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> + %39 = "tosa.const"() <{values = dense<1886271458> : tensor<1xi32>}> : () -> tensor<1xi32> + %40 = "tosa.const"() <{values = dense<1629649814> : tensor<1xi32>}> : () -> tensor<1xi32> + %41 = "tosa.const"() <{values = dense<2034086883> : tensor<1xi32>}> : () -> tensor<1xi32> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x960xi8>}> : () -> tensor<160x1x1x960xi8> + %44 = "tosa.const"() <{values = dense<1431685120> : tensor<1xi32>}> : () -> tensor<1xi32> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> + %47 = "tosa.const"() <{values = dense<1563714083> : tensor<1xi32>}> : () -> tensor<1xi32> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> + %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> + %50 = "tosa.const"() <{values = dense<1846357403> : tensor<1xi32>}> : () -> tensor<1xi32> + %51 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x576xi8>}> : () -> tensor<160x1x1x576xi8> + %54 = "tosa.const"() <{values = dense<2097034112> : tensor<1xi32>}> : () -> tensor<1xi32> + %55 = "tosa.const"() <{values = dense<-36> : tensor<1xi8>}> : () -> tensor<1xi8> + %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> + %58 = "tosa.const"() <{values = dense<1885290042> : tensor<1xi32>}> : () -> tensor<1xi32> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> + %61 = "tosa.const"() <{values = dense<1713159654> : tensor<1xi32>}> : () -> tensor<1xi32> + %62 = "tosa.const"() <{values = dense<2031709950> : tensor<1xi32>}> : () -> tensor<1xi32> + %63 = "tosa.const"() <{values = dense<1666054802> : tensor<1xi32>}> : () -> tensor<1xi32> + %64 = "tosa.const"() <{values = dense<26> : tensor<1xi8>}> : () -> tensor<1xi8> + %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x576xi8>}> : () -> tensor<96x1x1x576xi8> + %67 = "tosa.const"() <{values = dense<1279693056> : tensor<1xi32>}> : () -> tensor<1xi32> + %68 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> + %71 = "tosa.const"() <{values = dense<1878841398> : tensor<1xi32>}> : () -> tensor<1xi32> + %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> + %74 = "tosa.const"() <{values = dense<2079856357> : tensor<1xi32>}> : () -> tensor<1xi32> + %75 = "tosa.const"() <{values = dense<1552338772> : tensor<1xi32>}> : () -> tensor<1xi32> + %76 = "tosa.const"() <{values = dense<1758291557> : tensor<1xi32>}> : () -> tensor<1xi32> + %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x576xi8>}> : () -> tensor<96x1x1x576xi8> + %79 = "tosa.const"() <{values = dense<1216473984> : tensor<1xi32>}> : () -> tensor<1xi32> + %80 = "tosa.const"() <{values = dense<-62> : tensor<1xi8>}> : () -> tensor<1xi8> + %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> + %83 = "tosa.const"() <{values = dense<1625450438> : tensor<1xi32>}> : () -> tensor<1xi32> + %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> + %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> + %86 = "tosa.const"() <{values = dense<1127574829> : tensor<1xi32>}> : () -> tensor<1xi32> + %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x384xi8>}> : () -> tensor<96x1x1x384xi8> + %89 = "tosa.const"() <{values = dense<2137714944> : tensor<1xi32>}> : () -> tensor<1xi32> + %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> + %92 = "tosa.const"() <{values = dense<2095071944> : tensor<1xi32>}> : () -> tensor<1xi32> + %93 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> + %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %95 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> + %96 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> + %97 = "tosa.const"() <{values = dense<1946727039> : tensor<1xi32>}> : () -> tensor<1xi32> + %98 = "tosa.const"() <{values = dense<1680680778> : tensor<1xi32>}> : () -> tensor<1xi32> + %99 = "tosa.const"() <{values = dense<1619097955> : tensor<1xi32>}> : () -> tensor<1xi32> + %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> + %102 = "tosa.const"() <{values = dense<1401151616> : tensor<1xi32>}> : () -> tensor<1xi32> + %103 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> + %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> + %106 = "tosa.const"() <{values = dense<1601894870> : tensor<1xi32>}> : () -> tensor<1xi32> + %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> + %109 = "tosa.const"() <{values = dense<2033798859> : tensor<1xi32>}> : () -> tensor<1xi32> + %110 = "tosa.const"() <{values = dense<1671053707> : tensor<1xi32>}> : () -> tensor<1xi32> + %111 = "tosa.const"() <{values = dense<1133754932> : tensor<1xi32>}> : () -> tensor<1xi32> + %112 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> + %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> + %115 = "tosa.const"() <{values = dense<1800720000> : tensor<1xi32>}> : () -> tensor<1xi32> + %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %117 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> + %118 = "tosa.const"() <{values = dense<1624188629> : tensor<1xi32>}> : () -> tensor<1xi32> + %119 = "tosa.const"() <{values = dense<6> : tensor<1xi8>}> : () -> tensor<1xi8> + %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> + %122 = "tosa.const"() <{values = dense<2105410924> : tensor<1xi32>}> : () -> tensor<1xi32> + %123 = "tosa.const"() <{values = dense<1999568813> : tensor<1xi32>}> : () -> tensor<1xi32> + %124 = "tosa.const"() <{values = dense<1257485775> : tensor<1xi32>}> : () -> tensor<1xi32> + %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %126 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> + %127 = "tosa.const"() <{values = dense<2093439744> : tensor<1xi32>}> : () -> tensor<1xi32> + %128 = "tosa.const"() <{values = dense<-18> : tensor<1xi8>}> : () -> tensor<1xi8> + %129 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> + %131 = "tosa.const"() <{values = dense<1682901674> : tensor<1xi32>}> : () -> tensor<1xi32> + %132 = "tosa.const"() <{values = dense<-3> : tensor<1xi8>}> : () -> tensor<1xi8> + %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> + %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> + %135 = "tosa.const"() <{values = dense<2037336008> : tensor<1xi32>}> : () -> tensor<1xi32> + %136 = "tosa.const"() <{values = dense<-2> : tensor<1xi8>}> : () -> tensor<1xi8> + %137 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> + %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x192xi8>}> : () -> tensor<64x1x1x192xi8> + %140 = "tosa.const"() <{values = dense<1386468480> : tensor<1xi32>}> : () -> tensor<1xi32> + %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> + %143 = "tosa.const"() <{values = dense<1857304257> : tensor<1xi32>}> : () -> tensor<1xi32> + %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> + %146 = "tosa.const"() <{values = dense<1681202601> : tensor<1xi32>}> : () -> tensor<1xi32> + %147 = "tosa.const"() <{values = dense<2131432016> : tensor<1xi32>}> : () -> tensor<1xi32> + %148 = "tosa.const"() <{values = dense<1836050801> : tensor<1xi32>}> : () -> tensor<1xi32> + %149 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> + %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x192xi8>}> : () -> tensor<32x1x1x192xi8> + %152 = "tosa.const"() <{values = dense<1358890624> : tensor<1xi32>}> : () -> tensor<1xi32> + %153 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> + %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> + %156 = "tosa.const"() <{values = dense<2070508920> : tensor<1xi32>}> : () -> tensor<1xi32> + %157 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> + %158 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %159 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> + %160 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> + %161 = "tosa.const"() <{values = dense<1884945131> : tensor<1xi32>}> : () -> tensor<1xi32> + %162 = "tosa.const"() <{values = dense<2057234100> : tensor<1xi32>}> : () -> tensor<1xi32> + %163 = "tosa.const"() <{values = dense<1081754833> : tensor<1xi32>}> : () -> tensor<1xi32> + %164 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> + %165 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> + %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x192xi8>}> : () -> tensor<32x1x1x192xi8> + %168 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> + %169 = "tosa.const"() <{values = dense<1120997760> : tensor<1xi32>}> : () -> tensor<1xi32> + %170 = "tosa.const"() <{values = dense<-10> : tensor<1xi8>}> : () -> tensor<1xi8> + %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %172 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> + %173 = "tosa.const"() <{values = dense<1227338673> : tensor<1xi32>}> : () -> tensor<1xi32> + %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> + %176 = "tosa.const"() <{values = dense<1995624654> : tensor<1xi32>}> : () -> tensor<1xi32> + %177 = "tosa.const"() <{values = dense<-17> : tensor<1xi8>}> : () -> tensor<1xi8> + %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x144xi8>}> : () -> tensor<32x1x1x144xi8> + %180 = "tosa.const"() <{values = dense<1182172288> : tensor<1xi32>}> : () -> tensor<1xi32> + %181 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> + %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> + %184 = "tosa.const"() <{values = dense<1892639773> : tensor<1xi32>}> : () -> tensor<1xi32> + %185 = "tosa.const"() <{values = dense<-24> : tensor<1xi8>}> : () -> tensor<1xi8> + %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> + %188 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> + %189 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> + %190 = "tosa.const"() <{values = dense<1995052007> : tensor<1xi32>}> : () -> tensor<1xi32> + %191 = "tosa.const"() <{values = dense<1475367762> : tensor<1xi32>}> : () -> tensor<1xi32> + %192 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> + %193 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> + %194 = "tosa.const"() <{values = dense<1766066391> : tensor<1xi32>}> : () -> tensor<1xi32> + %195 = "tosa.const"() <{values = dense<8> : tensor<1xi8>}> : () -> tensor<1xi8> + %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x144xi8>}> : () -> tensor<24x1x1x144xi8> + %198 = "tosa.const"() <{values = dense<1458735232> : tensor<1xi32>}> : () -> tensor<1xi32> + %199 = "tosa.const"() <{values = dense<-76> : tensor<1xi8>}> : () -> tensor<1xi8> + %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> + %202 = "tosa.const"() <{values = dense<35> : tensor<1xi8>}> : () -> tensor<1xi8> + %203 = "tosa.const"() <{values = dense<1472565610> : tensor<1xi32>}> : () -> tensor<1xi32> + %204 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> + %205 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> + %207 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> + %208 = "tosa.const"() <{values = dense<2113598676> : tensor<1xi32>}> : () -> tensor<1xi32> + %209 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> + %210 = "tosa.const"() <{values = dense<28> : tensor<1xi8>}> : () -> tensor<1xi8> + %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> + %213 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> + %214 = "tosa.const"() <{values = dense<1440987008> : tensor<1xi32>}> : () -> tensor<1xi32> + %215 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> + %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %218 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> + %219 = "tosa.const"() <{values = dense<1262668951> : tensor<1xi32>}> : () -> tensor<1xi32> + %220 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> + %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> + %223 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> + %224 = "tosa.const"() <{values = dense<1363945730> : tensor<1xi32>}> : () -> tensor<1xi32> + %225 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> + %226 = "tosa.const"() <{values = dense<12> : tensor<1xi8>}> : () -> tensor<1xi8> + %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x32xi8>}> : () -> tensor<16x1x1x32xi8> + %229 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %230 = "tosa.const"() <{values = dense<1476161024> : tensor<1xi32>}> : () -> tensor<1xi32> + %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %232 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x32xi8>}> : () -> tensor<1x3x3x32xi8> + %233 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> + %234 = "tosa.const"() <{values = dense<1550200454> : tensor<1xi32>}> : () -> tensor<1xi32> + %235 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %236 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> + %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %238 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x3xi8>}> : () -> tensor<32x3x3x3xi8> + %239 = "tosa.const"() <{values = dense<-70> : tensor<1xi8>}> : () -> tensor<1xi8> + %240 = "tosa.const"() <{values = dense<58> : tensor<1xi8>}> : () -> tensor<1xi8> + %241 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %242 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %243 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %244 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %245 = tosa.rescale %arg0, %241, %242, %243, %244 {input_unsigned = true, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x224x224x3xui8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> + %246 = tosa.conv2d %245, %238, %237, %244, %236 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x224x224x3xi8>, tensor<32x3x3x3xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> + %247 = tosa.rescale %246, %234, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> + %248 = tosa.reshape %232, %6 : (tensor<1x3x3x32xi8>, !tosa.shape<4>) -> tensor<3x3x32x1xi8> + %249 = tosa.depthwise_conv2d %247, %248, %231, %243, %233 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<3x3x32x1xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> + %250 = tosa.rescale %249, %230, %229, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> + %251 = tosa.conv2d %250, %228, %227, %243, %226 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<16x1x1x32xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x16xi32> + %252 = tosa.rescale %251, %224, %223, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x16xi8> + %253 = tosa.conv2d %252, %222, %221, %225, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x96xi32> + %254 = tosa.rescale %253, %219, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x96xi8> + %255 = tosa.reshape %217, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %256 = tosa.depthwise_conv2d %254, %255, %216, %243, %215 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x96xi32> + %257 = tosa.rescale %256, %214, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x96xi8> + %258 = tosa.conv2d %257, %212, %211, %243, %210 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> + %259 = tosa.rescale %258, %208, %207, %235, %209 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %260 = tosa.conv2d %259, %206, %205, %209, %204 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %261 = tosa.rescale %260, %203, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %262 = tosa.reshape %201, %4 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> + %263 = tosa.depthwise_conv2d %261, %262, %200, %243, %199 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %264 = tosa.rescale %263, %198, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %265 = tosa.conv2d %264, %197, %196, %243, %236 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<24x1x1x144xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> + %266 = tosa.rescale %265, %194, %207, %235, %195 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %267 = tosa.rescale %266, %241, %193, %195, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %268 = tosa.rescale %259, %241, %192, %209, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %269 = tosa.rescale %268, %191, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x56x56x24xi32> + %270 = tosa.add %267, %269 : (tensor<1x56x56x24xi32>, tensor<1x56x56x24xi32>) -> tensor<1x56x56x24xi32> + %271 = tosa.rescale %270, %190, %189, %235, %188 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> + %272 = tosa.conv2d %271, %187, %186, %188, %185 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> + %273 = tosa.rescale %272, %184, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> + %274 = tosa.reshape %183, %4 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> + %275 = tosa.depthwise_conv2d %273, %274, %182, %243, %181 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x144xi32> + %276 = tosa.rescale %275, %180, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x144xi8> + %277 = tosa.conv2d %276, %179, %178, %243, %177 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x144xi8>, tensor<32x1x1x144xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> + %278 = tosa.rescale %277, %176, %207, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> + %279 = tosa.conv2d %278, %175, %174, %220, %244 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> + %280 = tosa.rescale %279, %173, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> + %281 = tosa.reshape %172, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> + %282 = tosa.depthwise_conv2d %280, %281, %171, %243, %170 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> + %283 = tosa.rescale %282, %169, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> + %284 = tosa.conv2d %283, %167, %166, %243, %165 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<32x1x1x192xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> + %285 = tosa.rescale %284, %163, %223, %235, %164 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> + %286 = tosa.rescale %285, %241, %193, %164, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %287 = tosa.rescale %278, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %288 = tosa.rescale %287, %162, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %289 = tosa.add %286, %288 : (tensor<1x28x28x32xi32>, tensor<1x28x28x32xi32>) -> tensor<1x28x28x32xi32> + %290 = tosa.rescale %289, %161, %189, %235, %160 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> + %291 = tosa.conv2d %290, %159, %158, %160, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> + %292 = tosa.rescale %291, %156, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> + %293 = tosa.reshape %155, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> + %294 = tosa.depthwise_conv2d %292, %293, %154, %243, %153 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> + %295 = tosa.rescale %294, %152, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> + %296 = tosa.conv2d %295, %151, %150, %243, %244 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<32x1x1x192xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> + %297 = tosa.rescale %296, %148, %207, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> + %298 = tosa.rescale %297, %241, %192, %149, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %299 = tosa.rescale %298, %147, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %300 = tosa.rescale %290, %241, %193, %160, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> + %301 = tosa.add %299, %300 : (tensor<1x28x28x32xi32>, tensor<1x28x28x32xi32>) -> tensor<1x28x28x32xi32> + %302 = tosa.rescale %301, %146, %189, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> + %303 = tosa.conv2d %302, %145, %144, %149, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> + %304 = tosa.rescale %303, %143, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> + %305 = tosa.reshape %142, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> + %306 = tosa.depthwise_conv2d %304, %305, %141, %243, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x192xi32> + %307 = tosa.rescale %306, %140, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x192xi8> + %308 = tosa.conv2d %307, %139, %138, %243, %137 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x192xi8>, tensor<64x1x1x192xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> + %309 = tosa.rescale %308, %135, %207, %235, %136 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %310 = tosa.conv2d %309, %134, %133, %136, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %311 = tosa.rescale %310, %131, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %312 = tosa.reshape %130, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> + %313 = tosa.depthwise_conv2d %311, %312, %129, %243, %128 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %314 = tosa.rescale %313, %127, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %315 = tosa.conv2d %314, %126, %125, %243, %149 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> + %316 = tosa.rescale %315, %124, %223, %235, %215 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %317 = tosa.rescale %316, %241, %192, %215, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %318 = tosa.rescale %317, %123, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %319 = tosa.rescale %309, %241, %193, %136, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %320 = tosa.add %318, %319 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> + %321 = tosa.rescale %320, %122, %189, %235, %236 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %322 = tosa.conv2d %321, %121, %120, %236, %119 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %323 = tosa.rescale %322, %118, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %324 = tosa.reshape %117, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> + %325 = tosa.depthwise_conv2d %323, %324, %116, %243, %188 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %326 = tosa.rescale %325, %115, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %327 = tosa.conv2d %326, %114, %113, %243, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> + %328 = tosa.rescale %327, %111, %223, %235, %112 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %329 = tosa.rescale %328, %241, %192, %112, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %330 = tosa.rescale %329, %110, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %331 = tosa.rescale %321, %241, %193, %236, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %332 = tosa.add %330, %331 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> + %333 = tosa.rescale %332, %109, %189, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %334 = tosa.conv2d %333, %108, %107, %149, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %335 = tosa.rescale %334, %106, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %336 = tosa.reshape %105, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> + %337 = tosa.depthwise_conv2d %335, %336, %104, %243, %103 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %338 = tosa.rescale %337, %102, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %339 = tosa.conv2d %338, %101, %100, %243, %204 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> + %340 = tosa.rescale %339, %99, %223, %235, %236 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %341 = tosa.rescale %340, %241, %192, %236, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %342 = tosa.rescale %341, %98, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %343 = tosa.rescale %333, %241, %193, %149, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> + %344 = tosa.add %342, %343 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> + %345 = tosa.rescale %344, %97, %189, %235, %96 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> + %346 = tosa.conv2d %345, %95, %94, %96, %93 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %347 = tosa.rescale %346, %92, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %348 = tosa.reshape %91, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> + %349 = tosa.depthwise_conv2d %347, %348, %90, %243, %181 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> + %350 = tosa.rescale %349, %89, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> + %351 = tosa.conv2d %350, %88, %87, %243, %225 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<96x1x1x384xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> + %352 = tosa.rescale %351, %86, %207, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> + %353 = tosa.conv2d %352, %85, %84, %225, %119 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> + %354 = tosa.rescale %353, %83, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> + %355 = tosa.reshape %82, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> + %356 = tosa.depthwise_conv2d %354, %355, %81, %243, %80 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> + %357 = tosa.rescale %356, %79, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> + %358 = tosa.conv2d %357, %78, %77, %243, %195 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<96x1x1x576xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> + %359 = tosa.rescale %358, %76, %207, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> + %360 = tosa.rescale %359, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %361 = tosa.rescale %360, %75, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %362 = tosa.rescale %352, %241, %193, %225, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %363 = tosa.add %361, %362 : (tensor<1x14x14x96xi32>, tensor<1x14x14x96xi32>) -> tensor<1x14x14x96xi32> + %364 = tosa.rescale %363, %74, %189, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> + %365 = tosa.conv2d %364, %73, %72, %220, %192 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> + %366 = tosa.rescale %365, %71, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> + %367 = tosa.reshape %70, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> + %368 = tosa.depthwise_conv2d %366, %367, %69, %243, %68 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> + %369 = tosa.rescale %368, %67, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> + %370 = tosa.conv2d %369, %66, %65, %243, %64 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<96x1x1x576xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> + %371 = tosa.rescale %370, %63, %223, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> + %372 = tosa.rescale %371, %241, %193, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %373 = tosa.rescale %364, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %374 = tosa.rescale %373, %62, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x96xi32> + %375 = tosa.add %372, %374 : (tensor<1x14x14x96xi32>, tensor<1x14x14x96xi32>) -> tensor<1x14x14x96xi32> + %376 = tosa.rescale %375, %61, %189, %235, %136 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> + %377 = tosa.conv2d %376, %60, %59, %136, %112 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> + %378 = tosa.rescale %377, %58, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> + %379 = tosa.reshape %57, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> + %380 = tosa.depthwise_conv2d %378, %379, %56, %243, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x576xi32> + %381 = tosa.rescale %380, %54, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x576xi8> + %382 = tosa.conv2d %381, %53, %52, %243, %226 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x576xi8>, tensor<160x1x1x576xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> + %383 = tosa.rescale %382, %50, %207, %235, %51 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> + %384 = tosa.conv2d %383, %49, %48, %51, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %385 = tosa.rescale %384, %47, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %386 = tosa.reshape %46, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> + %387 = tosa.depthwise_conv2d %385, %386, %45, %243, %137 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %388 = tosa.rescale %387, %44, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %389 = tosa.conv2d %388, %43, %42, %243, %193 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<160x1x1x960xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> + %390 = tosa.rescale %389, %41, %207, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> + %391 = tosa.rescale %390, %241, %192, %225, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %392 = tosa.rescale %391, %40, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %393 = tosa.rescale %383, %241, %193, %51, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %394 = tosa.add %392, %393 : (tensor<1x7x7x160xi32>, tensor<1x7x7x160xi32>) -> tensor<1x7x7x160xi32> + %395 = tosa.rescale %394, %39, %189, %235, %119 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> + %396 = tosa.conv2d %395, %38, %37, %119, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %397 = tosa.rescale %396, %36, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %398 = tosa.reshape %35, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> + %399 = tosa.depthwise_conv2d %397, %398, %34, %243, %33 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %400 = tosa.rescale %399, %32, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %401 = tosa.conv2d %400, %31, %30, %243, %93 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<160x1x1x960xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> + %402 = tosa.rescale %401, %29, %28, %235, %188 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> + %403 = tosa.rescale %402, %241, %193, %188, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %404 = tosa.rescale %395, %241, %192, %119, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %405 = tosa.rescale %404, %27, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x160xi32> + %406 = tosa.add %403, %405 : (tensor<1x7x7x160xi32>, tensor<1x7x7x160xi32>) -> tensor<1x7x7x160xi32> + %407 = tosa.rescale %406, %26, %189, %235, %93 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> + %408 = tosa.conv2d %407, %25, %24, %93, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %409 = tosa.rescale %408, %23, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %410 = tosa.reshape %22, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> + %411 = tosa.depthwise_conv2d %409, %410, %21, %243, %20 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> + %412 = tosa.rescale %411, %19, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> + %413 = tosa.conv2d %412, %18, %17, %243, %177 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<320x1x1x960xi8>, tensor<320xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x320xi32> + %414 = tosa.rescale %413, %16, %207, %235, %160 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x320xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x320xi8> + %415 = tosa.conv2d %414, %15, %14, %160, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x320xi8>, tensor<1280x1x1x320xi8>, tensor<1280xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1280xi32> + %416 = tosa.rescale %415, %13, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1280xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1280xi8> + %417 = tosa.avg_pool2d %416, %244, %244 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x7x7x1280xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1280xi8> + %418 = tosa.conv2d %417, %12, %11, %243, %10 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x1280xi8>, tensor<1001x1x1x1280xi8>, tensor<1001xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1001xi32> + %419 = tosa.rescale %418, %9, %8, %235, %239 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x1001xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x1001xi8> + %420 = tosa.reshape %419, %7 : (tensor<1x1x1x1001xi8>, !tosa.shape<2>) -> tensor<1x1001xi8> + %421 = tosa.rescale %420, %241, %242, %239, %240 {input_unsigned = false, output_unsigned = true, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1001xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1001xui8> + return %421 : tensor<1x1001xui8> + } +} diff --git a/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir b/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir new file mode 100644 index 0000000..e230308 --- /dev/null +++ b/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir @@ -0,0 +1,993 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.15.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x320x320x3xi8>) -> (tensor<1x2034x91xi8>, tensor<1x2034x4xi8>) attributes {tf.entry_function = {inputs = "normalized_input_image_tensor", outputs = "raw_outputs/class_predictions,raw_outputs/box_encodings"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %11 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %12 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %14 = "tosa.const"() <{values = dense<1862935214> : tensor<1xi32>}> : () -> tensor<1xi32> + %15 = "tosa.const"() <{values = dense<1553028373> : tensor<1xi32>}> : () -> tensor<1xi32> + %16 = "tosa.const"() <{values = dense<1582603170> : tensor<1xi32>}> : () -> tensor<1xi32> + %17 = "tosa.const"() <{values = dense<1187055602> : tensor<1xi32>}> : () -> tensor<1xi32> + %18 = "tosa.const"() <{values = dense<1118715085> : tensor<1xi32>}> : () -> tensor<1xi32> + %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x128xi8>}> : () -> tensor<546x1x1x128xi8> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> + %28 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %29 = "tosa.const"() <{values = dense<1835346993> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = "tosa.const"() <{values = dense<1415988625> : tensor<1xi32>}> : () -> tensor<1xi32> + %31 = "tosa.const"() <{values = dense<1183143852> : tensor<1xi32>}> : () -> tensor<1xi32> + %32 = "tosa.const"() <{values = dense<1124158657> : tensor<1xi32>}> : () -> tensor<1xi32> + %33 = "tosa.const"() <{values = dense<1214666873> : tensor<1xi32>}> : () -> tensor<1xi32> + %34 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %37 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x128xi8>}> : () -> tensor<24x1x1x128xi8> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x64xi8>}> : () -> tensor<128x1x1x64xi8> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x256xi8>}> : () -> tensor<64x1x1x256xi8> + %56 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> + %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x256xi8>}> : () -> tensor<546x1x1x256xi8> + %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> + %65 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x256xi8>}> : () -> tensor<24x1x1x256xi8> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> + %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x128xi8>}> : () -> tensor<256x1x1x128xi8> + %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %80 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> + %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x256xi8>}> : () -> tensor<128x1x1x256xi8> + %86 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> + %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x256xi8>}> : () -> tensor<546x1x1x256xi8> + %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> + %95 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %98 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> + %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x256xi8>}> : () -> tensor<24x1x1x256xi8> + %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> + %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x128xi8>}> : () -> tensor<256x1x1x128xi8> + %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %112 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> + %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x512xi8>}> : () -> tensor<128x1x1x512xi8> + %117 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> + %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x512xi8>}> : () -> tensor<546x1x1x512xi8> + %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> + %123 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %124 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x512xi8>}> : () -> tensor<1x3x3x512xi8> + %126 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %128 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %129 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> + %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x512xi8>}> : () -> tensor<24x1x1x512xi8> + %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> + %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x512xi8>}> : () -> tensor<1x3x3x512xi8> + %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> + %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x1x1x256xi8>}> : () -> tensor<512x1x1x256xi8> + %140 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> + %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x288xi8>}> : () -> tensor<256x1x1x288xi8> + %148 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> + %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %151 = "tosa.const"() <{values = dense<127> : tensor<1xi8>}> : () -> tensor<1xi8> + %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> + %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x288xi8>}> : () -> tensor<546x1x1x288xi8> + %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %156 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %157 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> + %158 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %159 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %161 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> + %162 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x288xi8>}> : () -> tensor<24x1x1x288xi8> + %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %166 = "tosa.const"() <{values = dense<-114> : tensor<1xi8>}> : () -> tensor<1xi8> + %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> + %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %172 = "tosa.const"() <{values = dense<8> : tensor<1xi8>}> : () -> tensor<1xi8> + %173 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> + %175 = "tosa.const"() <{values = dense<1810088313> : tensor<1xi32>}> : () -> tensor<1xi32> + %176 = "tosa.const"() <{values = dense<1864644382> : tensor<1xi32>}> : () -> tensor<1xi32> + %177 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> + %181 = "tosa.const"() <{values = dense<-65> : tensor<1xi8>}> : () -> tensor<1xi8> + %182 = "tosa.const"() <{values = dense<1488594688> : tensor<1xi32>}> : () -> tensor<1xi32> + %183 = "tosa.const"() <{values = dense<1103803029> : tensor<1xi32>}> : () -> tensor<1xi32> + %184 = "tosa.const"() <{values = dense<2122310385> : tensor<1xi32>}> : () -> tensor<1xi32> + %185 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %188 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> + %189 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> + %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %196 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> + %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> + %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %202 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %203 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> + %204 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> + %205 = "tosa.const"() <{values = dense<1098964878> : tensor<1xi32>}> : () -> tensor<1xi32> + %206 = "tosa.const"() <{values = dense<1099808716> : tensor<1xi32>}> : () -> tensor<1xi32> + %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %208 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %209 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> + %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> + %212 = "tosa.const"() <{values = dense<-59> : tensor<1xi8>}> : () -> tensor<1xi8> + %213 = "tosa.const"() <{values = dense<1586981248> : tensor<1xi32>}> : () -> tensor<1xi32> + %214 = "tosa.const"() <{values = dense<1082196352> : tensor<1xi32>}> : () -> tensor<1xi32> + %215 = "tosa.const"() <{values = dense<1123040526> : tensor<1xi32>}> : () -> tensor<1xi32> + %216 = "tosa.const"() <{values = dense<2049187341> : tensor<1xi32>}> : () -> tensor<1xi32> + %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %218 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> + %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> + %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %228 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> + %229 = "tosa.const"() <{values = dense<-115> : tensor<1xi8>}> : () -> tensor<1xi8> + %230 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> + %232 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %233 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %234 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %235 = "tosa.const"() <{values = dense<-20> : tensor<1xi8>}> : () -> tensor<1xi8> + %236 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> + %238 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %239 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %240 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %241 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> + %242 = "tosa.const"() <{values = dense<35> : tensor<1xi8>}> : () -> tensor<1xi8> + %243 = "tosa.const"() <{values = dense<1692615168> : tensor<1xi32>}> : () -> tensor<1xi32> + %244 = "tosa.const"() <{values = dense<1150102447> : tensor<1xi32>}> : () -> tensor<1xi32> + %245 = "tosa.const"() <{values = dense<2053785080> : tensor<1xi32>}> : () -> tensor<1xi32> + %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> + %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> + %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %257 = "tosa.const"() <{values = dense<-44> : tensor<1xi8>}> : () -> tensor<1xi8> + %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> + %260 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> + %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi8>}> : () -> tensor<273xi8> + %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi32>}> : () -> tensor<273xi32> + %263 = "tosa.const"() <{values = dense<112> : tensor<1xi8>}> : () -> tensor<1xi8> + %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi32>}> : () -> tensor<273xi32> + %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273x1x1x288xi8>}> : () -> tensor<273x1x1x288xi8> + %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> + %270 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi8>}> : () -> tensor<12xi8> + %272 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %273 = "tosa.const"() <{values = dense<66> : tensor<1xi8>}> : () -> tensor<1xi8> + %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %275 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x288xi8>}> : () -> tensor<12x1x1x288xi8> + %276 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %277 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %278 = "tosa.const"() <{values = dense<-117> : tensor<1xi8>}> : () -> tensor<1xi8> + %279 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %280 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> + %281 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %282 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %283 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %284 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %285 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> + %286 = "tosa.const"() <{values = dense<-2> : tensor<1xi8>}> : () -> tensor<1xi8> + %287 = "tosa.const"() <{values = dense<2067857906> : tensor<1xi32>}> : () -> tensor<1xi32> + %288 = "tosa.const"() <{values = dense<1609205327> : tensor<1xi32>}> : () -> tensor<1xi32> + %289 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %290 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %291 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %292 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x144xi8>}> : () -> tensor<48x1x1x144xi8> + %293 = "tosa.const"() <{values = dense<1830516352> : tensor<1xi32>}> : () -> tensor<1xi32> + %294 = "tosa.const"() <{values = dense<1104217449> : tensor<1xi32>}> : () -> tensor<1xi32> + %295 = "tosa.const"() <{values = dense<2141783380> : tensor<1xi32>}> : () -> tensor<1xi32> + %296 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %297 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %298 = "tosa.const"() <{values = dense<6> : tensor<1xi8>}> : () -> tensor<1xi8> + %299 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %300 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x40xi8>}> : () -> tensor<144x1x1x40xi8> + %301 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %302 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %303 = "tosa.const"() <{values = dense<-124> : tensor<1xi8>}> : () -> tensor<1xi8> + %304 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %305 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x144xi8>}> : () -> tensor<40x1x1x144xi8> + %306 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %307 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %308 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %309 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %310 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x144xi8>}> : () -> tensor<1x5x5x144xi8> + %311 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %312 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> + %313 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %314 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> + %315 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x48xi8>}> : () -> tensor<144x1x1x48xi8> + %316 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %317 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %318 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> + %319 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %320 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x120xi8>}> : () -> tensor<48x1x1x120xi8> + %321 = "tosa.const"() <{values = dense<1602825600> : tensor<1xi32>}> : () -> tensor<1xi32> + %322 = "tosa.const"() <{values = dense<1103366361> : tensor<1xi32>}> : () -> tensor<1xi32> + %323 = "tosa.const"() <{values = dense<2137556526> : tensor<1xi32>}> : () -> tensor<1xi32> + %324 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> + %325 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %326 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> + %327 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %328 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120x1x1x32xi8>}> : () -> tensor<120x1x1x32xi8> + %329 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %330 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %331 = "tosa.const"() <{values = dense<-126> : tensor<1xi8>}> : () -> tensor<1xi8> + %332 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %333 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x120xi8>}> : () -> tensor<32x1x1x120xi8> + %334 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %335 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> + %336 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %337 = "tosa.const"() <{values = dense<-75> : tensor<1xi8>}> : () -> tensor<1xi8> + %338 = "tosa.const"() <{values = dense<-118> : tensor<1xi8>}> : () -> tensor<1xi8> + %339 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %340 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x120xi8>}> : () -> tensor<1x5x5x120xi8> + %341 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %342 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> + %343 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %344 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> + %345 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> + %346 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120x1x1x40xi8>}> : () -> tensor<120x1x1x40xi8> + %347 = "tosa.const"() <{values = dense<1667743280> : tensor<1xi32>}> : () -> tensor<1xi32> + %348 = "tosa.const"() <{values = dense<1677119600> : tensor<1xi32>}> : () -> tensor<1xi32> + %349 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %350 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %351 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> + %352 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %353 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> + %354 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> + %355 = "tosa.const"() <{values = dense<1427554176> : tensor<1xi32>}> : () -> tensor<1xi32> + %356 = "tosa.const"() <{values = dense<1320933047> : tensor<1xi32>}> : () -> tensor<1xi32> + %357 = "tosa.const"() <{values = dense<1758591359> : tensor<1xi32>}> : () -> tensor<1xi32> + %358 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %359 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %360 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> + %361 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %362 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x64xi8>}> : () -> tensor<240x1x1x64xi8> + %363 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %364 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %365 = "tosa.const"() <{values = dense<-123> : tensor<1xi8>}> : () -> tensor<1xi8> + %366 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %367 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x240xi8>}> : () -> tensor<64x1x1x240xi8> + %368 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %369 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %370 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %371 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> + %372 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %373 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> + %374 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %375 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %376 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %377 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %378 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> + %379 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> + %380 = "tosa.const"() <{values = dense<1971685847> : tensor<1xi32>}> : () -> tensor<1xi32> + %381 = "tosa.const"() <{values = dense<1952317738> : tensor<1xi32>}> : () -> tensor<1xi32> + %382 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %383 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %384 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> + %385 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %386 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> + %387 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> + %388 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> + %389 = "tosa.const"() <{values = dense<1346235520> : tensor<1xi32>}> : () -> tensor<1xi32> + %390 = "tosa.const"() <{values = dense<1210219841> : tensor<1xi32>}> : () -> tensor<1xi32> + %391 = "tosa.const"() <{values = dense<1896721978> : tensor<1xi32>}> : () -> tensor<1xi32> + %392 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %393 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %394 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> + %395 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %396 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x64xi8>}> : () -> tensor<240x1x1x64xi8> + %397 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %398 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %399 = "tosa.const"() <{values = dense<-122> : tensor<1xi8>}> : () -> tensor<1xi8> + %400 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %401 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x240xi8>}> : () -> tensor<64x1x1x240xi8> + %402 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %403 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %404 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %405 = "tosa.const"() <{values = dense<-119> : tensor<1xi8>}> : () -> tensor<1xi8> + %406 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %407 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> + %408 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %409 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> + %410 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %411 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> + %412 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> + %413 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> + %414 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %415 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %416 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> + %417 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %418 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x96xi8>}> : () -> tensor<40x1x1x96xi8> + %419 = "tosa.const"() <{values = dense<-110> : tensor<1xi8>}> : () -> tensor<1xi8> + %420 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> + %421 = "tosa.const"() <{values = dense<1770674688> : tensor<1xi32>}> : () -> tensor<1xi32> + %422 = "tosa.const"() <{values = dense<1982666603> : tensor<1xi32>}> : () -> tensor<1xi32> + %423 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %424 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %425 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> + %426 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %427 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x24xi8>}> : () -> tensor<96x1x1x24xi8> + %428 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %429 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %430 = "tosa.const"() <{values = dense<-125> : tensor<1xi8>}> : () -> tensor<1xi8> + %431 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %432 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> + %433 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %434 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %435 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %436 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> + %437 = "tosa.const"() <{values = dense<-120> : tensor<1xi8>}> : () -> tensor<1xi8> + %438 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %439 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x96xi8>}> : () -> tensor<1x5x5x96xi8> + %440 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %441 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %442 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %443 = "tosa.const"() <{values = dense<12> : tensor<1xi8>}> : () -> tensor<1xi8> + %444 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %445 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x24xi8>}> : () -> tensor<96x1x1x24xi8> + %446 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> + %447 = "tosa.const"() <{values = dense<1085834602> : tensor<1xi32>}> : () -> tensor<1xi32> + %448 = "tosa.const"() <{values = dense<1899624818> : tensor<1xi32>}> : () -> tensor<1xi32> + %449 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %450 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %451 = "tosa.const"() <{values = dense<14> : tensor<1xi8>}> : () -> tensor<1xi8> + %452 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %453 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x88xi8>}> : () -> tensor<24x1x1x88xi8> + %454 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi8>}> : () -> tensor<88xi8> + %455 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> + %456 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> + %457 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x88xi8>}> : () -> tensor<1x3x3x88xi8> + %458 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi8>}> : () -> tensor<88xi8> + %459 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> + %460 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> + %461 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88x1x1x24xi8>}> : () -> tensor<88x1x1x24xi8> + %462 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> + %463 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %464 = "tosa.const"() <{values = dense<-3> : tensor<1xi8>}> : () -> tensor<1xi8> + %465 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> + %466 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x72xi8>}> : () -> tensor<24x1x1x72xi8> + %467 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %468 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %469 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %470 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x72xi8>}> : () -> tensor<1x3x3x72xi8> + %471 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> + %472 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %473 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> + %474 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x16xi8>}> : () -> tensor<72x1x1x16xi8> + %475 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %476 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %477 = "tosa.const"() <{values = dense<-22> : tensor<1xi8>}> : () -> tensor<1xi8> + %478 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %479 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x16xi8>}> : () -> tensor<16x1x1x16xi8> + %480 = "tosa.const"() <{values = dense<38> : tensor<1xi8>}> : () -> tensor<1xi8> + %481 = "tosa.const"() <{values = dense<1082344576> : tensor<1xi32>}> : () -> tensor<1xi32> + %482 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> + %483 = "tosa.const"() <{values = dense<1082196480> : tensor<1xi32>}> : () -> tensor<1xi32> + %484 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %485 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor + %486 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor + %487 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> + %488 = "tosa.const"() <{values = dense<1077969129> : tensor<1xi32>}> : () -> tensor<1xi32> + %489 = tosa.const_shape {values = dense<1> : tensor<4xindex>} : () -> !tosa.shape<4> + %490 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> + %491 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %492 = "tosa.const"() <{values = dense<1529543979> : tensor<1xi32>}> : () -> tensor<1xi32> + %493 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> + %494 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %495 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor + %496 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor + %497 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %498 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %499 = "tosa.const"() <{values = dense<-51> : tensor<1xi8>}> : () -> tensor<1xi8> + %500 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %501 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x8xi8>}> : () -> tensor<16x1x1x8xi8> + %502 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> + %503 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %504 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %505 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x16xi8>}> : () -> tensor<8x1x1x16xi8> + %506 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %507 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %508 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %509 = "tosa.const"() <{values = dense<-127> : tensor<1xi8>}> : () -> tensor<1xi8> + %510 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %511 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x16xi8>}> : () -> tensor<1x3x3x16xi8> + %512 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %513 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %514 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %515 = "tosa.const"() <{values = dense<-45> : tensor<1xi8>}> : () -> tensor<1xi8> + %516 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %517 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x3x3x3xi8>}> : () -> tensor<16x3x3x3xi8> + %518 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %519 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %520 = tosa.conv2d %arg0, %517, %518, %519, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x320x320x3xi8>, tensor<16x3x3x3xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x160x160x16xi32> + %521 = tosa.rescale %520, %514, %513, %516, %515 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x160x160x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x160x160x16xi8> + %522 = tosa.table %521, %512 : (tensor<1x160x160x16xi8>, tensor<256xi8>) -> tensor<1x160x160x16xi8> + %523 = tosa.reshape %511, %12 : (tensor<1x3x3x16xi8>, !tosa.shape<4>) -> tensor<3x3x16x1xi8> + %524 = tosa.depthwise_conv2d %522, %523, %510, %509, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x160x160x16xi8>, tensor<3x3x16x1xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x16xi32> + %525 = tosa.rescale %524, %507, %506, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> + %526 = tosa.clamp %525 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x80x80x16xi8>) -> tensor<1x80x80x16xi8> + %527 = tosa.avg_pool2d %526, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x16xi8> + %528 = tosa.conv2d %527, %505, %504, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x16xi8>, tensor<8x1x1x16xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x8xi32> + %529 = tosa.rescale %528, %503, %502, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x8xi8> + %530 = tosa.clamp %529 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x8xi8>) -> tensor<1x1x1x8xi8> + %531 = tosa.conv2d %530, %501, %500, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x8xi8>, tensor<16x1x1x8xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x16xi32> + %532 = tosa.rescale %531, %498, %497, %516, %499 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> + %533 = tosa.rescale %532, %494, %493, %499, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> + %534 = tosa.rescale %533, %492, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x16xi32> + %535 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %536 = tosa.reshape %535, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %537 = tosa.add %534, %536 : (tensor<1x1x1x16xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x16xi32> + %538 = tosa.rescale %537, %488, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> + %539 = tosa.clamp %538 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x16xi8>) -> tensor<1x1x1x16xi8> + %540 = tosa.rescale %539, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> + %541 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %542 = tosa.reshape %541, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %543 = tosa.mul %540, %542, %519 : (tensor<1x1x1x16xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi32> + %544 = tosa.rescale %543, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> + %545 = tosa.rescale %526, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x80x80x16xi32> + %546 = tosa.rescale %544, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> + %547 = tosa.mul %545, %546, %519 : (tensor<1x80x80x16xi32>, tensor<1x1x1x16xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi32> + %548 = tosa.rescale %547, %481, %480, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> + %549 = tosa.conv2d %548, %479, %478, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<16x1x1x16xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x16xi32> + %550 = tosa.rescale %549, %476, %475, %516, %477 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> + %551 = tosa.conv2d %550, %474, %473, %477, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<72x1x1x16xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x72xi32> + %552 = tosa.rescale %551, %472, %471, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x72xi8> + %553 = tosa.clamp %552 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x80x80x72xi8>) -> tensor<1x80x80x72xi8> + %554 = tosa.reshape %470, %11 : (tensor<1x3x3x72xi8>, !tosa.shape<4>) -> tensor<3x3x72x1xi8> + %555 = tosa.depthwise_conv2d %553, %554, %469, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x72xi8>, tensor<3x3x72x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x72xi32> + %556 = tosa.rescale %555, %468, %467, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x72xi8> + %557 = tosa.clamp %556 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x72xi8>) -> tensor<1x40x40x72xi8> + %558 = tosa.conv2d %557, %466, %465, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x72xi8>, tensor<24x1x1x72xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x24xi32> + %559 = tosa.rescale %558, %463, %462, %516, %464 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> + %560 = tosa.conv2d %559, %461, %460, %464, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x24xi8>, tensor<88x1x1x24xi8>, tensor<88xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x88xi32> + %561 = tosa.rescale %560, %459, %458, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x88xi32>, tensor<88xi32>, tensor<88xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x88xi8> + %562 = tosa.clamp %561 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x88xi8>) -> tensor<1x40x40x88xi8> + %563 = tosa.reshape %457, %10 : (tensor<1x3x3x88xi8>, !tosa.shape<4>) -> tensor<3x3x88x1xi8> + %564 = tosa.depthwise_conv2d %562, %563, %456, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x88xi8>, tensor<3x3x88x1xi8>, tensor<88xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x88xi32> + %565 = tosa.rescale %564, %455, %454, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x88xi32>, tensor<88xi32>, tensor<88xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x88xi8> + %566 = tosa.clamp %565 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x88xi8>) -> tensor<1x40x40x88xi8> + %567 = tosa.conv2d %566, %453, %452, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x88xi8>, tensor<24x1x1x88xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x24xi32> + %568 = tosa.rescale %567, %450, %449, %516, %451 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> + %569 = tosa.rescale %568, %494, %490, %451, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x40x40x24xi32> + %570 = tosa.rescale %559, %494, %493, %464, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x40x40x24xi32> + %571 = tosa.rescale %570, %448, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x40x40x24xi32> + %572 = tosa.add %569, %571 : (tensor<1x40x40x24xi32>, tensor<1x40x40x24xi32>) -> tensor<1x40x40x24xi32> + %573 = tosa.rescale %572, %447, %487, %516, %446 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> + %574 = tosa.conv2d %573, %445, %444, %446, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x24xi8>, tensor<96x1x1x24xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x96xi32> + %575 = tosa.rescale %574, %442, %441, %516, %443 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x96xi8> + %576 = tosa.table %575, %440 : (tensor<1x40x40x96xi8>, tensor<256xi8>) -> tensor<1x40x40x96xi8> + %577 = tosa.reshape %439, %9 : (tensor<1x5x5x96xi8>, !tosa.shape<4>) -> tensor<5x5x96x1xi8> + %578 = tosa.depthwise_conv2d %576, %577, %438, %437, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x96xi8>, tensor<5x5x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x96xi32> + %579 = tosa.rescale %578, %435, %434, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi8> + %580 = tosa.table %579, %433 : (tensor<1x20x20x96xi8>, tensor<256xi8>) -> tensor<1x20x20x96xi8> + %581 = tosa.avg_pool2d %580, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x96xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x96xi8> + %582 = tosa.conv2d %581, %432, %431, %430, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x24xi32> + %583 = tosa.rescale %582, %429, %428, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x24xi8> + %584 = tosa.clamp %583 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x24xi8>) -> tensor<1x1x1x24xi8> + %585 = tosa.conv2d %584, %427, %426, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x24xi8>, tensor<96x1x1x24xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x96xi32> + %586 = tosa.rescale %585, %424, %423, %516, %425 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> + %587 = tosa.rescale %586, %494, %493, %425, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> + %588 = tosa.rescale %587, %422, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x96xi32> + %589 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %590 = tosa.reshape %589, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %591 = tosa.add %588, %590 : (tensor<1x1x1x96xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x96xi32> + %592 = tosa.rescale %591, %488, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> + %593 = tosa.clamp %592 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x96xi8>) -> tensor<1x1x1x96xi8> + %594 = tosa.rescale %593, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> + %595 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %596 = tosa.reshape %595, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %597 = tosa.mul %594, %596, %519 : (tensor<1x1x1x96xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi32> + %598 = tosa.rescale %597, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> + %599 = tosa.rescale %580, %494, %484, %430, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x96xi32> + %600 = tosa.rescale %598, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> + %601 = tosa.mul %599, %600, %519 : (tensor<1x20x20x96xi32>, tensor<1x1x1x96xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi32> + %602 = tosa.rescale %601, %421, %420, %516, %419 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi8> + %603 = tosa.conv2d %602, %418, %417, %419, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x96xi8>, tensor<40x1x1x96xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> + %604 = tosa.rescale %603, %415, %414, %516, %416 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> + %605 = tosa.conv2d %604, %413, %412, %416, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %606 = tosa.rescale %605, %410, %409, %516, %411 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %607 = tosa.table %606, %408 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> + %608 = tosa.reshape %407, %8 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> + %609 = tosa.depthwise_conv2d %607, %608, %406, %405, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %610 = tosa.rescale %609, %404, %403, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %611 = tosa.table %610, %402 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> + %612 = tosa.avg_pool2d %611, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %613 = tosa.conv2d %612, %401, %400, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x240xi8>, tensor<64x1x1x240xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> + %614 = tosa.rescale %613, %398, %397, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> + %615 = tosa.clamp %614 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> + %616 = tosa.conv2d %615, %396, %395, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<240x1x1x64xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi32> + %617 = tosa.rescale %616, %393, %392, %516, %394 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %618 = tosa.rescale %617, %494, %493, %394, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %619 = tosa.rescale %618, %391, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %620 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %621 = tosa.reshape %620, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %622 = tosa.add %619, %621 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x240xi32> + %623 = tosa.rescale %622, %390, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %624 = tosa.clamp %623 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x240xi8>) -> tensor<1x1x1x240xi8> + %625 = tosa.rescale %624, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %626 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %627 = tosa.reshape %626, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %628 = tosa.mul %625, %627, %519 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi32> + %629 = tosa.rescale %628, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %630 = tosa.rescale %611, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x240xi32> + %631 = tosa.rescale %629, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %632 = tosa.mul %630, %631, %519 : (tensor<1x20x20x240xi32>, tensor<1x1x1x240xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %633 = tosa.rescale %632, %389, %388, %516, %387 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %634 = tosa.conv2d %633, %386, %385, %387, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> + %635 = tosa.rescale %634, %383, %382, %516, %384 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> + %636 = tosa.rescale %635, %494, %490, %384, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %637 = tosa.rescale %604, %494, %493, %416, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %638 = tosa.rescale %637, %381, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %639 = tosa.add %636, %638 : (tensor<1x20x20x40xi32>, tensor<1x20x20x40xi32>) -> tensor<1x20x20x40xi32> + %640 = tosa.rescale %639, %380, %379, %516, %519 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> + %641 = tosa.conv2d %640, %378, %377, %519, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %642 = tosa.rescale %641, %376, %375, %516, %491 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %643 = tosa.table %642, %374 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> + %644 = tosa.reshape %373, %8 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> + %645 = tosa.depthwise_conv2d %643, %644, %372, %405, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %646 = tosa.rescale %645, %370, %369, %516, %371 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %647 = tosa.table %646, %368 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> + %648 = tosa.avg_pool2d %647, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %649 = tosa.conv2d %648, %367, %366, %365, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x240xi8>, tensor<64x1x1x240xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> + %650 = tosa.rescale %649, %364, %363, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> + %651 = tosa.clamp %650 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> + %652 = tosa.conv2d %651, %362, %361, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<240x1x1x64xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi32> + %653 = tosa.rescale %652, %359, %358, %516, %360 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %654 = tosa.rescale %653, %494, %493, %360, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %655 = tosa.rescale %654, %357, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %656 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %657 = tosa.reshape %656, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %658 = tosa.add %655, %657 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x240xi32> + %659 = tosa.rescale %658, %356, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %660 = tosa.clamp %659 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x240xi8>) -> tensor<1x1x1x240xi8> + %661 = tosa.rescale %660, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %662 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %663 = tosa.reshape %662, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %664 = tosa.mul %661, %663, %519 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi32> + %665 = tosa.rescale %664, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> + %666 = tosa.rescale %647, %494, %484, %365, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x240xi32> + %667 = tosa.rescale %665, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> + %668 = tosa.mul %666, %667, %519 : (tensor<1x20x20x240xi32>, tensor<1x1x1x240xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi32> + %669 = tosa.rescale %668, %355, %388, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> + %670 = tosa.conv2d %669, %353, %352, %354, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> + %671 = tosa.rescale %670, %350, %349, %516, %351 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> + %672 = tosa.rescale %671, %494, %490, %351, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %673 = tosa.rescale %640, %494, %493, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %674 = tosa.rescale %673, %348, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x40xi32> + %675 = tosa.add %672, %674 : (tensor<1x20x20x40xi32>, tensor<1x20x20x40xi32>) -> tensor<1x20x20x40xi32> + %676 = tosa.rescale %675, %347, %379, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> + %677 = tosa.conv2d %676, %346, %345, %354, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<120x1x1x40xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x120xi32> + %678 = tosa.rescale %677, %343, %342, %516, %344 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> + %679 = tosa.table %678, %341 : (tensor<1x20x20x120xi8>, tensor<256xi8>) -> tensor<1x20x20x120xi8> + %680 = tosa.reshape %340, %7 : (tensor<1x5x5x120xi8>, !tosa.shape<4>) -> tensor<5x5x120x1xi8> + %681 = tosa.depthwise_conv2d %679, %680, %339, %338, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<5x5x120x1xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x120xi32> + %682 = tosa.rescale %681, %336, %335, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> + %683 = tosa.table %682, %334 : (tensor<1x20x20x120xi8>, tensor<256xi8>) -> tensor<1x20x20x120xi8> + %684 = tosa.avg_pool2d %683, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x120xi8> + %685 = tosa.conv2d %684, %333, %332, %331, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x120xi8>, tensor<32x1x1x120xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x32xi32> + %686 = tosa.rescale %685, %330, %329, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x32xi8> + %687 = tosa.clamp %686 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x32xi8>) -> tensor<1x1x1x32xi8> + %688 = tosa.conv2d %687, %328, %327, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x32xi8>, tensor<120x1x1x32xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x120xi32> + %689 = tosa.rescale %688, %325, %324, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> + %690 = tosa.rescale %689, %494, %490, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> + %691 = tosa.rescale %496, %494, %493, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %692 = tosa.rescale %691, %323, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor + %693 = tosa.reshape %692, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %694 = tosa.add %690, %693 : (tensor<1x1x1x120xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x120xi32> + %695 = tosa.rescale %694, %322, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> + %696 = tosa.clamp %695 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x120xi8>) -> tensor<1x1x1x120xi8> + %697 = tosa.rescale %696, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> + %698 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %699 = tosa.reshape %698, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %700 = tosa.mul %697, %699, %519 : (tensor<1x1x1x120xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi32> + %701 = tosa.rescale %700, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> + %702 = tosa.rescale %683, %494, %484, %331, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x120xi32> + %703 = tosa.rescale %701, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> + %704 = tosa.mul %702, %703, %519 : (tensor<1x20x20x120xi32>, tensor<1x1x1x120xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi32> + %705 = tosa.rescale %704, %321, %388, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> + %706 = tosa.conv2d %705, %320, %319, %337, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<48x1x1x120xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x48xi32> + %707 = tosa.rescale %706, %317, %316, %516, %318 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> + %708 = tosa.conv2d %707, %315, %314, %318, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x48xi8>, tensor<144x1x1x48xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x144xi32> + %709 = tosa.rescale %708, %313, %312, %516, %416 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> + %710 = tosa.table %709, %311 : (tensor<1x20x20x144xi8>, tensor<256xi8>) -> tensor<1x20x20x144xi8> + %711 = tosa.reshape %310, %6 : (tensor<1x5x5x144xi8>, !tosa.shape<4>) -> tensor<5x5x144x1xi8> + %712 = tosa.depthwise_conv2d %710, %711, %309, %365, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<5x5x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x144xi32> + %713 = tosa.rescale %712, %308, %307, %516, %451 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> + %714 = tosa.table %713, %306 : (tensor<1x20x20x144xi8>, tensor<256xi8>) -> tensor<1x20x20x144xi8> + %715 = tosa.avg_pool2d %714, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x144xi8> + %716 = tosa.conv2d %715, %305, %304, %303, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x144xi8>, tensor<40x1x1x144xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x40xi32> + %717 = tosa.rescale %716, %302, %301, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x40xi8> + %718 = tosa.clamp %717 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x40xi8>) -> tensor<1x1x1x40xi8> + %719 = tosa.conv2d %718, %300, %299, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x40xi8>, tensor<144x1x1x40xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x144xi32> + %720 = tosa.rescale %719, %297, %296, %516, %298 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> + %721 = tosa.rescale %720, %494, %493, %298, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> + %722 = tosa.rescale %721, %295, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x144xi32> + %723 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %724 = tosa.reshape %723, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %725 = tosa.add %722, %724 : (tensor<1x1x1x144xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x144xi32> + %726 = tosa.rescale %725, %294, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> + %727 = tosa.clamp %726 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x144xi8>) -> tensor<1x1x1x144xi8> + %728 = tosa.rescale %727, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> + %729 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %730 = tosa.reshape %729, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %731 = tosa.mul %728, %730, %519 : (tensor<1x1x1x144xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi32> + %732 = tosa.rescale %731, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> + %733 = tosa.rescale %714, %494, %484, %303, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x144xi32> + %734 = tosa.rescale %732, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> + %735 = tosa.mul %733, %734, %519 : (tensor<1x20x20x144xi32>, tensor<1x1x1x144xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi32> + %736 = tosa.rescale %735, %293, %388, %516, %477 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> + %737 = tosa.conv2d %736, %292, %291, %477, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<48x1x1x144xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x48xi32> + %738 = tosa.rescale %737, %290, %289, %516, %411 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> + %739 = tosa.rescale %738, %494, %493, %411, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x48xi32> + %740 = tosa.rescale %739, %288, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x48xi32> + %741 = tosa.rescale %707, %494, %490, %318, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x48xi32> + %742 = tosa.add %740, %741 : (tensor<1x20x20x48xi32>, tensor<1x20x20x48xi32>) -> tensor<1x20x20x48xi32> + %743 = tosa.rescale %742, %287, %379, %516, %286 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> + %744 = tosa.conv2d %743, %285, %284, %286, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> + %745 = tosa.rescale %744, %283, %282, %516, %344 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> + %746 = tosa.table %745, %281 : (tensor<1x20x20x288xi8>, tensor<256xi8>) -> tensor<1x20x20x288xi8> + %747 = tosa.reshape %280, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> + %748 = tosa.depthwise_conv2d %746, %747, %279, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> + %749 = tosa.rescale %748, %277, %276, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> + %750 = tosa.clamp %749 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x20x20x288xi8>) -> tensor<1x20x20x288xi8> + %751 = tosa.conv2d %750, %275, %274, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<12x1x1x288xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x12xi32> + %752 = tosa.rescale %751, %272, %271, %516, %273 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x12xi8> + %753 = tosa.reshape %752, %270 : (tensor<1x20x20x12xi8>, !tosa.shape<4>) -> tensor<1x1200x1x4xi8> + %754 = tosa.reshape %269, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> + %755 = tosa.depthwise_conv2d %746, %754, %268, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> + %756 = tosa.rescale %755, %267, %266, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> + %757 = tosa.clamp %756 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x20x20x288xi8>) -> tensor<1x20x20x288xi8> + %758 = tosa.conv2d %757, %265, %264, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<273x1x1x288xi8>, tensor<273xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x273xi32> + %759 = tosa.rescale %758, %262, %261, %516, %263 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x273xi32>, tensor<273xi32>, tensor<273xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x273xi8> + %760 = tosa.reshape %759, %260 : (tensor<1x20x20x273xi8>, !tosa.shape<3>) -> tensor<1x1200x91xi8> + %761 = tosa.reshape %259, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> + %762 = tosa.depthwise_conv2d %746, %761, %258, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %763 = tosa.rescale %762, %256, %255, %516, %257 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %764 = tosa.table %763, %254 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %765 = tosa.avg_pool2d %764, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %766 = tosa.conv2d %765, %253, %252, %303, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> + %767 = tosa.rescale %766, %251, %250, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> + %768 = tosa.clamp %767 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> + %769 = tosa.conv2d %768, %249, %248, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %770 = tosa.rescale %769, %247, %246, %516, %490 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %771 = tosa.rescale %770, %494, %493, %490, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %772 = tosa.rescale %771, %245, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %773 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %774 = tosa.reshape %773, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %775 = tosa.add %772, %774 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> + %776 = tosa.rescale %775, %244, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %777 = tosa.clamp %776 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> + %778 = tosa.rescale %777, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %779 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %780 = tosa.reshape %779, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %781 = tosa.mul %778, %780, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %782 = tosa.rescale %781, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %783 = tosa.rescale %764, %494, %484, %303, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> + %784 = tosa.rescale %782, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %785 = tosa.mul %783, %784, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %786 = tosa.rescale %785, %243, %242, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %787 = tosa.conv2d %786, %241, %240, %337, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> + %788 = tosa.rescale %787, %239, %238, %516, %351 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> + %789 = tosa.conv2d %788, %237, %236, %351, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %790 = tosa.rescale %789, %234, %233, %516, %235 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %791 = tosa.table %790, %232 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %792 = tosa.reshape %231, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> + %793 = tosa.depthwise_conv2d %791, %792, %230, %229, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %794 = tosa.rescale %793, %227, %226, %516, %228 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %795 = tosa.table %794, %225 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %796 = tosa.avg_pool2d %795, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %797 = tosa.conv2d %796, %224, %223, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> + %798 = tosa.rescale %797, %222, %221, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> + %799 = tosa.clamp %798 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> + %800 = tosa.conv2d %799, %220, %219, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %801 = tosa.rescale %800, %218, %217, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %802 = tosa.rescale %801, %494, %493, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %803 = tosa.rescale %802, %216, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %804 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %805 = tosa.reshape %804, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %806 = tosa.add %803, %805 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> + %807 = tosa.rescale %806, %215, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %808 = tosa.clamp %807 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> + %809 = tosa.rescale %808, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %810 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %811 = tosa.reshape %810, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %812 = tosa.mul %809, %811, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %813 = tosa.rescale %812, %214, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %814 = tosa.rescale %795, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> + %815 = tosa.rescale %813, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %816 = tosa.mul %814, %815, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %817 = tosa.rescale %816, %213, %242, %516, %212 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %818 = tosa.conv2d %817, %211, %210, %212, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> + %819 = tosa.rescale %818, %208, %207, %516, %209 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> + %820 = tosa.rescale %819, %494, %490, %209, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %821 = tosa.rescale %788, %494, %493, %351, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %822 = tosa.rescale %821, %206, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %823 = tosa.add %820, %822 : (tensor<1x10x10x48xi32>, tensor<1x10x10x48xi32>) -> tensor<1x10x10x48xi32> + %824 = tosa.rescale %823, %205, %487, %516, %204 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> + %825 = tosa.conv2d %824, %203, %202, %204, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %826 = tosa.rescale %825, %201, %200, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %827 = tosa.table %826, %199 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %828 = tosa.reshape %198, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> + %829 = tosa.depthwise_conv2d %827, %828, %197, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %830 = tosa.rescale %829, %195, %194, %516, %196 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %831 = tosa.table %830, %193 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %832 = tosa.avg_pool2d %831, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %833 = tosa.conv2d %832, %192, %191, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> + %834 = tosa.rescale %833, %190, %189, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> + %835 = tosa.clamp %834 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> + %836 = tosa.conv2d %835, %188, %187, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %837 = tosa.rescale %836, %186, %185, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %838 = tosa.rescale %837, %494, %493, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %839 = tosa.rescale %838, %184, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %840 = tosa.rescale %495, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %841 = tosa.reshape %840, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %842 = tosa.add %839, %841 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> + %843 = tosa.rescale %842, %183, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %844 = tosa.clamp %843 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> + %845 = tosa.rescale %844, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %846 = tosa.rescale %485, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %847 = tosa.reshape %846, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> + %848 = tosa.mul %845, %847, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> + %849 = tosa.rescale %848, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> + %850 = tosa.rescale %831, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> + %851 = tosa.rescale %849, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> + %852 = tosa.mul %850, %851, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %853 = tosa.rescale %852, %182, %242, %516, %181 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %854 = tosa.conv2d %853, %180, %179, %181, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> + %855 = tosa.rescale %854, %178, %177, %516, %425 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> + %856 = tosa.rescale %855, %494, %490, %425, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %857 = tosa.rescale %824, %494, %493, %204, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %858 = tosa.rescale %857, %176, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x10x10x48xi32> + %859 = tosa.add %856, %858 : (tensor<1x10x10x48xi32>, tensor<1x10x10x48xi32>) -> tensor<1x10x10x48xi32> + %860 = tosa.rescale %859, %175, %379, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> + %861 = tosa.conv2d %860, %174, %173, %436, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %862 = tosa.rescale %861, %171, %170, %516, %172 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %863 = tosa.table %862, %169 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> + %864 = tosa.reshape %168, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> + %865 = tosa.depthwise_conv2d %863, %864, %167, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %866 = tosa.rescale %865, %165, %164, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %867 = tosa.clamp %866 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x288xi8>) -> tensor<1x10x10x288xi8> + %868 = tosa.conv2d %867, %163, %162, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<24x1x1x288xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x24xi32> + %869 = tosa.rescale %868, %160, %159, %516, %161 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x24xi8> + %870 = tosa.reshape %869, %158 : (tensor<1x10x10x24xi8>, !tosa.shape<4>) -> tensor<1x600x1x4xi8> + %871 = tosa.reshape %157, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> + %872 = tosa.depthwise_conv2d %863, %871, %156, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> + %873 = tosa.rescale %872, %155, %154, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> + %874 = tosa.clamp %873 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x288xi8>) -> tensor<1x10x10x288xi8> + %875 = tosa.conv2d %874, %153, %152, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<546x1x1x288xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x546xi32> + %876 = tosa.rescale %875, %150, %149, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x546xi8> + %877 = tosa.reshape %876, %148 : (tensor<1x10x10x546xi8>, !tosa.shape<3>) -> tensor<1x600x91xi8> + %878 = tosa.conv2d %863, %147, %146, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<256x1x1x288xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x256xi32> + %879 = tosa.rescale %878, %145, %144, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x256xi8> + %880 = tosa.clamp %879 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x256xi8>) -> tensor<1x10x10x256xi8> + %881 = tosa.reshape %143, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> + %882 = tosa.depthwise_conv2d %880, %881, %142, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x256xi32> + %883 = tosa.rescale %882, %141, %140, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x256xi8> + %884 = tosa.clamp %883 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x256xi8>) -> tensor<1x5x5x256xi8> + %885 = tosa.conv2d %884, %139, %138, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x256xi8>, tensor<512x1x1x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> + %886 = tosa.rescale %885, %137, %136, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> + %887 = tosa.clamp %886 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> + %888 = tosa.reshape %135, %2 : (tensor<1x3x3x512xi8>, !tosa.shape<4>) -> tensor<3x3x512x1xi8> + %889 = tosa.depthwise_conv2d %887, %888, %134, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<3x3x512x1xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> + %890 = tosa.rescale %889, %133, %132, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> + %891 = tosa.clamp %890 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> + %892 = tosa.conv2d %891, %131, %130, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<24x1x1x512xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x24xi32> + %893 = tosa.rescale %892, %128, %127, %516, %129 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x24xi8> + %894 = tosa.reshape %893, %126 : (tensor<1x5x5x24xi8>, !tosa.shape<4>) -> tensor<1x150x1x4xi8> + %895 = tosa.reshape %125, %2 : (tensor<1x3x3x512xi8>, !tosa.shape<4>) -> tensor<3x3x512x1xi8> + %896 = tosa.depthwise_conv2d %887, %895, %124, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<3x3x512x1xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> + %897 = tosa.rescale %896, %123, %122, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> + %898 = tosa.clamp %897 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> + %899 = tosa.conv2d %898, %121, %120, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<546x1x1x512xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x546xi32> + %900 = tosa.rescale %899, %119, %118, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x546xi8> + %901 = tosa.reshape %900, %117 : (tensor<1x5x5x546xi8>, !tosa.shape<3>) -> tensor<1x150x91xi8> + %902 = tosa.conv2d %887, %116, %115, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<128x1x1x512xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x128xi32> + %903 = tosa.rescale %902, %114, %113, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x128xi8> + %904 = tosa.clamp %903 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x128xi8>) -> tensor<1x5x5x128xi8> + %905 = tosa.reshape %112, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> + %906 = tosa.depthwise_conv2d %904, %905, %111, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x128xi32> + %907 = tosa.rescale %906, %110, %109, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x128xi8> + %908 = tosa.clamp %907 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x128xi8>) -> tensor<1x3x3x128xi8> + %909 = tosa.conv2d %908, %108, %107, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x128xi8>, tensor<256x1x1x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> + %910 = tosa.rescale %909, %106, %105, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> + %911 = tosa.clamp %910 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> + %912 = tosa.reshape %104, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> + %913 = tosa.depthwise_conv2d %911, %912, %103, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> + %914 = tosa.rescale %913, %102, %101, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> + %915 = tosa.clamp %914 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> + %916 = tosa.conv2d %915, %100, %99, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<24x1x1x256xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x24xi32> + %917 = tosa.rescale %916, %97, %96, %516, %98 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x24xi8> + %918 = tosa.reshape %917, %95 : (tensor<1x3x3x24xi8>, !tosa.shape<4>) -> tensor<1x54x1x4xi8> + %919 = tosa.reshape %94, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> + %920 = tosa.depthwise_conv2d %911, %919, %93, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> + %921 = tosa.rescale %920, %92, %91, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> + %922 = tosa.clamp %921 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> + %923 = tosa.conv2d %922, %90, %89, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<546x1x1x256xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x546xi32> + %924 = tosa.rescale %923, %88, %87, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x546xi8> + %925 = tosa.reshape %924, %86 : (tensor<1x3x3x546xi8>, !tosa.shape<3>) -> tensor<1x54x91xi8> + %926 = tosa.conv2d %911, %85, %84, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<128x1x1x256xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x128xi32> + %927 = tosa.rescale %926, %83, %82, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x128xi8> + %928 = tosa.clamp %927 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x128xi8>) -> tensor<1x3x3x128xi8> + %929 = tosa.reshape %81, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> + %930 = tosa.depthwise_conv2d %928, %929, %80, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x128xi32> + %931 = tosa.rescale %930, %79, %78, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x128xi8> + %932 = tosa.clamp %931 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x128xi8>) -> tensor<1x2x2x128xi8> + %933 = tosa.conv2d %932, %77, %76, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x128xi8>, tensor<256x1x1x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> + %934 = tosa.rescale %933, %75, %74, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> + %935 = tosa.clamp %934 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> + %936 = tosa.reshape %73, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> + %937 = tosa.depthwise_conv2d %935, %936, %72, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> + %938 = tosa.rescale %937, %71, %70, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> + %939 = tosa.clamp %938 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> + %940 = tosa.conv2d %939, %69, %68, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<24x1x1x256xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x24xi32> + %941 = tosa.rescale %940, %67, %66, %516, %298 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x24xi8> + %942 = tosa.reshape %941, %65 : (tensor<1x2x2x24xi8>, !tosa.shape<4>) -> tensor<1x24x1x4xi8> + %943 = tosa.reshape %64, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> + %944 = tosa.depthwise_conv2d %935, %943, %63, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> + %945 = tosa.rescale %944, %62, %61, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> + %946 = tosa.clamp %945 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> + %947 = tosa.conv2d %946, %60, %59, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<546x1x1x256xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x546xi32> + %948 = tosa.rescale %947, %58, %57, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x546xi8> + %949 = tosa.reshape %948, %56 : (tensor<1x2x2x546xi8>, !tosa.shape<3>) -> tensor<1x24x91xi8> + %950 = tosa.conv2d %935, %55, %54, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<64x1x1x256xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x64xi32> + %951 = tosa.rescale %950, %53, %52, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x64xi8> + %952 = tosa.clamp %951 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x64xi8>) -> tensor<1x2x2x64xi8> + %953 = tosa.reshape %51, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> + %954 = tosa.depthwise_conv2d %952, %953, %50, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x64xi8>, tensor<3x3x64x1xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> + %955 = tosa.rescale %954, %49, %48, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> + %956 = tosa.clamp %955 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> + %957 = tosa.conv2d %956, %47, %46, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<128x1x1x64xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> + %958 = tosa.rescale %957, %45, %44, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> + %959 = tosa.clamp %958 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> + %960 = tosa.reshape %43, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> + %961 = tosa.depthwise_conv2d %959, %960, %42, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> + %962 = tosa.rescale %961, %41, %40, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> + %963 = tosa.clamp %962 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> + %964 = tosa.conv2d %963, %39, %38, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<24x1x1x128xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x24xi32> + %965 = tosa.rescale %964, %36, %35, %516, %37 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x24xi8> + %966 = tosa.reshape %965, %34 : (tensor<1x1x1x24xi8>, !tosa.shape<4>) -> tensor<1x6x1x4xi8> + %967 = tosa.rescale %966, %33, %491, %37, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x6x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x6x1x4xi8> + %968 = tosa.rescale %942, %32, %491, %298, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x24x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x24x1x4xi8> + %969 = tosa.rescale %918, %31, %491, %98, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x54x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x54x1x4xi8> + %970 = tosa.rescale %894, %30, %491, %129, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x150x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x150x1x4xi8> + %971 = tosa.rescale %870, %29, %491, %161, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x600x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x600x1x4xi8> + %972 = tosa.concat %753, %971, %970, %969, %968, %967 {axis = 1 : i32} : (tensor<1x1200x1x4xi8>, tensor<1x600x1x4xi8>, tensor<1x150x1x4xi8>, tensor<1x54x1x4xi8>, tensor<1x24x1x4xi8>, tensor<1x6x1x4xi8>) -> tensor<1x2034x1x4xi8> + %973 = tosa.reshape %972, %28 : (tensor<1x2034x1x4xi8>, !tosa.shape<3>) -> tensor<1x2034x4xi8> + %974 = tosa.reshape %27, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> + %975 = tosa.depthwise_conv2d %959, %974, %26, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> + %976 = tosa.rescale %975, %25, %24, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> + %977 = tosa.clamp %976 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> + %978 = tosa.conv2d %977, %23, %22, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<546x1x1x128xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x546xi32> + %979 = tosa.rescale %978, %21, %20, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x546xi8> + %980 = tosa.reshape %979, %19 : (tensor<1x1x1x546xi8>, !tosa.shape<3>) -> tensor<1x6x91xi8> + %981 = tosa.rescale %980, %18, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x6x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x6x91xi8> + %982 = tosa.rescale %949, %17, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x24x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x24x91xi8> + %983 = tosa.rescale %925, %16, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x54x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x54x91xi8> + %984 = tosa.rescale %901, %15, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x150x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x150x91xi8> + %985 = tosa.rescale %877, %14, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x600x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x600x91xi8> + %986 = tosa.concat %760, %985, %984, %983, %982, %981 {axis = 1 : i32} : (tensor<1x1200x91xi8>, tensor<1x600x91xi8>, tensor<1x150x91xi8>, tensor<1x54x91xi8>, tensor<1x24x91xi8>, tensor<1x6x91xi8>) -> tensor<1x2034x91xi8> + %987 = tosa.table %986, %13 : (tensor<1x2034x91xi8>, tensor<256xi8>) -> tensor<1x2034x91xi8> + return %987, %973 : tensor<1x2034x91xi8>, tensor<1x2034x4xi8> + } +} diff --git a/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir b/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir new file mode 100644 index 0000000..199e562 --- /dev/null +++ b/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir @@ -0,0 +1,128 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.13.1\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x296x39xi8>) -> tensor<1x1x148x29xi8> attributes {tf.entry_function = {inputs = "input_1_int8", outputs = "Identity_int8"}} { + %0 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi8>}> : () -> tensor<29xi8> + %1 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi32>}> : () -> tensor<29xi32> + %2 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> + %3 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi32>}> : () -> tensor<29xi32> + %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29x1x1x750xi8>}> : () -> tensor<29x1x1x750xi8> + %5 = "tosa.const"() <{values = dense<-77> : tensor<1xi8>}> : () -> tensor<1xi8> + %6 = "tosa.const"() <{values = dense<1925690389> : tensor<1xi32>}> : () -> tensor<1xi32> + %7 = "tosa.const"() <{values = dense<1540552334> : tensor<1xi32>}> : () -> tensor<1xi32> + %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi8>}> : () -> tensor<750xi8> + %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> + %10 = "tosa.const"() <{values = dense<13> : tensor<1xi8>}> : () -> tensor<1xi8> + %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750x1x1x750xi8>}> : () -> tensor<750x1x1x750xi8> + %13 = "tosa.const"() <{values = dense<-76> : tensor<1xi8>}> : () -> tensor<1xi8> + %14 = "tosa.const"() <{values = dense<1949381878> : tensor<1xi32>}> : () -> tensor<1xi32> + %15 = "tosa.const"() <{values = dense<1559505526> : tensor<1xi32>}> : () -> tensor<1xi32> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi8>}> : () -> tensor<750xi8> + %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> + %18 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> + %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750x1x32x100xi8>}> : () -> tensor<750x1x32x100xi8> + %21 = "tosa.const"() <{values = dense<-84> : tensor<1xi8>}> : () -> tensor<1xi8> + %22 = "tosa.const"() <{values = dense<1819150077> : tensor<1xi32>}> : () -> tensor<1xi32> + %23 = "tosa.const"() <{values = dense<1455320083> : tensor<1xi32>}> : () -> tensor<1xi32> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> + %28 = "tosa.const"() <{values = dense<1833421420> : tensor<1xi32>}> : () -> tensor<1xi32> + %29 = "tosa.const"() <{values = dense<1466737158> : tensor<1xi32>}> : () -> tensor<1xi32> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> + %34 = "tosa.const"() <{values = dense<1981257558> : tensor<1xi32>}> : () -> tensor<1xi32> + %35 = "tosa.const"() <{values = dense<1585006070> : tensor<1xi32>}> : () -> tensor<1xi32> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> + %40 = "tosa.const"() <{values = dense<-74> : tensor<1xi8>}> : () -> tensor<1xi8> + %41 = "tosa.const"() <{values = dense<1976102450> : tensor<1xi32>}> : () -> tensor<1xi32> + %42 = "tosa.const"() <{values = dense<1580881984> : tensor<1xi32>}> : () -> tensor<1xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %45 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> + %48 = "tosa.const"() <{values = dense<-56> : tensor<1xi8>}> : () -> tensor<1xi8> + %49 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> + %50 = "tosa.const"() <{values = dense<1139114841> : tensor<1xi32>}> : () -> tensor<1xi32> + %51 = "tosa.const"() <{values = dense<1822583773> : tensor<1xi32>}> : () -> tensor<1xi32> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %54 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> + %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> + %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x250xi8>}> : () -> tensor<100x1x7x250xi8> + %57 = "tosa.const"() <{values = dense<-83> : tensor<1xi8>}> : () -> tensor<1xi8> + %58 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %59 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %60 = "tosa.const"() <{values = dense<1827101553> : tensor<1xi32>}> : () -> tensor<1xi32> + %61 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %62 = "tosa.const"() <{values = dense<1461681264> : tensor<1xi32>}> : () -> tensor<1xi32> + %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi8>}> : () -> tensor<250xi8> + %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi32>}> : () -> tensor<250xi32> + %65 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> + %66 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %67 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %68 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> + %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi32>}> : () -> tensor<250xi32> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250x1x48x39xi8>}> : () -> tensor<250x1x48x39xi8> + %71 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %72 = tosa.reshape %arg0, %71 : (tensor<1x296x39xi8>, !tosa.shape<4>) -> tensor<1x1x296x39xi8> + %73 = tosa.conv2d %72, %70, %69, %68, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x296x39xi8>, tensor<250x1x48x39xi8>, tensor<250xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x250xi32> + %74 = tosa.rescale %73, %64, %63, %66, %65 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi32>, tensor<250xi32>, tensor<250xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x250xi8> + %75 = tosa.rescale %74, %62, %61, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x250xi32> + %76 = tosa.rescale %74, %60, %59, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x250xi32> + %77 = tosa.maximum %76, %75 : (tensor<1x1x148x250xi32>, tensor<1x1x148x250xi32>) -> tensor<1x1x148x250xi32> + %78 = tosa.rescale %77, %58, %59, %66, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x250xi8> + %79 = tosa.conv2d %78, %56, %55, %57, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x250xi8>, tensor<100x1x7x250xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> + %80 = tosa.rescale %79, %53, %52, %66, %54 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %81 = tosa.rescale %80, %51, %61, %54, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %82 = tosa.rescale %80, %50, %49, %54, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %83 = tosa.maximum %82, %81 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> + %84 = tosa.rescale %83, %58, %59, %66, %48 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %85 = tosa.conv2d %84, %47, %46, %48, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> + %86 = tosa.rescale %85, %44, %43, %66, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %87 = tosa.rescale %86, %42, %61, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %88 = tosa.rescale %86, %41, %59, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %89 = tosa.maximum %88, %87 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> + %90 = tosa.rescale %89, %58, %59, %66, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %91 = tosa.conv2d %90, %39, %38, %40, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> + %92 = tosa.rescale %91, %37, %36, %66, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %93 = tosa.rescale %92, %35, %61, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %94 = tosa.rescale %92, %34, %59, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %95 = tosa.maximum %94, %93 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> + %96 = tosa.rescale %95, %58, %59, %66, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %97 = tosa.conv2d %96, %33, %32, %40, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> + %98 = tosa.rescale %97, %31, %30, %66, %68 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %99 = tosa.rescale %98, %29, %61, %68, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %100 = tosa.rescale %98, %28, %59, %68, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %101 = tosa.maximum %100, %99 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> + %102 = tosa.rescale %101, %58, %59, %66, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %103 = tosa.conv2d %102, %27, %26, %57, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> + %104 = tosa.rescale %103, %25, %24, %66, %65 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %105 = tosa.rescale %104, %23, %61, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %106 = tosa.rescale %104, %22, %59, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> + %107 = tosa.maximum %106, %105 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> + %108 = tosa.rescale %107, %58, %59, %66, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> + %109 = tosa.conv2d %108, %20, %19, %21, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<750x1x32x100xi8>, tensor<750xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x750xi32> + %110 = tosa.rescale %109, %17, %16, %66, %18 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<750xi32>, tensor<750xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> + %111 = tosa.rescale %110, %15, %61, %18, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> + %112 = tosa.rescale %110, %14, %59, %18, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> + %113 = tosa.maximum %112, %111 : (tensor<1x1x148x750xi32>, tensor<1x1x148x750xi32>) -> tensor<1x1x148x750xi32> + %114 = tosa.rescale %113, %58, %59, %66, %13 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> + %115 = tosa.conv2d %114, %12, %11, %13, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x750xi8>, tensor<750x1x1x750xi8>, tensor<750xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x750xi32> + %116 = tosa.rescale %115, %9, %8, %66, %10 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<750xi32>, tensor<750xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> + %117 = tosa.rescale %116, %7, %61, %10, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> + %118 = tosa.rescale %116, %6, %59, %10, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> + %119 = tosa.maximum %118, %117 : (tensor<1x1x148x750xi32>, tensor<1x1x148x750xi32>) -> tensor<1x1x148x750xi32> + %120 = tosa.rescale %119, %58, %59, %66, %5 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> + %121 = tosa.conv2d %120, %4, %3, %5, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x750xi8>, tensor<29x1x1x750xi8>, tensor<29xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x29xi32> + %122 = tosa.rescale %121, %1, %0, %66, %2 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x29xi32>, tensor<29xi32>, tensor<29xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x29xi8> + return %122 : tensor<1x1x148x29xi8> + } +} diff --git a/tests/gold/test_python_api/vww4_128_128_INT8.mlir b/tests/gold/test_python_api/vww4_128_128_INT8.mlir new file mode 100644 index 0000000..0991a35 --- /dev/null +++ b/tests/gold/test_python_api/vww4_128_128_INT8.mlir @@ -0,0 +1,514 @@ +module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor<1x128x128x1xi8>) -> tensor<1x2xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> + %11 = "tosa.const"() <{values = dense<41> : tensor<2xi8>}> : () -> tensor<2xi8> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2xi32>}> : () -> tensor<2xi32> + %13 = "tosa.const"() <{values = dense<-17> : tensor<1xi8>}> : () -> tensor<1xi8> + %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2xi32>}> : () -> tensor<2xi32> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2x1x1x128xi8>}> : () -> tensor<2x1x1x128xi8> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x32xi8>}> : () -> tensor<128x1x1x32xi8> + %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x96xi8>}> : () -> tensor<32x1x1x96xi8> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> + %32 = "tosa.const"() <{values = dense<20> : tensor<1xi8>}> : () -> tensor<1xi8> + %33 = "tosa.const"() <{values = dense<1867675366> : tensor<1xi32>}> : () -> tensor<1xi32> + %34 = "tosa.const"() <{values = dense<1869358422> : tensor<1xi32>}> : () -> tensor<1xi32> + %35 = "tosa.const"() <{values = dense<-23> : tensor<1xi8>}> : () -> tensor<1xi8> + %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> + %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x96xi8>}> : () -> tensor<32x1x1x96xi8> + %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> + %49 = "tosa.const"() <{values = dense<-23> : tensor<1xi8>}> : () -> tensor<1xi8> + %50 = "tosa.const"() <{values = dense<1356240683> : tensor<1xi32>}> : () -> tensor<1xi32> + %51 = "tosa.const"() <{values = dense<2017076441> : tensor<1xi32>}> : () -> tensor<1xi32> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x96xi8>}> : () -> tensor<16x1x1x96xi8> + %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> + %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %66 = "tosa.const"() <{values = dense<-21> : tensor<1xi8>}> : () -> tensor<1xi8> + %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x288xi8>}> : () -> tensor<16x1x1x288xi8> + %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> + %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> + %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> + %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x68xi8>}> : () -> tensor<288x1x1x68xi8> + %77 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> + %78 = "tosa.const"() <{values = dense<2052730416> : tensor<1xi32>}> : () -> tensor<1xi32> + %79 = "tosa.const"() <{values = dense<1366556772> : tensor<1xi32>}> : () -> tensor<1xi32> + %80 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> + %81 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> + %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> + %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %84 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> + %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> + %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x172xi8>}> : () -> tensor<48x1x1x172xi8> + %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> + %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x172xi8>}> : () -> tensor<1x3x3x172xi8> + %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> + %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172x1x1x68xi8>}> : () -> tensor<172x1x1x68xi8> + %95 = "tosa.const"() <{values = dense<-10> : tensor<1xi8>}> : () -> tensor<1xi8> + %96 = "tosa.const"() <{values = dense<1372189797> : tensor<1xi32>}> : () -> tensor<1xi32> + %97 = "tosa.const"() <{values = dense<1887351030> : tensor<1xi32>}> : () -> tensor<1xi32> + %98 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi8>}> : () -> tensor<68xi8> + %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> + %100 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> + %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> + %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68x1x1x172xi8>}> : () -> tensor<68x1x1x172xi8> + %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> + %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x172xi8>}> : () -> tensor<1x3x3x172xi8> + %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> + %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> + %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172x1x1x68xi8>}> : () -> tensor<172x1x1x68xi8> + %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi8>}> : () -> tensor<68xi8> + %112 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> + %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> + %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68x1x1x192xi8>}> : () -> tensor<68x1x1x192xi8> + %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %117 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> + %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> + %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> + %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x52xi8>}> : () -> tensor<192x1x1x52xi8> + %123 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> + %124 = "tosa.const"() <{values = dense<1799263499> : tensor<1xi32>}> : () -> tensor<1xi32> + %125 = "tosa.const"() <{values = dense<1622651996> : tensor<1xi32>}> : () -> tensor<1xi32> + %126 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> + %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi8>}> : () -> tensor<44xi8> + %128 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> + %129 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> + %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44x1x1x268xi8>}> : () -> tensor<44x1x1x268xi8> + %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> + %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x52xi8>}> : () -> tensor<268x1x1x52xi8> + %139 = "tosa.const"() <{values = dense<1549390221> : tensor<1xi32>}> : () -> tensor<1xi32> + %140 = "tosa.const"() <{values = dense<2040440426> : tensor<1xi32>}> : () -> tensor<1xi32> + %141 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> + %142 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> + %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi8>}> : () -> tensor<52xi8> + %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi32>}> : () -> tensor<52xi32> + %145 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> + %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi32>}> : () -> tensor<52xi32> + %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52x1x1x268xi8>}> : () -> tensor<52x1x1x268xi8> + %148 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> + %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x44xi8>}> : () -> tensor<268x1x1x44xi8> + %156 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> + %157 = "tosa.const"() <{values = dense<1767410519> : tensor<1xi32>}> : () -> tensor<1xi32> + %158 = "tosa.const"() <{values = dense<1898895765> : tensor<1xi32>}> : () -> tensor<1xi32> + %159 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> + %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> + %161 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %162 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> + %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> + %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x268xi8>}> : () -> tensor<40x1x1x268xi8> + %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> + %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> + %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> + %172 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x44xi8>}> : () -> tensor<268x1x1x44xi8> + %173 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi8>}> : () -> tensor<44xi8> + %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> + %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> + %176 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44x1x1x152xi8>}> : () -> tensor<44x1x1x152xi8> + %177 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi8>}> : () -> tensor<152xi8> + %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> + %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> + %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x152xi8>}> : () -> tensor<1x3x3x152xi8> + %181 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi8>}> : () -> tensor<152xi8> + %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> + %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> + %184 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152x1x1x32xi8>}> : () -> tensor<152x1x1x32xi8> + %185 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> + %186 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> + %187 = "tosa.const"() <{values = dense<1225590971> : tensor<1xi32>}> : () -> tensor<1xi32> + %188 = "tosa.const"() <{values = dense<2080949659> : tensor<1xi32>}> : () -> tensor<1xi32> + %189 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> + %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> + %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x96xi8>}> : () -> tensor<28x1x1x96xi8> + %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> + %202 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> + %203 = "tosa.const"() <{values = dense<1109216184> : tensor<1xi32>}> : () -> tensor<1xi32> + %204 = "tosa.const"() <{values = dense<1288860604> : tensor<1xi32>}> : () -> tensor<1xi32> + %205 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> + %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> + %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %208 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> + %209 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x96xi8>}> : () -> tensor<28x1x1x96xi8> + %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %213 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %214 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> + %215 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> + %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> + %218 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> + %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %221 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> + %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x28xi8>}> : () -> tensor<32x1x1x28xi8> + %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> + %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x28xi8>}> : () -> tensor<1x3x3x28xi8> + %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> + %229 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %230 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> + %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x16xi8>}> : () -> tensor<28x1x1x16xi8> + %232 = "tosa.const"() <{values = dense<-13> : tensor<1xi8>}> : () -> tensor<1xi8> + %233 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> + %234 = "tosa.const"() <{values = dense<1170608407> : tensor<1xi32>}> : () -> tensor<1xi32> + %235 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %236 = "tosa.const"() <{values = dense<1615754472> : tensor<1xi32>}> : () -> tensor<1xi32> + %237 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> + %238 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> + %239 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %240 = "tosa.const"() <{values = dense<-30> : tensor<1xi8>}> : () -> tensor<1xi8> + %241 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> + %242 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %243 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %244 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> + %245 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x14xi8>}> : () -> tensor<16x1x1x14xi8> + %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi8>}> : () -> tensor<14xi8> + %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> + %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> + %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x14xi8>}> : () -> tensor<1x3x3x14xi8> + %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi8>}> : () -> tensor<14xi8> + %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> + %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> + %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14x1x1x12xi8>}> : () -> tensor<14x1x1x12xi8> + %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi8>}> : () -> tensor<12xi8> + %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %257 = "tosa.const"() <{values = dense<-30> : tensor<1xi8>}> : () -> tensor<1xi8> + %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> + %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x8xi8>}> : () -> tensor<12x1x1x8xi8> + %260 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> + %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %263 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x8xi8>}> : () -> tensor<1x3x3x8xi8> + %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> + %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x4xi8>}> : () -> tensor<8x1x1x4xi8> + %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> + %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %270 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4x1x1x4xi8>}> : () -> tensor<4x1x1x4xi8> + %272 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> + %273 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %275 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x4xi8>}> : () -> tensor<1x3x3x4xi8> + %276 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> + %277 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %278 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> + %279 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4x1x1x8xi8>}> : () -> tensor<4x1x1x8xi8> + %280 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> + %281 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %282 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %283 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %284 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x3x3x1xi8>}> : () -> tensor<8x3x3x1xi8> + %285 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> + %286 = "tosa.const"() <{values = dense<-70> : tensor<1xi8>}> : () -> tensor<1xi8> + %287 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %288 = tosa.conv2d %arg0, %284, %285, %286, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x128x128x1xi8>, tensor<8x3x3x1xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x8xi32> + %289 = tosa.rescale %288, %281, %280, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x8xi8> + %290 = tosa.clamp %289 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x8xi8>) -> tensor<1x64x64x8xi8> + %291 = tosa.conv2d %290, %279, %278, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x8xi8>, tensor<4x1x1x8xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> + %292 = tosa.rescale %291, %277, %276, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> + %293 = tosa.clamp %292 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x4xi8>) -> tensor<1x64x64x4xi8> + %294 = tosa.reshape %275, %9 : (tensor<1x3x3x4xi8>, !tosa.shape<4>) -> tensor<3x3x4x1xi8> + %295 = tosa.depthwise_conv2d %293, %294, %274, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<3x3x4x1xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> + %296 = tosa.rescale %295, %273, %272, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> + %297 = tosa.clamp %296 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x4xi8>) -> tensor<1x64x64x4xi8> + %298 = tosa.conv2d %297, %271, %270, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<4x1x1x4xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> + %299 = tosa.rescale %298, %269, %268, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> + %300 = tosa.conv2d %299, %267, %266, %287, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<8x1x1x4xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x8xi32> + %301 = tosa.rescale %300, %265, %264, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x8xi8> + %302 = tosa.clamp %301 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x8xi8>) -> tensor<1x64x64x8xi8> + %303 = tosa.reshape %263, %8 : (tensor<1x3x3x8xi8>, !tosa.shape<4>) -> tensor<3x3x8x1xi8> + %304 = tosa.depthwise_conv2d %302, %303, %262, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x8xi8>, tensor<3x3x8x1xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x8xi32> + %305 = tosa.rescale %304, %261, %260, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x8xi8> + %306 = tosa.clamp %305 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x8xi8>) -> tensor<1x32x32x8xi8> + %307 = tosa.conv2d %306, %259, %258, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x8xi8>, tensor<12x1x1x8xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x12xi32> + %308 = tosa.rescale %307, %256, %255, %283, %257 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x12xi8> + %309 = tosa.conv2d %308, %254, %253, %257, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x12xi8>, tensor<14x1x1x12xi8>, tensor<14xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x14xi32> + %310 = tosa.rescale %309, %252, %251, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x14xi32>, tensor<14xi32>, tensor<14xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x14xi8> + %311 = tosa.clamp %310 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x14xi8>) -> tensor<1x32x32x14xi8> + %312 = tosa.reshape %250, %7 : (tensor<1x3x3x14xi8>, !tosa.shape<4>) -> tensor<3x3x14x1xi8> + %313 = tosa.depthwise_conv2d %311, %312, %249, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x14xi8>, tensor<3x3x14x1xi8>, tensor<14xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x14xi32> + %314 = tosa.rescale %313, %248, %247, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x14xi32>, tensor<14xi32>, tensor<14xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x14xi8> + %315 = tosa.clamp %314 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x14xi8>) -> tensor<1x32x32x14xi8> + %316 = tosa.conv2d %315, %246, %245, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x14xi8>, tensor<16x1x1x14xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x16xi32> + %317 = tosa.rescale %316, %243, %242, %283, %244 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x16xi8> + %318 = tosa.pad %308, %241, %240 : (tensor<1x32x32x12xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x32x32x16xi8> + %319 = tosa.rescale %318, %239, %238, %257, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x32x32x16xi32> + %320 = tosa.rescale %317, %239, %237, %244, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x32x32x16xi32> + %321 = tosa.rescale %320, %236, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x32x32x16xi32> + %322 = tosa.add %319, %321 : (tensor<1x32x32x16xi32>, tensor<1x32x32x16xi32>) -> tensor<1x32x32x16xi32> + %323 = tosa.rescale %322, %234, %233, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x16xi8> + %324 = tosa.conv2d %323, %231, %230, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x16xi8>, tensor<28x1x1x16xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x28xi32> + %325 = tosa.rescale %324, %229, %228, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x28xi8> + %326 = tosa.clamp %325 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x28xi8>) -> tensor<1x32x32x28xi8> + %327 = tosa.reshape %227, %6 : (tensor<1x3x3x28xi8>, !tosa.shape<4>) -> tensor<3x3x28x1xi8> + %328 = tosa.depthwise_conv2d %326, %327, %226, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x28xi8>, tensor<3x3x28x1xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> + %329 = tosa.rescale %328, %225, %224, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> + %330 = tosa.clamp %329 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x28xi8>) -> tensor<1x16x16x28xi8> + %331 = tosa.conv2d %330, %223, %222, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x28xi8>, tensor<32x1x1x28xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x32xi32> + %332 = tosa.rescale %331, %220, %219, %283, %221 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> + %333 = tosa.conv2d %332, %218, %217, %221, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> + %334 = tosa.rescale %333, %216, %215, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> + %335 = tosa.clamp %334 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> + %336 = tosa.reshape %214, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %337 = tosa.depthwise_conv2d %335, %336, %213, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> + %338 = tosa.rescale %337, %212, %211, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> + %339 = tosa.clamp %338 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> + %340 = tosa.conv2d %339, %210, %209, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<28x1x1x96xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> + %341 = tosa.rescale %340, %207, %206, %283, %208 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> + %342 = tosa.pad %341, %241, %205 : (tensor<1x16x16x28xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x16x16x32xi8> + %343 = tosa.rescale %332, %239, %238, %221, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %344 = tosa.rescale %342, %239, %237, %208, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %345 = tosa.rescale %344, %204, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %346 = tosa.add %343, %345 : (tensor<1x16x16x32xi32>, tensor<1x16x16x32xi32>) -> tensor<1x16x16x32xi32> + %347 = tosa.rescale %346, %203, %233, %283, %202 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> + %348 = tosa.conv2d %347, %201, %200, %202, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> + %349 = tosa.rescale %348, %199, %198, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> + %350 = tosa.clamp %349 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> + %351 = tosa.reshape %197, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %352 = tosa.depthwise_conv2d %350, %351, %196, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> + %353 = tosa.rescale %352, %195, %194, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> + %354 = tosa.clamp %353 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> + %355 = tosa.conv2d %354, %193, %192, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<28x1x1x96xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> + %356 = tosa.rescale %355, %191, %190, %283, %208 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> + %357 = tosa.pad %356, %241, %189 : (tensor<1x16x16x28xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x16x16x32xi8> + %358 = tosa.rescale %347, %239, %238, %202, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %359 = tosa.rescale %357, %239, %237, %208, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %360 = tosa.rescale %359, %188, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x16x16x32xi32> + %361 = tosa.add %358, %360 : (tensor<1x16x16x32xi32>, tensor<1x16x16x32xi32>) -> tensor<1x16x16x32xi32> + %362 = tosa.rescale %361, %187, %186, %283, %185 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> + %363 = tosa.conv2d %362, %184, %183, %185, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<152x1x1x32xi8>, tensor<152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x152xi32> + %364 = tosa.rescale %363, %182, %181, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x152xi32>, tensor<152xi32>, tensor<152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x152xi8> + %365 = tosa.clamp %364 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x152xi8>) -> tensor<1x16x16x152xi8> + %366 = tosa.reshape %180, %4 : (tensor<1x3x3x152xi8>, !tosa.shape<4>) -> tensor<3x3x152x1xi8> + %367 = tosa.depthwise_conv2d %365, %366, %179, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x152xi8>, tensor<3x3x152x1xi8>, tensor<152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x152xi32> + %368 = tosa.rescale %367, %178, %177, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x152xi32>, tensor<152xi32>, tensor<152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x152xi8> + %369 = tosa.clamp %368 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x152xi8>) -> tensor<1x8x8x152xi8> + %370 = tosa.conv2d %369, %176, %175, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x152xi8>, tensor<44x1x1x152xi8>, tensor<44xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x44xi32> + %371 = tosa.rescale %370, %174, %173, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<44xi32>, tensor<44xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> + %372 = tosa.conv2d %371, %172, %171, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x44xi8>, tensor<268x1x1x44xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %373 = tosa.rescale %372, %170, %169, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %374 = tosa.clamp %373 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %375 = tosa.reshape %168, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> + %376 = tosa.depthwise_conv2d %374, %375, %167, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %377 = tosa.rescale %376, %166, %165, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %378 = tosa.clamp %377 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %379 = tosa.conv2d %378, %164, %163, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<40x1x1x268xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x40xi32> + %380 = tosa.rescale %379, %161, %160, %283, %162 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x40xi8> + %381 = tosa.pad %380, %241, %159 : (tensor<1x8x8x40xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x44xi8> + %382 = tosa.rescale %371, %239, %238, %232, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x44xi32> + %383 = tosa.rescale %381, %239, %237, %162, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x44xi32> + %384 = tosa.rescale %383, %158, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x44xi32> + %385 = tosa.add %382, %384 : (tensor<1x8x8x44xi32>, tensor<1x8x8x44xi32>) -> tensor<1x8x8x44xi32> + %386 = tosa.rescale %385, %157, %186, %283, %156 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> + %387 = tosa.conv2d %386, %155, %154, %156, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x44xi8>, tensor<268x1x1x44xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %388 = tosa.rescale %387, %153, %152, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %389 = tosa.clamp %388 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %390 = tosa.reshape %151, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> + %391 = tosa.depthwise_conv2d %389, %390, %150, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %392 = tosa.rescale %391, %149, %148, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %393 = tosa.clamp %392 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %394 = tosa.conv2d %393, %147, %146, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<52x1x1x268xi8>, tensor<52xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x52xi32> + %395 = tosa.rescale %394, %144, %143, %283, %145 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<52xi32>, tensor<52xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> + %396 = tosa.pad %386, %142, %141 : (tensor<1x8x8x44xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x52xi8> + %397 = tosa.rescale %396, %239, %238, %156, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %398 = tosa.rescale %395, %239, %237, %145, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %399 = tosa.rescale %398, %140, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %400 = tosa.add %397, %399 : (tensor<1x8x8x52xi32>, tensor<1x8x8x52xi32>) -> tensor<1x8x8x52xi32> + %401 = tosa.rescale %400, %139, %186, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> + %402 = tosa.conv2d %401, %138, %137, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x52xi8>, tensor<268x1x1x52xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %403 = tosa.rescale %402, %136, %135, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %404 = tosa.clamp %403 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %405 = tosa.reshape %134, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> + %406 = tosa.depthwise_conv2d %404, %405, %133, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> + %407 = tosa.rescale %406, %132, %131, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> + %408 = tosa.clamp %407 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> + %409 = tosa.conv2d %408, %130, %129, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<44x1x1x268xi8>, tensor<44xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x44xi32> + %410 = tosa.rescale %409, %128, %127, %283, %145 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<44xi32>, tensor<44xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> + %411 = tosa.pad %410, %142, %126 : (tensor<1x8x8x44xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x52xi8> + %412 = tosa.rescale %401, %239, %238, %232, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %413 = tosa.rescale %411, %239, %237, %145, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %414 = tosa.rescale %413, %125, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x52xi32> + %415 = tosa.add %412, %414 : (tensor<1x8x8x52xi32>, tensor<1x8x8x52xi32>) -> tensor<1x8x8x52xi32> + %416 = tosa.rescale %415, %124, %186, %283, %123 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> + %417 = tosa.conv2d %416, %122, %121, %123, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x52xi8>, tensor<192x1x1x52xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x192xi32> + %418 = tosa.rescale %417, %120, %119, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x192xi8> + %419 = tosa.clamp %418 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x192xi8>) -> tensor<1x8x8x192xi8> + %420 = tosa.reshape %118, %2 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> + %421 = tosa.depthwise_conv2d %419, %420, %117, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x192xi32> + %422 = tosa.rescale %421, %116, %115, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x192xi8> + %423 = tosa.clamp %422 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x192xi8>) -> tensor<1x8x8x192xi8> + %424 = tosa.conv2d %423, %114, %113, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x192xi8>, tensor<68x1x1x192xi8>, tensor<68xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x68xi32> + %425 = tosa.rescale %424, %112, %111, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<68xi32>, tensor<68xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> + %426 = tosa.conv2d %425, %110, %109, %287, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<172x1x1x68xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> + %427 = tosa.rescale %426, %108, %107, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> + %428 = tosa.clamp %427 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> + %429 = tosa.reshape %106, %1 : (tensor<1x3x3x172xi8>, !tosa.shape<4>) -> tensor<3x3x172x1xi8> + %430 = tosa.depthwise_conv2d %428, %429, %105, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<3x3x172x1xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> + %431 = tosa.rescale %430, %104, %103, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> + %432 = tosa.clamp %431 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> + %433 = tosa.conv2d %432, %102, %101, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<68x1x1x172xi8>, tensor<68xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x68xi32> + %434 = tosa.rescale %433, %99, %98, %283, %100 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<68xi32>, tensor<68xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> + %435 = tosa.rescale %425, %239, %237, %287, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %436 = tosa.rescale %435, %97, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %437 = tosa.rescale %434, %239, %238, %100, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %438 = tosa.add %436, %437 : (tensor<1x8x8x68xi32>, tensor<1x8x8x68xi32>) -> tensor<1x8x8x68xi32> + %439 = tosa.rescale %438, %96, %186, %283, %95 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> + %440 = tosa.conv2d %439, %94, %93, %95, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<172x1x1x68xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> + %441 = tosa.rescale %440, %92, %91, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> + %442 = tosa.clamp %441 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> + %443 = tosa.reshape %90, %1 : (tensor<1x3x3x172xi8>, !tosa.shape<4>) -> tensor<3x3x172x1xi8> + %444 = tosa.depthwise_conv2d %442, %443, %89, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<3x3x172x1xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> + %445 = tosa.rescale %444, %88, %87, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> + %446 = tosa.clamp %445 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> + %447 = tosa.conv2d %446, %86, %85, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<48x1x1x172xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x48xi32> + %448 = tosa.rescale %447, %83, %82, %283, %84 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x48xi8> + %449 = tosa.pad %448, %81, %80 : (tensor<1x8x8x48xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x68xi8> + %450 = tosa.rescale %439, %239, %238, %95, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %451 = tosa.rescale %449, %239, %237, %84, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %452 = tosa.rescale %451, %79, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x68xi32> + %453 = tosa.add %450, %452 : (tensor<1x8x8x68xi32>, tensor<1x8x8x68xi32>) -> tensor<1x8x8x68xi32> + %454 = tosa.rescale %453, %78, %186, %283, %77 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> + %455 = tosa.conv2d %454, %76, %75, %77, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<288x1x1x68xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x288xi32> + %456 = tosa.rescale %455, %74, %73, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x288xi8> + %457 = tosa.clamp %456 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x288xi8>) -> tensor<1x8x8x288xi8> + %458 = tosa.reshape %72, %0 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> + %459 = tosa.depthwise_conv2d %457, %458, %71, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x288xi32> + %460 = tosa.rescale %459, %70, %69, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x288xi8> + %461 = tosa.clamp %460 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x288xi8>) -> tensor<1x4x4x288xi8> + %462 = tosa.conv2d %461, %68, %67, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x288xi8>, tensor<16x1x1x288xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x16xi32> + %463 = tosa.rescale %462, %65, %64, %283, %66 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> + %464 = tosa.conv2d %463, %63, %62, %66, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %465 = tosa.rescale %464, %61, %60, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %466 = tosa.clamp %465 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %467 = tosa.reshape %59, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %468 = tosa.depthwise_conv2d %466, %467, %58, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %469 = tosa.rescale %468, %57, %56, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %470 = tosa.clamp %469 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %471 = tosa.conv2d %470, %55, %54, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<16x1x1x96xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x16xi32> + %472 = tosa.rescale %471, %53, %52, %283, %95 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> + %473 = tosa.rescale %463, %239, %237, %66, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x16xi32> + %474 = tosa.rescale %473, %51, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x4x4x16xi32> + %475 = tosa.rescale %472, %239, %238, %95, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x16xi32> + %476 = tosa.add %474, %475 : (tensor<1x4x4x16xi32>, tensor<1x4x4x16xi32>) -> tensor<1x4x4x16xi32> + %477 = tosa.rescale %476, %50, %186, %283, %49 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> + %478 = tosa.conv2d %477, %48, %47, %49, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %479 = tosa.rescale %478, %46, %45, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %480 = tosa.clamp %479 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %481 = tosa.reshape %44, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %482 = tosa.depthwise_conv2d %480, %481, %43, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %483 = tosa.rescale %482, %42, %41, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %484 = tosa.clamp %483 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %485 = tosa.conv2d %484, %40, %39, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<32x1x1x96xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x32xi32> + %486 = tosa.rescale %485, %38, %37, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> + %487 = tosa.pad %477, %36, %35 : (tensor<1x4x4x16xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x4x4x32xi8> + %488 = tosa.rescale %487, %239, %238, %49, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x32xi32> + %489 = tosa.rescale %486, %239, %237, %287, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x32xi32> + %490 = tosa.rescale %489, %34, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x4x4x32xi32> + %491 = tosa.add %488, %490 : (tensor<1x4x4x32xi32>, tensor<1x4x4x32xi32>) -> tensor<1x4x4x32xi32> + %492 = tosa.rescale %491, %33, %186, %283, %32 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> + %493 = tosa.conv2d %492, %31, %30, %32, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %494 = tosa.rescale %493, %29, %28, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %495 = tosa.clamp %494 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %496 = tosa.reshape %27, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> + %497 = tosa.depthwise_conv2d %495, %496, %26, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> + %498 = tosa.rescale %497, %25, %24, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> + %499 = tosa.clamp %498 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> + %500 = tosa.conv2d %499, %23, %22, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<32x1x1x96xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x32xi32> + %501 = tosa.rescale %500, %21, %20, %283, %202 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> + %502 = tosa.conv2d %501, %19, %18, %202, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x32xi8>, tensor<128x1x1x32xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x128xi32> + %503 = tosa.rescale %502, %17, %16, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x128xi8> + %504 = tosa.clamp %503 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x128xi8>) -> tensor<1x4x4x128xi8> + %505 = tosa.avg_pool2d %504, %287, %287 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x4x4x128xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi8> + %506 = tosa.conv2d %505, %15, %14, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<2x1x1x128xi8>, tensor<2xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x2xi32> + %507 = tosa.rescale %506, %12, %11, %283, %13 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x2xi32>, tensor<2xi32>, tensor<2xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x2xi8> + %508 = tosa.reshape %507, %10 : (tensor<1x1x1x2xi8>, !tosa.shape<2>) -> tensor<1x2xi8> + return %508 : tensor<1x2xi8> + } +} diff --git a/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir b/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir new file mode 100644 index 0000000..6457b20 --- /dev/null +++ b/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir @@ -0,0 +1,197 @@ +module attributes {tf_saved_model.semantics, tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "2.3.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { + func.func @main(%arg0: tensor {tf_saved_model.index_path = ["input"]}) -> (tensor {tf_saved_model.index_path = ["yolo_output_1"]}, tensor {tf_saved_model.index_path = ["yolo_output_0"]}) attributes {tf.entry_function = {inputs = "serving_default_input:0", outputs = "StatefulPartitionedCall:1,StatefulPartitionedCall:0"}, tf_saved_model.exported_names = ["serving_default"]} { + %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<5xindex>} : () -> !tosa.shape<5> + %1 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi8>}> : () -> tensor<255xi8> + %2 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> + %3 = "tosa.const"() <{values = dense<67> : tensor<1xi8>}> : () -> tensor<1xi8> + %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> + %5 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255x1x1x256xi8>}> : () -> tensor<255x1x1x256xi8> + %6 = "tosa.const"() <{values = dense<-100> : tensor<1xi8>}> : () -> tensor<1xi8> + %7 = "tosa.const"() <{values = dense<2146540981> : tensor<1xi32>}> : () -> tensor<1xi32> + %8 = "tosa.const"() <{values = dense<1717232810> : tensor<1xi32>}> : () -> tensor<1xi32> + %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %10 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %11 = "tosa.const"() <{values = dense<14> : tensor<1xi8>}> : () -> tensor<1xi8> + %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x3x3x384xi8>}> : () -> tensor<256x3x3x384xi8> + %14 = tosa.const_shape {values = dense_resource<__elided__> : tensor<5xindex>} : () -> !tosa.shape<5> + %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi8>}> : () -> tensor<255xi8> + %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> + %17 = "tosa.const"() <{values = dense<57> : tensor<1xi8>}> : () -> tensor<1xi8> + %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> + %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255x1x1x512xi8>}> : () -> tensor<255x1x1x512xi8> + %20 = "tosa.const"() <{values = dense<-102> : tensor<1xi8>}> : () -> tensor<1xi8> + %21 = "tosa.const"() <{values = dense<2045027926> : tensor<1xi32>}> : () -> tensor<1xi32> + %22 = "tosa.const"() <{values = dense<1636022365> : tensor<1xi32>}> : () -> tensor<1xi32> + %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> + %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %25 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> + %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x3x3x256xi8>}> : () -> tensor<512x3x3x256xi8> + %28 = tosa.const_shape {values = dense<3> : tensor<2xindex>} : () -> !tosa.shape<2> + %29 = tosa.const_shape {values = dense<1> : tensor<2xindex>} : () -> !tosa.shape<2> + %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> + %31 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> + %32 = "tosa.const"() <{values = dense<1867790575> : tensor<1xi32>}> : () -> tensor<1xi32> + %33 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> + %34 = "tosa.const"() <{values = dense<1494232483> : tensor<1xi32>}> : () -> tensor<1xi32> + %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %37 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> + %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x256xi8>}> : () -> tensor<128x1x1x256xi8> + %40 = "tosa.const"() <{values = dense<-95> : tensor<1xi8>}> : () -> tensor<1xi8> + %41 = "tosa.const"() <{values = dense<1153990886> : tensor<1xi32>}> : () -> tensor<1xi32> + %42 = "tosa.const"() <{values = dense<1846385445> : tensor<1xi32>}> : () -> tensor<1xi32> + %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %45 = "tosa.const"() <{values = dense<24> : tensor<1xi8>}> : () -> tensor<1xi8> + %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x1024xi8>}> : () -> tensor<256x1x1x1024xi8> + %48 = "tosa.const"() <{values = dense<-98> : tensor<1xi8>}> : () -> tensor<1xi8> + %49 = "tosa.const"() <{values = dense<1112539429> : tensor<1xi32>}> : () -> tensor<1xi32> + %50 = "tosa.const"() <{values = dense<1780063113> : tensor<1xi32>}> : () -> tensor<1xi32> + %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi8>}> : () -> tensor<1024xi8> + %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi32>}> : () -> tensor<1024xi32> + %53 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> + %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi32>}> : () -> tensor<1024xi32> + %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024x3x3x512xi8>}> : () -> tensor<1024x3x3x512xi8> + %56 = "tosa.const"() <{values = dense<-99> : tensor<1xi8>}> : () -> tensor<1xi8> + %57 = "tosa.const"() <{values = dense<1090607686> : tensor<1xi32>}> : () -> tensor<1xi32> + %58 = "tosa.const"() <{values = dense<1744972324> : tensor<1xi32>}> : () -> tensor<1xi32> + %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> + %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %61 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> + %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> + %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x3x3x256xi8>}> : () -> tensor<512x3x3x256xi8> + %64 = "tosa.const"() <{values = dense<-108> : tensor<1xi8>}> : () -> tensor<1xi8> + %65 = "tosa.const"() <{values = dense<1827454564> : tensor<1xi32>}> : () -> tensor<1xi32> + %66 = "tosa.const"() <{values = dense<1461963673> : tensor<1xi32>}> : () -> tensor<1xi32> + %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> + %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %69 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> + %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> + %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x3x3x128xi8>}> : () -> tensor<256x3x3x128xi8> + %72 = "tosa.const"() <{values = dense<-93> : tensor<1xi8>}> : () -> tensor<1xi8> + %73 = "tosa.const"() <{values = dense<1199308892> : tensor<1xi32>}> : () -> tensor<1xi32> + %74 = "tosa.const"() <{values = dense<1918894256> : tensor<1xi32>}> : () -> tensor<1xi32> + %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> + %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %77 = "tosa.const"() <{values = dense<28> : tensor<1xi8>}> : () -> tensor<1xi8> + %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> + %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x3x3x64xi8>}> : () -> tensor<128x3x3x64xi8> + %80 = "tosa.const"() <{values = dense<-85> : tensor<1xi8>}> : () -> tensor<1xi8> + %81 = "tosa.const"() <{values = dense<1360529732> : tensor<1xi32>}> : () -> tensor<1xi32> + %82 = "tosa.const"() <{values = dense<1088423802> : tensor<1xi32>}> : () -> tensor<1xi32> + %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> + %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %85 = "tosa.const"() <{values = dense<44> : tensor<1xi8>}> : () -> tensor<1xi8> + %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> + %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x3x3x32xi8>}> : () -> tensor<64x3x3x32xi8> + %88 = "tosa.const"() <{values = dense<-74> : tensor<1xi8>}> : () -> tensor<1xi8> + %89 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> + %90 = "tosa.const"() <{values = dense<1564368468> : tensor<1xi32>}> : () -> tensor<1xi32> + %91 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> + %92 = "tosa.const"() <{values = dense<1251494793> : tensor<1xi32>}> : () -> tensor<1xi32> + %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> + %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %95 = "tosa.const"() <{values = dense<58> : tensor<1xi8>}> : () -> tensor<1xi8> + %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> + %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x16xi8>}> : () -> tensor<32x3x3x16xi8> + %98 = "tosa.const"() <{values = dense<-106> : tensor<1xi8>}> : () -> tensor<1xi8> + %99 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> + %100 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> + %101 = "tosa.const"() <{values = dense<1905935579> : tensor<1xi32>}> : () -> tensor<1xi32> + %102 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> + %103 = "tosa.const"() <{values = dense<1524748486> : tensor<1xi32>}> : () -> tensor<1xi32> + %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> + %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %106 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> + %107 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> + %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x3x3x3xi8>}> : () -> tensor<16x3x3x3xi8> + %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> + %110 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> + %111 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> + %112 = tosa.conv2d %arg0, %108, %109, %110, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<16x3x3x3xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %113 = tosa.rescale %112, %105, %104, %107, %106 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %114 = tosa.rescale %113, %103, %102, %106, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %115 = tosa.rescale %113, %101, %100, %106, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %116 = tosa.maximum %115, %114 : (tensor, tensor) -> tensor + %117 = tosa.rescale %116, %99, %100, %107, %98 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %118 = tosa.max_pool2d %117 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %119 = tosa.conv2d %118, %97, %96, %98, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<32x3x3x16xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %120 = tosa.rescale %119, %94, %93, %107, %95 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %121 = tosa.rescale %120, %92, %91, %95, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %122 = tosa.rescale %120, %90, %89, %95, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %123 = tosa.maximum %122, %121 : (tensor, tensor) -> tensor + %124 = tosa.rescale %123, %99, %100, %107, %88 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %125 = tosa.max_pool2d %124 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %126 = tosa.conv2d %125, %87, %86, %88, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<64x3x3x32xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %127 = tosa.rescale %126, %84, %83, %107, %85 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %128 = tosa.rescale %127, %82, %91, %85, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %129 = tosa.rescale %127, %81, %89, %85, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %130 = tosa.maximum %129, %128 : (tensor, tensor) -> tensor + %131 = tosa.rescale %130, %99, %100, %107, %80 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %132 = tosa.max_pool2d %131 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %133 = tosa.conv2d %132, %79, %78, %80, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x3x3x64xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %134 = tosa.rescale %133, %76, %75, %107, %77 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %135 = tosa.rescale %134, %74, %102, %77, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %136 = tosa.rescale %134, %73, %89, %77, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %137 = tosa.maximum %136, %135 : (tensor, tensor) -> tensor + %138 = tosa.rescale %137, %99, %100, %107, %72 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %139 = tosa.max_pool2d %138 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %140 = tosa.conv2d %139, %71, %70, %72, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x3x3x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %141 = tosa.rescale %140, %68, %67, %107, %69 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %142 = tosa.rescale %141, %66, %102, %69, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %143 = tosa.rescale %141, %65, %100, %69, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %144 = tosa.maximum %143, %142 : (tensor, tensor) -> tensor + %145 = tosa.rescale %144, %99, %100, %107, %64 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %146 = tosa.max_pool2d %145 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %147 = tosa.conv2d %146, %63, %62, %64, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<512x3x3x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %148 = tosa.rescale %147, %60, %59, %107, %61 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %149 = tosa.rescale %148, %58, %102, %61, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %150 = tosa.rescale %148, %57, %89, %61, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %151 = tosa.maximum %150, %149 : (tensor, tensor) -> tensor + %152 = tosa.rescale %151, %99, %100, %107, %56 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %153 = tosa.max_pool2d %152 {kernel = array, pad = array, stride = array} : (tensor) -> tensor + %154 = tosa.conv2d %153, %55, %54, %56, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<1024x3x3x512xi8>, tensor<1024xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %155 = tosa.rescale %154, %52, %51, %107, %53 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1024xi32>, tensor<1024xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %156 = tosa.rescale %155, %50, %102, %53, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %157 = tosa.rescale %155, %49, %89, %53, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %158 = tosa.maximum %157, %156 : (tensor, tensor) -> tensor + %159 = tosa.rescale %158, %99, %100, %107, %48 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %160 = tosa.conv2d %159, %47, %46, %48, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x1x1x1024xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %161 = tosa.rescale %160, %44, %43, %107, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %162 = tosa.rescale %161, %42, %102, %45, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %163 = tosa.rescale %161, %41, %89, %45, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %164 = tosa.maximum %163, %162 : (tensor, tensor) -> tensor + %165 = tosa.rescale %164, %99, %100, %107, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %166 = tosa.conv2d %165, %39, %38, %40, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x256xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %167 = tosa.rescale %166, %36, %35, %107, %37 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %168 = tosa.rescale %167, %34, %33, %37, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %169 = tosa.rescale %167, %32, %31, %37, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %170 = tosa.maximum %169, %168 : (tensor, tensor) -> tensor + %171 = tosa.rescale %170, %99, %100, %107, %64 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %172 = tosa.resize %171, %30, %29, %28 {mode = "NEAREST_NEIGHBOR"} : (tensor, !tosa.shape<4>, !tosa.shape<2>, !tosa.shape<2>) -> tensor + %173 = tosa.concat %172, %145 {axis = 3 : i32} : (tensor, tensor) -> tensor + %174 = tosa.conv2d %165, %27, %26, %40, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<512x3x3x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %175 = tosa.rescale %174, %24, %23, %107, %25 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %176 = tosa.rescale %175, %22, %102, %25, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %177 = tosa.rescale %175, %21, %100, %25, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %178 = tosa.maximum %177, %176 : (tensor, tensor) -> tensor + %179 = tosa.rescale %178, %99, %100, %107, %20 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %180 = tosa.conv2d %179, %19, %18, %20, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<255x1x1x512xi8>, tensor<255xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %181 = tosa.rescale %180, %16, %15, %107, %17 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<255xi32>, tensor<255xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %182 = tosa.reshape %181, %14 : (tensor, !tosa.shape<5>) -> tensor + %183 = tosa.conv2d %173, %13, %12, %64, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x3x3x384xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %184 = tosa.rescale %183, %10, %9, %107, %11 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %185 = tosa.rescale %184, %8, %102, %11, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %186 = tosa.rescale %184, %7, %100, %11, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor + %187 = tosa.maximum %186, %185 : (tensor, tensor) -> tensor + %188 = tosa.rescale %187, %99, %100, %107, %6 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %189 = tosa.conv2d %188, %5, %4, %6, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<255x1x1x256xi8>, tensor<255xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor + %190 = tosa.rescale %189, %2, %1, %107, %3 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<255xi32>, tensor<255xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor + %191 = tosa.reshape %190, %0 : (tensor, !tosa.shape<5>) -> tensor + return %191, %182 : tensor, tensor + } +} -- GitLab From 7c54c60e9c7d199a6a3e632ab6b014e89acf6218 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Thu, 10 Jul 2025 12:23:47 +0100 Subject: [PATCH 3/9] docs(tests): document CLI and Python API test suites - Add overview of test coverage and installation requirements - Details of CLI test definitions, execution commands, and how to add new CLI tests - Details of Python API test definitions, golden file locations, execution commands, and how to add new API tests Signed-off-by: Deeptanshu Sekhri --- tests/README.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tests/README.md diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..09ebd5b --- /dev/null +++ b/tests/README.md @@ -0,0 +1,99 @@ + + +# TOSA Converter for TFLite Test Suite + +This document summarises the test coverage for the tosa-converter-for-tflite project. + +## Requirements to run Tests + +- Python >= 3.9 +- pytest >= 7.0 +- hjson >= 3.0 + +Install dependencies with: + +```bash +pip install pytest==8.4.1 hjson==3.1.0 tensorflow==2.19.0 +``` + +--- + +## CLI Tests + +The CLI test suite verifies that TFLite models provided as files or through stdin are correctly converted to TOSA MLIR, respecting both output formats (`--bytecode` and `--text`). + +### CLI Test Definition + +CLI tests are defined in `tests/test_cli.hjson` and consumed by `tests/test_cli.py`. + +### Run CLI Tests + +```bash +pytest -v tests/test_cli.py --log-cli-level=DEBUG +``` + +### Adding a CLI Test + +To add a new CLI test, append an object to `tests/test_cli.hjson`. For example, to verify that `--text` without `-o` writes MLIR text to `stdout`: + +```hjson +{ + name: text_to_stdout + description: "Emit MLIR textual form to stdout when --text is given" + args: [ + "--text" + "{model}" + ] + stdin: null + expect_success: true + out_fname: null +} +``` + +--- + +## Python API Tests + +The Python API test suite exercises the `tflite_flatbuffer_to_tosa_mlir` wrapper and tests: + +- **File based** and **stream based** conversions +- **Bytecode** and **text** output format generation options +- **Regression** of MLIR textual output against golden files + +### Python API Test Definition + +- **Model specs** live in `tests/test_python_api_models.hjson` +- **Test script** is `tests/test_python_api.py` +- **Golden textual MLIR files** for text regression are under `tests/gold/test_python_api/*.mlir` + +### Run Python API Tests + +```bash +TOSA_TEST_ELIDE=1 pytest tests/test_python_api.py -v --log-cli-level=DEBUG +``` + +### Adding a Python API Test + +1. **Add a new model spec** to `tests/test_python_api_models.hjson`: + + ```hjson + { + name: "my_new_model" + class: "MyModelClass" + input_shape: [128, 128, 3] + } + ``` + +2. **Provide a golden MLIR** for text regression: + Place `my_new_model.mlir` under `tests/gold/test_python_api/`, which is the expected textual output. + +3. **(Optional)** Extend `tests/test_python_api.py` with additional tests: + + ```python + def test_some_new_behavior(...): + ... + ``` -- GitLab From 2ab7794e9a8658ab44aaf450a605e04b2cc1fafb Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Thu, 10 Jul 2025 12:38:05 +0100 Subject: [PATCH 4/9] chore(gitignore): update ignore patterns for generated MLIR directory Signed-off-by: Deeptanshu Sekhri --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0bc4134..2a47e77 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /build __pycache__ *.egg-info +/tests/generated/ -- GitLab From 0d933acdd5946134e9f62222642e14f64ab62032 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Thu, 10 Jul 2025 12:40:17 +0100 Subject: [PATCH 5/9] chore(pytest): add `python_api` and `slow` markers in setup.cfg - Register `python_api` marker for Python API tests - Register `slow` marker for longer-running tests Signed-off-by: Deeptanshu Sekhri --- setup.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.cfg b/setup.cfg index 5d3e858..98e793f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,4 +21,6 @@ python_files = test_*.py norecursedirs = external markers = cli: marks tests of the command-line interface + python_api: marks tests of the Python API pre_commit: marks tests to be run in pre-commit + slow: marks tests that take more time to run -- GitLab From e1e62663d4519eacd74f124e2bf21b74275f3949 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Tue, 15 Jul 2025 16:07:08 +0100 Subject: [PATCH 6/9] cleanup: removing regression tests Signed-off-by: Deeptanshu Sekhri --- .gitignore | 1 - tests/README.md | 9 +- tests/gold/test_python_api/ad_small_int8.mlir | 84 -- .../gold/test_python_api/cnn_s_quantized.mlir | 120 --- .../gold/test_python_api/dnn_s_quantized.mlir | 114 -- .../ds_cnn_s_quantized_int16.mlir | 125 --- .../efficientnet_lite0_224.mlir | 528 ---------- tests/gold/test_python_api/har_int8.mlir | 117 --- .../gold/test_python_api/kws_micronet_s.mlir | 103 -- ...enet_v2_1.0_224_quantized_1_default_1.mlir | 427 -------- .../ssd_mobilenet_v3_int8.mlir | 993 ------------------ .../tiny_wav2letter_pruned_int8.mlir | 128 --- .../test_python_api/vww4_128_128_INT8.mlir | 514 --------- ...yolov3_tiny_int8_pruned_backbone_only.mlir | 197 ---- tests/test_python_api.py | 59 +- 15 files changed, 3 insertions(+), 3516 deletions(-) delete mode 100644 tests/gold/test_python_api/ad_small_int8.mlir delete mode 100644 tests/gold/test_python_api/cnn_s_quantized.mlir delete mode 100644 tests/gold/test_python_api/dnn_s_quantized.mlir delete mode 100644 tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir delete mode 100644 tests/gold/test_python_api/efficientnet_lite0_224.mlir delete mode 100644 tests/gold/test_python_api/har_int8.mlir delete mode 100644 tests/gold/test_python_api/kws_micronet_s.mlir delete mode 100644 tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir delete mode 100644 tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir delete mode 100644 tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir delete mode 100644 tests/gold/test_python_api/vww4_128_128_INT8.mlir delete mode 100644 tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir diff --git a/.gitignore b/.gitignore index 2a47e77..0bc4134 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,3 @@ /build __pycache__ *.egg-info -/tests/generated/ diff --git a/tests/README.md b/tests/README.md index 09ebd5b..099dc15 100644 --- a/tests/README.md +++ b/tests/README.md @@ -62,18 +62,16 @@ The Python API test suite exercises the `tflite_flatbuffer_to_tosa_mlir` wrapper - **File based** and **stream based** conversions - **Bytecode** and **text** output format generation options -- **Regression** of MLIR textual output against golden files ### Python API Test Definition - **Model specs** live in `tests/test_python_api_models.hjson` - **Test script** is `tests/test_python_api.py` -- **Golden textual MLIR files** for text regression are under `tests/gold/test_python_api/*.mlir` ### Run Python API Tests ```bash -TOSA_TEST_ELIDE=1 pytest tests/test_python_api.py -v --log-cli-level=DEBUG +pytest tests/test_python_api.py -v --log-cli-level=DEBUG ``` ### Adding a Python API Test @@ -88,10 +86,7 @@ TOSA_TEST_ELIDE=1 pytest tests/test_python_api.py -v --log-cli-level=DEBUG } ``` -2. **Provide a golden MLIR** for text regression: - Place `my_new_model.mlir` under `tests/gold/test_python_api/`, which is the expected textual output. - -3. **(Optional)** Extend `tests/test_python_api.py` with additional tests: +2. **(Optional)** Extend `tests/test_python_api.py` with additional tests: ```python def test_some_new_behavior(...): diff --git a/tests/gold/test_python_api/ad_small_int8.mlir b/tests/gold/test_python_api/ad_small_int8.mlir deleted file mode 100644 index 8794d9e..0000000 --- a/tests/gold/test_python_api/ad_small_int8.mlir +++ /dev/null @@ -1,84 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x32x32x1xi8>) -> tensor<1x8xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %5 = "tosa.const"() <{values = dense<41> : tensor<8xi8>}> : () -> tensor<8xi8> - %6 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %7 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> - %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x276xi8>}> : () -> tensor<8x1x1x276xi8> - %10 = "tosa.const"() <{values = dense<42> : tensor<276xi8>}> : () -> tensor<276xi8> - %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276x1x1x276xi8>}> : () -> tensor<276x1x1x276xi8> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi8>}> : () -> tensor<276xi8> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x276xi8>}> : () -> tensor<1x3x3x276xi8> - %16 = "tosa.const"() <{values = dense<41> : tensor<276xi8>}> : () -> tensor<276xi8> - %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276xi32>}> : () -> tensor<276xi32> - %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<276x1x1x220xi8>}> : () -> tensor<276x1x1x220xi8> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi8>}> : () -> tensor<220xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x220xi8>}> : () -> tensor<1x3x3x220xi8> - %23 = "tosa.const"() <{values = dense<39> : tensor<220xi8>}> : () -> tensor<220xi8> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220xi32>}> : () -> tensor<220xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<220x1x1x164xi8>}> : () -> tensor<220x1x1x164xi8> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> - %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x164xi8>}> : () -> tensor<1x3x3x164xi8> - %29 = "tosa.const"() <{values = dense<39> : tensor<164xi8>}> : () -> tensor<164xi8> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164xi32>}> : () -> tensor<164xi32> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<164x1x1x72xi8>}> : () -> tensor<164x1x1x72xi8> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x72xi8>}> : () -> tensor<1x3x3x72xi8> - %36 = "tosa.const"() <{values = dense<38> : tensor<72xi8>}> : () -> tensor<72xi8> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %38 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %39 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x3x3x1xi8>}> : () -> tensor<72x3x3x1xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %42 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> - %43 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %44 = tosa.conv2d %arg0, %40, %41, %42, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x1xi8>, tensor<72x3x3x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x72xi32> - %45 = tosa.rescale %44, %37, %36, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x72xi8> - %46 = tosa.clamp %45 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x72xi8>) -> tensor<1x32x32x72xi8> - %47 = tosa.reshape %35, %3 : (tensor<1x3x3x72xi8>, !tosa.shape<4>) -> tensor<3x3x72x1xi8> - %48 = tosa.depthwise_conv2d %46, %47, %41, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x72xi8>, tensor<3x3x72x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x72xi32> - %49 = tosa.rescale %48, %34, %33, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x72xi8> - %50 = tosa.clamp %49 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x72xi8>) -> tensor<1x16x16x72xi8> - %51 = tosa.conv2d %50, %32, %31, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x72xi8>, tensor<164x1x1x72xi8>, tensor<164xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x164xi32> - %52 = tosa.rescale %51, %30, %29, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x164xi32>, tensor<164xi32>, tensor<164xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x164xi8> - %53 = tosa.clamp %52 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x164xi8>) -> tensor<1x16x16x164xi8> - %54 = tosa.reshape %28, %2 : (tensor<1x3x3x164xi8>, !tosa.shape<4>) -> tensor<3x3x164x1xi8> - %55 = tosa.depthwise_conv2d %53, %54, %31, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x164xi8>, tensor<3x3x164x1xi8>, tensor<164xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x164xi32> - %56 = tosa.rescale %55, %27, %29, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x164xi32>, tensor<164xi32>, tensor<164xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x164xi8> - %57 = tosa.clamp %56 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x164xi8>) -> tensor<1x16x16x164xi8> - %58 = tosa.conv2d %57, %26, %25, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x164xi8>, tensor<220x1x1x164xi8>, tensor<220xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x220xi32> - %59 = tosa.rescale %58, %24, %23, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x220xi32>, tensor<220xi32>, tensor<220xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x220xi8> - %60 = tosa.clamp %59 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x220xi8>) -> tensor<1x16x16x220xi8> - %61 = tosa.reshape %22, %1 : (tensor<1x3x3x220xi8>, !tosa.shape<4>) -> tensor<3x3x220x1xi8> - %62 = tosa.depthwise_conv2d %60, %61, %25, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x220xi8>, tensor<3x3x220x1xi8>, tensor<220xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x220xi32> - %63 = tosa.rescale %62, %21, %20, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x220xi32>, tensor<220xi32>, tensor<220xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x220xi8> - %64 = tosa.clamp %63 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x220xi8>) -> tensor<1x8x8x220xi8> - %65 = tosa.conv2d %64, %19, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x220xi8>, tensor<276x1x1x220xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x276xi32> - %66 = tosa.rescale %65, %17, %16, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x276xi8> - %67 = tosa.clamp %66 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x276xi8>) -> tensor<1x8x8x276xi8> - %68 = tosa.reshape %15, %0 : (tensor<1x3x3x276xi8>, !tosa.shape<4>) -> tensor<3x3x276x1xi8> - %69 = tosa.depthwise_conv2d %67, %68, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x276xi8>, tensor<3x3x276x1xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x276xi32> - %70 = tosa.rescale %69, %14, %13, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x276xi8> - %71 = tosa.clamp %70 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x276xi8>) -> tensor<1x4x4x276xi8> - %72 = tosa.conv2d %71, %12, %18, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x276xi8>, tensor<276x1x1x276xi8>, tensor<276xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x276xi32> - %73 = tosa.rescale %72, %11, %10, %39, %38 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x276xi32>, tensor<276xi32>, tensor<276xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x276xi8> - %74 = tosa.clamp %73 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x276xi8>) -> tensor<1x4x4x276xi8> - %75 = tosa.avg_pool2d %74, %43, %43 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x4x4x276xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x276xi8> - %76 = tosa.conv2d %75, %9, %8, %38, %43 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x276xi8>, tensor<8x1x1x276xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x8xi32> - %77 = tosa.rescale %76, %6, %5, %39, %7 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x8xi8> - %78 = tosa.reshape %77, %4 : (tensor<1x1x1x8xi8>, !tosa.shape<2>) -> tensor<1x8xi8> - return %78 : tensor<1x8xi8> - } -} diff --git a/tests/gold/test_python_api/cnn_s_quantized.mlir b/tests/gold/test_python_api/cnn_s_quantized.mlir deleted file mode 100644 index dd1148f..0000000 --- a/tests/gold/test_python_api/cnn_s_quantized.mlir +++ /dev/null @@ -1,120 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.14.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { - %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> - %12 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %17 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %18 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %20 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> - %21 = "tosa.const"() <{values = dense<1201210766> : tensor<1xi32>}> : () -> tensor<1xi32> - %22 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> - %23 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %24 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x128xi8>}> : () -> tensor<12x128xi8> - %27 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %28 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> - %29 = "tosa.const"() <{values = dense<1937167208> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x16xi8>}> : () -> tensor<128x16xi8> - %33 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> - %34 = "tosa.const"() <{values = dense<1331195725> : tensor<1xi32>}> : () -> tensor<1xi32> - %35 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> - %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %37 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1920xi8>}> : () -> tensor<16x1920xi8> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi8>}> : () -> tensor<30xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi32>}> : () -> tensor<30xi32> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30xi32>}> : () -> tensor<30xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<30x10x4x28xi8>}> : () -> tensor<30x10x4x28xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %46 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %47 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %48 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %49 = "tosa.const"() <{values = dense<102> : tensor<1xi8>}> : () -> tensor<1xi8> - %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x10x4x1xi8>}> : () -> tensor<28x10x4x1xi8> - %52 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %53 = tosa.reshape %arg0, %52 : (tensor, !tosa.shape<4>) -> tensor - %54 = tosa.conv2d %53, %51, %50, %49, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<28x10x4x1xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %55 = tosa.rescale %54, %45, %44, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %56 = tosa.clamp %55 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %57 = tosa.conv2d %56, %43, %42, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<30x10x4x28xi8>, tensor<30xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %58 = tosa.rescale %57, %41, %40, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<30xi32>, tensor<30xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %59 = tosa.clamp %58 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %60 = tosa.reshape %59, %37 : (tensor, !tosa.shape<4>) -> tensor - %61 = tosa.reshape %39, %36 : (tensor<16x1920xi8>, !tosa.shape<4>) -> tensor<16x1x1x1920xi8> - %62 = tosa.conv2d %60, %61, %38, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<16x1x1x1920xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %63 = tosa.rescale %62, %34, %33, %47, %35 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %64 = tosa.reshape %32, %30 : (tensor<128x16xi8>, !tosa.shape<4>) -> tensor<128x1x1x16xi8> - %65 = tosa.conv2d %63, %64, %31, %35, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x16xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %66 = tosa.rescale %65, %29, %28, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %67 = tosa.reshape %66, %27 : (tensor, !tosa.shape<2>) -> tensor - %68 = tosa.clamp %67 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %69 = tosa.reshape %68, %24 : (tensor, !tosa.shape<4>) -> tensor - %70 = tosa.reshape %26, %23 : (tensor<12x128xi8>, !tosa.shape<4>) -> tensor<12x1x1x128xi8> - %71 = tosa.conv2d %69, %70, %25, %46, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x128xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %72 = tosa.rescale %71, %21, %20, %47, %22 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %73 = tosa.reshape %72, %19 : (tensor, !tosa.shape<2>) -> tensor - %74 = tosa.rescale %73, %18, %17, %22, %47 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %75 = tosa.reduce_max %74 {axis = 1 : i32} : (tensor) -> tensor - %76 = tosa.sub %74, %75 : (tensor, tensor) -> tensor - %77 = tosa.rescale %76, %18, %12, %47, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor - %78 = tosa.table %77, %16 : (tensor, tensor<513xi16>) -> tensor - %79 = tosa.table %77, %15 : (tensor, tensor<513xi16>) -> tensor - %80 = tosa.table %77, %14 : (tensor, tensor<513xi16>) -> tensor - %81 = tosa.table %77, %13 : (tensor, tensor<513xi16>) -> tensor - %82 = tosa.logical_left_shift %78, %10 : (tensor, tensor<1x1xi32>) -> tensor - %83 = tosa.logical_left_shift %79, %9 : (tensor, tensor<1x1xi32>) -> tensor - %84 = tosa.logical_left_shift %80, %8 : (tensor, tensor<1x1xi32>) -> tensor - %85 = tosa.arithmetic_right_shift %81, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %86 = tosa.add %82, %83 : (tensor, tensor) -> tensor - %87 = tosa.add %86, %84 : (tensor, tensor) -> tensor - %88 = tosa.add %87, %85 : (tensor, tensor) -> tensor - %89 = tosa.arithmetic_right_shift %88, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %90 = tosa.reduce_sum %89 {axis = 1 : i32} : (tensor) -> tensor - %91 = tosa.clz %90 : (tensor) -> tensor - %92 = tosa.sub %91, %8 : (tensor, tensor<1x1xi32>) -> tensor - %93 = tosa.logical_left_shift %90, %92 : (tensor, tensor) -> tensor - %94 = tosa.mul %93, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %95 = tosa.add %94, %3 : (tensor, tensor<1x1xi32>) -> tensor - %96 = tosa.mul %95, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %97 = tosa.sub %4, %96 : (tensor<1x1xi32>, tensor) -> tensor - %98 = tosa.mul %95, %97, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %99 = tosa.mul %98, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %100 = tosa.add %95, %99 : (tensor, tensor) -> tensor - %101 = tosa.mul %100, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %102 = tosa.sub %4, %101 : (tensor<1x1xi32>, tensor) -> tensor - %103 = tosa.mul %100, %102, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %104 = tosa.mul %103, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %105 = tosa.add %100, %104 : (tensor, tensor) -> tensor - %106 = tosa.mul %105, %93, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %107 = tosa.sub %4, %106 : (tensor<1x1xi32>, tensor) -> tensor - %108 = tosa.mul %105, %107, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %109 = tosa.mul %108, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %110 = tosa.add %105, %109 : (tensor, tensor) -> tensor - %111 = tosa.mul %88, %110, %17 : (tensor, tensor, tensor<1xi8>) -> tensor - %112 = tosa.sub %0, %91 : (tensor<1x1xi32>, tensor) -> tensor - %113 = tosa.arithmetic_right_shift %111, %112 {round = true} : (tensor, tensor) -> tensor - %114 = tosa.rescale %113, %18, %17, %47, %46 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - return %114 : tensor - } -} diff --git a/tests/gold/test_python_api/dnn_s_quantized.mlir b/tests/gold/test_python_api/dnn_s_quantized.mlir deleted file mode 100644 index 44e67fd..0000000 --- a/tests/gold/test_python_api/dnn_s_quantized.mlir +++ /dev/null @@ -1,114 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.14.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { - %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %16 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %17 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %18 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %19 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> - %20 = "tosa.const"() <{values = dense<1374243659> : tensor<1xi32>}> : () -> tensor<1xi32> - %21 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %22 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x144xi8>}> : () -> tensor<12x144xi8> - %25 = "tosa.const"() <{values = dense<1143565917> : tensor<1xi32>}> : () -> tensor<1xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x144xi8>}> : () -> tensor<144x144xi8> - %28 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> - %29 = "tosa.const"() <{values = dense<1857097977> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %31 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x144xi8>}> : () -> tensor<144x144xi8> - %34 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %35 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> - %36 = "tosa.const"() <{values = dense<1901577989> : tensor<1xi32>}> : () -> tensor<1xi32> - %37 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %38 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %39 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %40 = "tosa.const"() <{values = dense<100> : tensor<1xi8>}> : () -> tensor<1xi8> - %41 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x250xi8>}> : () -> tensor<144x250xi8> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %44 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %45 = tosa.reshape %arg0, %44 : (tensor, !tosa.shape<4>) -> tensor - %46 = tosa.reshape %42, %41 : (tensor<144x250xi8>, !tosa.shape<4>) -> tensor<144x1x1x250xi8> - %47 = tosa.conv2d %45, %46, %43, %40, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x250xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %48 = tosa.rescale %47, %36, %35, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %49 = tosa.reshape %48, %34 : (tensor, !tosa.shape<2>) -> tensor - %50 = tosa.clamp %49 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %51 = tosa.reshape %50, %31 : (tensor, !tosa.shape<4>) -> tensor - %52 = tosa.reshape %33, %30 : (tensor<144x144xi8>, !tosa.shape<4>) -> tensor<144x1x1x144xi8> - %53 = tosa.conv2d %51, %52, %32, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x144xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %54 = tosa.rescale %53, %29, %28, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %55 = tosa.reshape %54, %34 : (tensor, !tosa.shape<2>) -> tensor - %56 = tosa.clamp %55 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %57 = tosa.reshape %56, %31 : (tensor, !tosa.shape<4>) -> tensor - %58 = tosa.reshape %27, %30 : (tensor<144x144xi8>, !tosa.shape<4>) -> tensor<144x1x1x144xi8> - %59 = tosa.conv2d %57, %58, %26, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<144x1x1x144xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %60 = tosa.rescale %59, %25, %35, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %61 = tosa.reshape %60, %34 : (tensor, !tosa.shape<2>) -> tensor - %62 = tosa.clamp %61 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %63 = tosa.reshape %62, %31 : (tensor, !tosa.shape<4>) -> tensor - %64 = tosa.reshape %24, %22 : (tensor<12x144xi8>, !tosa.shape<4>) -> tensor<12x1x1x144xi8> - %65 = tosa.conv2d %63, %64, %23, %37, %39 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x144xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %66 = tosa.rescale %65, %20, %19, %38, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %67 = tosa.reshape %66, %18 : (tensor, !tosa.shape<2>) -> tensor - %68 = tosa.rescale %67, %17, %16, %21, %38 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %69 = tosa.reduce_max %68 {axis = 1 : i32} : (tensor) -> tensor - %70 = tosa.sub %68, %69 : (tensor, tensor) -> tensor - %71 = tosa.rescale %70, %17, %21, %38, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor - %72 = tosa.table %71, %15 : (tensor, tensor<513xi16>) -> tensor - %73 = tosa.table %71, %14 : (tensor, tensor<513xi16>) -> tensor - %74 = tosa.table %71, %13 : (tensor, tensor<513xi16>) -> tensor - %75 = tosa.table %71, %12 : (tensor, tensor<513xi16>) -> tensor - %76 = tosa.logical_left_shift %72, %10 : (tensor, tensor<1x1xi32>) -> tensor - %77 = tosa.logical_left_shift %73, %9 : (tensor, tensor<1x1xi32>) -> tensor - %78 = tosa.logical_left_shift %74, %8 : (tensor, tensor<1x1xi32>) -> tensor - %79 = tosa.arithmetic_right_shift %75, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %80 = tosa.add %76, %77 : (tensor, tensor) -> tensor - %81 = tosa.add %80, %78 : (tensor, tensor) -> tensor - %82 = tosa.add %81, %79 : (tensor, tensor) -> tensor - %83 = tosa.arithmetic_right_shift %82, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %84 = tosa.reduce_sum %83 {axis = 1 : i32} : (tensor) -> tensor - %85 = tosa.clz %84 : (tensor) -> tensor - %86 = tosa.sub %85, %8 : (tensor, tensor<1x1xi32>) -> tensor - %87 = tosa.logical_left_shift %84, %86 : (tensor, tensor) -> tensor - %88 = tosa.mul %87, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %89 = tosa.add %88, %3 : (tensor, tensor<1x1xi32>) -> tensor - %90 = tosa.mul %89, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %91 = tosa.sub %4, %90 : (tensor<1x1xi32>, tensor) -> tensor - %92 = tosa.mul %89, %91, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %93 = tosa.mul %92, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %94 = tosa.add %89, %93 : (tensor, tensor) -> tensor - %95 = tosa.mul %94, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %96 = tosa.sub %4, %95 : (tensor<1x1xi32>, tensor) -> tensor - %97 = tosa.mul %94, %96, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %98 = tosa.mul %97, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %99 = tosa.add %94, %98 : (tensor, tensor) -> tensor - %100 = tosa.mul %99, %87, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %101 = tosa.sub %4, %100 : (tensor<1x1xi32>, tensor) -> tensor - %102 = tosa.mul %99, %101, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %103 = tosa.mul %102, %5, %39 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %104 = tosa.add %99, %103 : (tensor, tensor) -> tensor - %105 = tosa.mul %82, %104, %16 : (tensor, tensor, tensor<1xi8>) -> tensor - %106 = tosa.sub %0, %85 : (tensor<1x1xi32>, tensor) -> tensor - %107 = tosa.arithmetic_right_shift %105, %106 {round = true} : (tensor, tensor) -> tensor - %108 = tosa.rescale %107, %17, %16, %38, %37 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - return %108 : tensor - } -} diff --git a/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir b/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir deleted file mode 100644 index 4b0d719..0000000 --- a/tests/gold/test_python_api/ds_cnn_s_quantized_int16.mlir +++ /dev/null @@ -1,125 +0,0 @@ -module attributes {tf_saved_model.semantics, tfl.description = "MLIR Converted.", tfl.metadata = {CONVERSION_METADATA = "\0C\00\00\00\08\00\0E\00\08\00\04\00\08\00\00\00\10\00\00\00(\00\00\00\00\00\06\00\08\00\04\00\06\00\00\00\04\00\00\00\01\00\00\00\EC\03\00\00\00\00\0A\00\10\00\0C\00\08\00\04\00\0A\00\00\00\02\00\00\00\02\00\00\00\04\00\00\00\05\00\00\002.9.1\00\00\00", min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor {tf_saved_model.index_path = ["input"]}) -> (tensor {tf_saved_model.index_path = ["dense"]}) attributes {tf.entry_function = {inputs = "serving_default_input:0", outputs = "StatefulPartitionedCall:0"}, tf_saved_model.exported_names = ["serving_default"]} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = "tosa.const"() <{values = dense<31> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %2 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %3 = "tosa.const"() <{values = dense<32768> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %4 = "tosa.const"() <{values = dense<14> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %5 = "tosa.const"() <{values = dense<1073741824> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %6 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %8 = "tosa.const"() <{values = dense<32767> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %9 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> - %10 = "tosa.const"() <{values = dense<1564587505> : tensor<1xi32>}> : () -> tensor<1xi32> - %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %12 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %13 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %14 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %15 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %16 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %17 = "tosa.const"() <{values = dense<23137> : tensor<1xi16>}> : () -> tensor<1xi16> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi48>}> : () -> tensor<12xi48> - %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x64xi8>}> : () -> tensor<12x64xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> - %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x64xi8>}> : () -> tensor<64x1x1x64xi8> - %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi16>}> : () -> tensor<64xi16> - %55 = "tosa.const"() <{values = dense<0> : tensor<1xi48>}> : () -> tensor<1xi48> - %56 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %57 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> - %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi48>}> : () -> tensor<64xi48> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x10x4x1xi8>}> : () -> tensor<64x10x4x1xi8> - %60 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %61 = tosa.reshape %arg0, %60 : (tensor, !tosa.shape<4>) -> tensor - %62 = tosa.conv2d %61, %59, %58, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x10x4x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %63 = tosa.rescale %62, %54, %53, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %64 = tosa.clamp %63 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %65 = tosa.reshape %52, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> - %66 = tosa.depthwise_conv2d %64, %65, %51, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %67 = tosa.rescale %66, %50, %49, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %68 = tosa.clamp %67 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %69 = tosa.conv2d %68, %48, %47, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %70 = tosa.rescale %69, %46, %45, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %71 = tosa.clamp %70 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %72 = tosa.reshape %44, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> - %73 = tosa.depthwise_conv2d %71, %72, %43, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %74 = tosa.rescale %73, %42, %41, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %75 = tosa.clamp %74 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %76 = tosa.conv2d %75, %40, %39, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %77 = tosa.rescale %76, %38, %37, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %78 = tosa.clamp %77 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %79 = tosa.reshape %36, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> - %80 = tosa.depthwise_conv2d %78, %79, %35, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %81 = tosa.rescale %80, %34, %33, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %82 = tosa.clamp %81 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %83 = tosa.conv2d %82, %32, %31, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %84 = tosa.rescale %83, %30, %29, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %85 = tosa.clamp %84 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %86 = tosa.reshape %28, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> - %87 = tosa.depthwise_conv2d %85, %86, %27, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<3x3x64x1xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %88 = tosa.rescale %87, %26, %25, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %89 = tosa.clamp %88 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %90 = tosa.conv2d %89, %24, %23, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<64x1x1x64xi8>, tensor<64xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %91 = tosa.rescale %90, %22, %21, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<64xi16>, tensor<64xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %92 = tosa.clamp %91 {max_val = 32767 : i16, min_val = 0 : i16} : (tensor) -> tensor - %93 = tosa.avg_pool2d %92, %57, %57 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor, tensor<1xi16>, tensor<1xi16>) -> tensor - %94 = tosa.reshape %20, %19 : (tensor<12x64xi8>, !tosa.shape<4>) -> tensor<12x1x1x64xi8> - %95 = tosa.conv2d %93, %94, %18, %57, %56 {acc_type = i48, dilation = array, pad = array, stride = array} : (tensor, tensor<12x1x1x64xi8>, tensor<12xi48>, tensor<1xi16>, tensor<1xi8>) -> tensor - %96 = tosa.rescale %95, %17, %16, %55, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = false} : (tensor, tensor<1xi16>, tensor<1xi8>, tensor<1xi48>, tensor<1xi16>) -> tensor - %97 = tosa.reshape %96, %15 : (tensor, !tosa.shape<2>) -> tensor - %98 = tosa.rescale %97, %14, %13, %57, %12 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi16>, tensor<1xi32>) -> tensor - %99 = tosa.reduce_max %98 {axis = 1 : i32} : (tensor) -> tensor - %100 = tosa.sub %98, %99 : (tensor, tensor) -> tensor - %101 = tosa.rescale %100, %10, %9, %12, %12 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor - %102 = tosa.add %101, %8 : (tensor, tensor<1x1xi32>) -> tensor - %103 = tosa.cast %102 : (tensor) -> tensor - %104 = tosa.table %103, %11 : (tensor, tensor<513xi16>) -> tensor - %105 = tosa.arithmetic_right_shift %104, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %106 = tosa.reduce_sum %105 {axis = 1 : i32} : (tensor) -> tensor - %107 = tosa.clz %106 : (tensor) -> tensor - %108 = tosa.sub %107, %6 : (tensor, tensor<1x1xi32>) -> tensor - %109 = tosa.logical_left_shift %106, %108 : (tensor, tensor) -> tensor - %110 = tosa.sub %109, %5 : (tensor, tensor<1x1xi32>) -> tensor - %111 = tosa.arithmetic_right_shift %110, %4 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %112 = tosa.sub %111, %3 : (tensor, tensor<1x1xi32>) -> tensor - %113 = tosa.cast %112 : (tensor) -> tensor - %114 = tosa.table %113, %2 : (tensor, tensor<513xi16>) -> tensor - %115 = tosa.arithmetic_right_shift %114, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %116 = tosa.mul %115, %105, %56 : (tensor, tensor, tensor<1xi8>) -> tensor - %117 = tosa.sub %1, %107 : (tensor<1x1xi32>, tensor) -> tensor - %118 = tosa.arithmetic_right_shift %116, %117 {round = true} : (tensor, tensor) -> tensor - %119 = tosa.rescale %118, %14, %13, %12, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor - return %119 : tensor - } -} diff --git a/tests/gold/test_python_api/efficientnet_lite0_224.mlir b/tests/gold/test_python_api/efficientnet_lite0_224.mlir deleted file mode 100644 index 77ae940..0000000 --- a/tests/gold/test_python_api/efficientnet_lite0_224.mlir +++ /dev/null @@ -1,528 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x224x224x3xui8>) -> tensor<1x1000xui8> attributes {tf.entry_function = {inputs = "images", outputs = "Softmax"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %11 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %12 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %13 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %14 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %15 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %16 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %17 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %18 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %19 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %20 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %21 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> - %22 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %27 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %28 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> - %29 = "tosa.const"() <{values = dense<1076206832> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = "tosa.const"() <{values = dense<-62> : tensor<1xi8>}> : () -> tensor<1xi8> - %31 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1000xi32>}> : () -> tensor<1000xi32> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1000x1280xi8>}> : () -> tensor<1000x1280xi8> - %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi8>}> : () -> tensor<1280xi8> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280x1x1x320xi8>}> : () -> tensor<1280x1x1x320xi8> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi8>}> : () -> tensor<320xi8> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> - %40 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320x1x1x1152xi8>}> : () -> tensor<320x1x1x1152xi8> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x1152xi8>}> : () -> tensor<1x3x3x1152xi8> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> - %51 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> - %52 = "tosa.const"() <{values = dense<1844865123> : tensor<1xi32>}> : () -> tensor<1xi32> - %53 = "tosa.const"() <{values = dense<2111135967> : tensor<1xi32>}> : () -> tensor<1xi32> - %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %56 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> - %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> - %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> - %67 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> - %68 = "tosa.const"() <{values = dense<1566288474> : tensor<1xi32>}> : () -> tensor<1xi32> - %69 = "tosa.const"() <{values = dense<1421836328> : tensor<1xi32>}> : () -> tensor<1xi32> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %72 = "tosa.const"() <{values = dense<-27> : tensor<1xi8>}> : () -> tensor<1xi8> - %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> - %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> - %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %80 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> - %83 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> - %84 = "tosa.const"() <{values = dense<2090466540> : tensor<1xi32>}> : () -> tensor<1xi32> - %85 = "tosa.const"() <{values = dense<1656099189> : tensor<1xi32>}> : () -> tensor<1xi32> - %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %88 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> - %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x1152xi8>}> : () -> tensor<192x1x1x1152xi8> - %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x1152xi8>}> : () -> tensor<1x5x5x1152xi8> - %95 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi8>}> : () -> tensor<1152xi8> - %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152xi32>}> : () -> tensor<1152xi32> - %98 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1152x1x1x192xi8>}> : () -> tensor<1152x1x1x192xi8> - %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %101 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> - %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x672xi8>}> : () -> tensor<192x1x1x672xi8> - %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> - %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> - %112 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> - %113 = "tosa.const"() <{values = dense<1858682003> : tensor<1xi32>}> : () -> tensor<1xi32> - %114 = "tosa.const"() <{values = dense<1095275027> : tensor<1xi32>}> : () -> tensor<1xi32> - %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> - %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %117 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x672xi8>}> : () -> tensor<112x1x1x672xi8> - %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %123 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> - %124 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %126 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> - %128 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> - %129 = "tosa.const"() <{values = dense<1874662413> : tensor<1xi32>}> : () -> tensor<1xi32> - %130 = "tosa.const"() <{values = dense<1480402198> : tensor<1xi32>}> : () -> tensor<1xi32> - %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> - %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %133 = "tosa.const"() <{values = dense<21> : tensor<1xi8>}> : () -> tensor<1xi8> - %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x672xi8>}> : () -> tensor<112x1x1x672xi8> - %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x672xi8>}> : () -> tensor<1x5x5x672xi8> - %140 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi8>}> : () -> tensor<672xi8> - %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672xi32>}> : () -> tensor<672xi32> - %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<672x1x1x112xi8>}> : () -> tensor<672x1x1x112xi8> - %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> - %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x480xi8>}> : () -> tensor<112x1x1x480xi8> - %148 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x480xi8>}> : () -> tensor<1x5x5x480xi8> - %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> - %156 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> - %157 = "tosa.const"() <{values = dense<1077008715> : tensor<1xi32>}> : () -> tensor<1xi32> - %158 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> - %159 = "tosa.const"() <{values = dense<2000085201> : tensor<1xi32>}> : () -> tensor<1xi32> - %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> - %161 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %162 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x480xi8>}> : () -> tensor<80x1x1x480xi8> - %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x480xi8>}> : () -> tensor<1x3x3x480xi8> - %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> - %172 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> - %173 = "tosa.const"() <{values = dense<2135713319> : tensor<1xi32>}> : () -> tensor<1xi32> - %174 = "tosa.const"() <{values = dense<1310035080> : tensor<1xi32>}> : () -> tensor<1xi32> - %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> - %176 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %177 = "tosa.const"() <{values = dense<13> : tensor<1xi8>}> : () -> tensor<1xi8> - %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x480xi8>}> : () -> tensor<80x1x1x480xi8> - %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %181 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x480xi8>}> : () -> tensor<1x3x3x480xi8> - %184 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi8>}> : () -> tensor<480xi8> - %185 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480xi32>}> : () -> tensor<480xi32> - %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<480x1x1x80xi8>}> : () -> tensor<480x1x1x80xi8> - %188 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi8>}> : () -> tensor<80xi8> - %189 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80xi32>}> : () -> tensor<80xi32> - %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<80x1x1x240xi8>}> : () -> tensor<80x1x1x240xi8> - %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x240xi8>}> : () -> tensor<1x3x3x240xi8> - %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> - %200 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> - %201 = "tosa.const"() <{values = dense<1934301239> : tensor<1xi32>}> : () -> tensor<1xi32> - %202 = "tosa.const"() <{values = dense<1676171725> : tensor<1xi32>}> : () -> tensor<1xi32> - %203 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %204 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %205 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> - %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> - %208 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %209 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> - %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %213 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %214 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %215 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> - %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %218 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> - %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x144xi8>}> : () -> tensor<40x1x1x144xi8> - %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x144xi8>}> : () -> tensor<1x5x5x144xi8> - %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> - %229 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> - %230 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> - %231 = "tosa.const"() <{values = dense<1867833568> : tensor<1xi32>}> : () -> tensor<1xi32> - %232 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %233 = "tosa.const"() <{values = dense<2065654195> : tensor<1xi32>}> : () -> tensor<1xi32> - %234 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> - %235 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> - %236 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %238 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> - %239 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %240 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x144xi8>}> : () -> tensor<24x1x1x144xi8> - %241 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %242 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %243 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %244 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> - %245 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> - %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> - %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %257 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %260 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> - %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %263 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> - %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x32xi8>}> : () -> tensor<16x1x1x32xi8> - %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x32xi8>}> : () -> tensor<1x3x3x32xi8> - %270 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %272 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %273 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x3xi8>}> : () -> tensor<32x3x3x3xi8> - %275 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %276 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %277 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %278 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %279 = "tosa.const"() <{values = dense<-125> : tensor<1xi8>}> : () -> tensor<1xi8> - %280 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> - %281 = tosa.rescale %arg0, %277, %278, %279, %280 {input_unsigned = true, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x224x224x3xui8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> - %282 = tosa.rescale %281, %277, %278, %280, %280 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x224x224x3xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> - %283 = tosa.conv2d %282, %274, %273, %280, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x224x224x3xi8>, tensor<32x3x3x3xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> - %284 = tosa.rescale %283, %271, %270, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> - %285 = tosa.clamp %284 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x32xi8>) -> tensor<1x112x112x32xi8> - %286 = tosa.reshape %269, %10 : (tensor<1x3x3x32xi8>, !tosa.shape<4>) -> tensor<3x3x32x1xi8> - %287 = tosa.depthwise_conv2d %285, %286, %268, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<3x3x32x1xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> - %288 = tosa.rescale %287, %267, %266, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> - %289 = tosa.clamp %288 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x32xi8>) -> tensor<1x112x112x32xi8> - %290 = tosa.conv2d %289, %265, %264, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<16x1x1x32xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x16xi32> - %291 = tosa.rescale %290, %262, %261, %272, %263 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x16xi8> - %292 = tosa.conv2d %291, %260, %259, %263, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x96xi32> - %293 = tosa.rescale %292, %258, %257, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x96xi8> - %294 = tosa.clamp %293 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x112x112x96xi8>) -> tensor<1x112x112x96xi8> - %295 = tosa.reshape %256, %9 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %296 = tosa.depthwise_conv2d %294, %295, %255, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x96xi32> - %297 = tosa.rescale %296, %254, %253, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x96xi8> - %298 = tosa.clamp %297 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x96xi8>) -> tensor<1x56x56x96xi8> - %299 = tosa.conv2d %298, %252, %251, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> - %300 = tosa.rescale %299, %250, %249, %272, %276 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %301 = tosa.conv2d %300, %248, %247, %276, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %302 = tosa.rescale %301, %246, %245, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %303 = tosa.clamp %302 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> - %304 = tosa.reshape %244, %8 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> - %305 = tosa.depthwise_conv2d %303, %304, %243, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %306 = tosa.rescale %305, %242, %241, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %307 = tosa.clamp %306 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> - %308 = tosa.conv2d %307, %240, %239, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<24x1x1x144xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> - %309 = tosa.rescale %308, %237, %236, %272, %238 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %310 = tosa.rescale %309, %277, %235, %238, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %311 = tosa.rescale %300, %277, %234, %276, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %312 = tosa.rescale %311, %233, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %313 = tosa.add %310, %312 : (tensor<1x56x56x24xi32>, tensor<1x56x56x24xi32>) -> tensor<1x56x56x24xi32> - %314 = tosa.rescale %313, %231, %230, %272, %229 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %315 = tosa.conv2d %314, %228, %227, %229, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %316 = tosa.rescale %315, %226, %225, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %317 = tosa.clamp %316 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x56x56x144xi8>) -> tensor<1x56x56x144xi8> - %318 = tosa.reshape %224, %7 : (tensor<1x5x5x144xi8>, !tosa.shape<4>) -> tensor<5x5x144x1xi8> - %319 = tosa.depthwise_conv2d %317, %318, %223, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<5x5x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x144xi32> - %320 = tosa.rescale %319, %222, %221, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x144xi8> - %321 = tosa.clamp %320 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x144xi8>) -> tensor<1x28x28x144xi8> - %322 = tosa.conv2d %321, %220, %219, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x144xi8>, tensor<40x1x1x144xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x40xi32> - %323 = tosa.rescale %322, %217, %216, %272, %218 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> - %324 = tosa.conv2d %323, %215, %214, %218, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> - %325 = tosa.rescale %324, %213, %212, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> - %326 = tosa.clamp %325 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> - %327 = tosa.reshape %211, %6 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> - %328 = tosa.depthwise_conv2d %326, %327, %210, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> - %329 = tosa.rescale %328, %209, %208, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> - %330 = tosa.clamp %329 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> - %331 = tosa.conv2d %330, %207, %206, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x40xi32> - %332 = tosa.rescale %331, %204, %203, %272, %205 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> - %333 = tosa.rescale %332, %277, %234, %205, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x40xi32> - %334 = tosa.rescale %333, %202, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x40xi32> - %335 = tosa.rescale %323, %277, %235, %218, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x40xi32> - %336 = tosa.add %334, %335 : (tensor<1x28x28x40xi32>, tensor<1x28x28x40xi32>) -> tensor<1x28x28x40xi32> - %337 = tosa.rescale %336, %201, %230, %272, %200 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x40xi8> - %338 = tosa.conv2d %337, %199, %198, %200, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x240xi32> - %339 = tosa.rescale %338, %197, %196, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x240xi8> - %340 = tosa.clamp %339 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x28x28x240xi8>) -> tensor<1x28x28x240xi8> - %341 = tosa.reshape %195, %5 : (tensor<1x3x3x240xi8>, !tosa.shape<4>) -> tensor<3x3x240x1xi8> - %342 = tosa.depthwise_conv2d %340, %341, %194, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x240xi8>, tensor<3x3x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x240xi32> - %343 = tosa.rescale %342, %193, %192, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x240xi8> - %344 = tosa.clamp %343 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x240xi8>) -> tensor<1x14x14x240xi8> - %345 = tosa.conv2d %344, %191, %190, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x240xi8>, tensor<80x1x1x240xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> - %346 = tosa.rescale %345, %189, %188, %272, %276 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> - %347 = tosa.conv2d %346, %187, %186, %276, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %348 = tosa.rescale %347, %185, %184, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %349 = tosa.clamp %348 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %350 = tosa.reshape %183, %4 : (tensor<1x3x3x480xi8>, !tosa.shape<4>) -> tensor<3x3x480x1xi8> - %351 = tosa.depthwise_conv2d %349, %350, %182, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<3x3x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %352 = tosa.rescale %351, %181, %180, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %353 = tosa.clamp %352 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %354 = tosa.conv2d %353, %179, %178, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<80x1x1x480xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> - %355 = tosa.rescale %354, %176, %175, %272, %177 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> - %356 = tosa.rescale %355, %277, %234, %177, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %357 = tosa.rescale %356, %174, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %358 = tosa.rescale %346, %277, %235, %276, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %359 = tosa.add %357, %358 : (tensor<1x14x14x80xi32>, tensor<1x14x14x80xi32>) -> tensor<1x14x14x80xi32> - %360 = tosa.rescale %359, %173, %230, %272, %172 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> - %361 = tosa.conv2d %360, %171, %170, %172, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %362 = tosa.rescale %361, %169, %168, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %363 = tosa.clamp %362 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %364 = tosa.reshape %167, %4 : (tensor<1x3x3x480xi8>, !tosa.shape<4>) -> tensor<3x3x480x1xi8> - %365 = tosa.depthwise_conv2d %363, %364, %166, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<3x3x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %366 = tosa.rescale %365, %165, %164, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %367 = tosa.clamp %366 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %368 = tosa.conv2d %367, %163, %162, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<80x1x1x480xi8>, tensor<80xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x80xi32> - %369 = tosa.rescale %368, %161, %160, %272, %200 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<80xi32>, tensor<80xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> - %370 = tosa.rescale %369, %277, %234, %200, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %371 = tosa.rescale %370, %159, %158, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %372 = tosa.rescale %360, %277, %235, %172, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x80xi32> - %373 = tosa.add %371, %372 : (tensor<1x14x14x80xi32>, tensor<1x14x14x80xi32>) -> tensor<1x14x14x80xi32> - %374 = tosa.rescale %373, %157, %156, %272, %280 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x80xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x80xi8> - %375 = tosa.conv2d %374, %155, %154, %280, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x80xi8>, tensor<480x1x1x80xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %376 = tosa.rescale %375, %153, %152, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %377 = tosa.clamp %376 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %378 = tosa.reshape %151, %3 : (tensor<1x5x5x480xi8>, !tosa.shape<4>) -> tensor<5x5x480x1xi8> - %379 = tosa.depthwise_conv2d %377, %378, %150, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<5x5x480x1xi8>, tensor<480xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x480xi32> - %380 = tosa.rescale %379, %149, %148, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x480xi32>, tensor<480xi32>, tensor<480xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x480xi8> - %381 = tosa.clamp %380 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x480xi8>) -> tensor<1x14x14x480xi8> - %382 = tosa.conv2d %381, %147, %146, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x480xi8>, tensor<112x1x1x480xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> - %383 = tosa.rescale %382, %145, %144, %272, %235 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> - %384 = tosa.conv2d %383, %143, %142, %235, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> - %385 = tosa.rescale %384, %141, %140, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> - %386 = tosa.clamp %385 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> - %387 = tosa.reshape %139, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> - %388 = tosa.depthwise_conv2d %386, %387, %138, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> - %389 = tosa.rescale %388, %137, %136, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> - %390 = tosa.clamp %389 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> - %391 = tosa.conv2d %390, %135, %134, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<112x1x1x672xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> - %392 = tosa.rescale %391, %132, %131, %272, %133 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> - %393 = tosa.rescale %392, %277, %234, %133, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %394 = tosa.rescale %393, %130, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %395 = tosa.rescale %383, %277, %235, %235, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %396 = tosa.add %394, %395 : (tensor<1x14x14x112xi32>, tensor<1x14x14x112xi32>) -> tensor<1x14x14x112xi32> - %397 = tosa.rescale %396, %129, %230, %272, %128 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> - %398 = tosa.conv2d %397, %127, %126, %128, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> - %399 = tosa.rescale %398, %125, %124, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> - %400 = tosa.clamp %399 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> - %401 = tosa.reshape %123, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> - %402 = tosa.depthwise_conv2d %400, %401, %122, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> - %403 = tosa.rescale %402, %121, %120, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> - %404 = tosa.clamp %403 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> - %405 = tosa.conv2d %404, %119, %118, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<112x1x1x672xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x112xi32> - %406 = tosa.rescale %405, %116, %115, %272, %117 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> - %407 = tosa.rescale %406, %277, %234, %117, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %408 = tosa.rescale %407, %114, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %409 = tosa.rescale %397, %277, %235, %128, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x112xi32> - %410 = tosa.add %408, %409 : (tensor<1x14x14x112xi32>, tensor<1x14x14x112xi32>) -> tensor<1x14x14x112xi32> - %411 = tosa.rescale %410, %113, %230, %272, %112 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x112xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x112xi8> - %412 = tosa.conv2d %411, %111, %110, %112, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x112xi8>, tensor<672x1x1x112xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x672xi32> - %413 = tosa.rescale %412, %109, %108, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x672xi8> - %414 = tosa.clamp %413 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x14x14x672xi8>) -> tensor<1x14x14x672xi8> - %415 = tosa.reshape %107, %2 : (tensor<1x5x5x672xi8>, !tosa.shape<4>) -> tensor<5x5x672x1xi8> - %416 = tosa.depthwise_conv2d %414, %415, %106, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x672xi8>, tensor<5x5x672x1xi8>, tensor<672xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x672xi32> - %417 = tosa.rescale %416, %105, %104, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x672xi32>, tensor<672xi32>, tensor<672xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x672xi8> - %418 = tosa.clamp %417 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x672xi8>) -> tensor<1x7x7x672xi8> - %419 = tosa.conv2d %418, %103, %102, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x672xi8>, tensor<192x1x1x672xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> - %420 = tosa.rescale %419, %100, %99, %272, %101 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %421 = tosa.conv2d %420, %98, %97, %101, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %422 = tosa.rescale %421, %96, %95, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %423 = tosa.clamp %422 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %424 = tosa.reshape %94, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> - %425 = tosa.depthwise_conv2d %423, %424, %93, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %426 = tosa.rescale %425, %92, %91, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %427 = tosa.clamp %426 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %428 = tosa.conv2d %427, %90, %89, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> - %429 = tosa.rescale %428, %87, %86, %272, %88 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %430 = tosa.rescale %429, %277, %234, %88, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %431 = tosa.rescale %430, %85, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %432 = tosa.rescale %420, %277, %235, %101, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %433 = tosa.add %431, %432 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> - %434 = tosa.rescale %433, %84, %230, %272, %83 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %435 = tosa.conv2d %434, %82, %81, %83, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %436 = tosa.rescale %435, %80, %79, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %437 = tosa.clamp %436 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %438 = tosa.reshape %78, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> - %439 = tosa.depthwise_conv2d %437, %438, %77, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %440 = tosa.rescale %439, %76, %75, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %441 = tosa.clamp %440 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %442 = tosa.conv2d %441, %74, %73, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> - %443 = tosa.rescale %442, %71, %70, %272, %72 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %444 = tosa.rescale %443, %277, %234, %72, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %445 = tosa.rescale %444, %69, %232, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %446 = tosa.rescale %434, %277, %235, %83, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %447 = tosa.add %445, %446 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> - %448 = tosa.rescale %447, %68, %230, %272, %67 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %449 = tosa.conv2d %448, %66, %65, %67, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %450 = tosa.rescale %449, %64, %63, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %451 = tosa.clamp %450 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %452 = tosa.reshape %62, %1 : (tensor<1x5x5x1152xi8>, !tosa.shape<4>) -> tensor<5x5x1152x1xi8> - %453 = tosa.depthwise_conv2d %451, %452, %61, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<5x5x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %454 = tosa.rescale %453, %60, %59, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %455 = tosa.clamp %454 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %456 = tosa.conv2d %455, %58, %57, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<192x1x1x1152xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x192xi32> - %457 = tosa.rescale %456, %55, %54, %272, %56 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %458 = tosa.rescale %457, %277, %234, %56, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %459 = tosa.rescale %458, %53, %158, %272, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %460 = tosa.rescale %448, %277, %235, %67, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x192xi32> - %461 = tosa.add %459, %460 : (tensor<1x7x7x192xi32>, tensor<1x7x7x192xi32>) -> tensor<1x7x7x192xi32> - %462 = tosa.rescale %461, %52, %230, %272, %51 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x192xi8> - %463 = tosa.conv2d %462, %50, %49, %51, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x192xi8>, tensor<1152x1x1x192xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %464 = tosa.rescale %463, %48, %47, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %465 = tosa.clamp %464 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %466 = tosa.reshape %46, %0 : (tensor<1x3x3x1152xi8>, !tosa.shape<4>) -> tensor<3x3x1152x1xi8> - %467 = tosa.depthwise_conv2d %465, %466, %45, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<3x3x1152x1xi8>, tensor<1152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1152xi32> - %468 = tosa.rescale %467, %44, %43, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1152xi32>, tensor<1152xi32>, tensor<1152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1152xi8> - %469 = tosa.clamp %468 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1152xi8>) -> tensor<1x7x7x1152xi8> - %470 = tosa.conv2d %469, %42, %41, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x1152xi8>, tensor<320x1x1x1152xi8>, tensor<320xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x320xi32> - %471 = tosa.rescale %470, %39, %38, %272, %40 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x320xi32>, tensor<320xi32>, tensor<320xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x320xi8> - %472 = tosa.conv2d %471, %37, %36, %40, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x320xi8>, tensor<1280x1x1x320xi8>, tensor<1280xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1280xi32> - %473 = tosa.rescale %472, %35, %34, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1280xi32>, tensor<1280xi32>, tensor<1280xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1280xi8> - %474 = tosa.clamp %473 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x7x7x1280xi8>) -> tensor<1x7x7x1280xi8> - %475 = tosa.avg_pool2d %474, %276, %276 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x7x7x1280xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1280xi8> - %476 = tosa.reshape %33, %31 : (tensor<1000x1280xi8>, !tosa.shape<4>) -> tensor<1000x1x1x1280xi8> - %477 = tosa.conv2d %475, %476, %32, %275, %276 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x1280xi8>, tensor<1000x1x1x1280xi8>, tensor<1000xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1000xi32> - %478 = tosa.rescale %477, %29, %28, %272, %30 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x1000xi8> - %479 = tosa.reshape %478, %27 : (tensor<1x1x1x1000xi8>, !tosa.shape<2>) -> tensor<1x1000xi8> - %480 = tosa.rescale %479, %277, %278, %30, %272 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1000xi32> - %481 = tosa.reduce_max %480 {axis = 1 : i32} : (tensor<1x1000xi32>) -> tensor<1x1xi32> - %482 = tosa.sub %480, %481 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %483 = tosa.rescale %482, %277, %22, %272, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor<1x1000xi16> - %484 = tosa.table %483, %26 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> - %485 = tosa.table %483, %25 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> - %486 = tosa.table %483, %24 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> - %487 = tosa.table %483, %23 : (tensor<1x1000xi16>, tensor<513xi16>) -> tensor<1x1000xi32> - %488 = tosa.logical_left_shift %484, %20 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %489 = tosa.logical_left_shift %485, %19 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %490 = tosa.logical_left_shift %486, %18 : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %491 = tosa.arithmetic_right_shift %487, %17 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %492 = tosa.add %488, %489 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> - %493 = tosa.add %492, %490 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> - %494 = tosa.add %493, %491 : (tensor<1x1000xi32>, tensor<1x1000xi32>) -> tensor<1x1000xi32> - %495 = tosa.arithmetic_right_shift %494, %16 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %496 = tosa.reduce_sum %495 {axis = 1 : i32} : (tensor<1x1000xi32>) -> tensor<1x1xi32> - %497 = tosa.clz %496 : (tensor<1x1xi32>) -> tensor<1x1xi32> - %498 = tosa.sub %497, %18 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %499 = tosa.logical_left_shift %496, %498 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %500 = tosa.mul %499, %12, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %501 = tosa.add %500, %13 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %502 = tosa.mul %501, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %503 = tosa.sub %14, %502 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %504 = tosa.mul %501, %503, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %505 = tosa.mul %504, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %506 = tosa.add %501, %505 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %507 = tosa.mul %506, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %508 = tosa.sub %14, %507 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %509 = tosa.mul %506, %508, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %510 = tosa.mul %509, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %511 = tosa.add %506, %510 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %512 = tosa.mul %511, %499, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %513 = tosa.sub %14, %512 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %514 = tosa.mul %511, %513, %117 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %515 = tosa.mul %514, %15, %276 : (tensor<1x1xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1xi32> - %516 = tosa.add %511, %515 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %517 = tosa.mul %494, %516, %278 : (tensor<1x1000xi32>, tensor<1x1xi32>, tensor<1xi8>) -> tensor<1x1000xi32> - %518 = tosa.sub %11, %497 : (tensor<1x1xi32>, tensor<1x1xi32>) -> tensor<1x1xi32> - %519 = tosa.arithmetic_right_shift %517, %518 {round = true} : (tensor<1x1000xi32>, tensor<1x1xi32>) -> tensor<1x1000xi32> - %520 = tosa.rescale %519, %277, %278, %272, %275 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1000xi8> - %521 = tosa.rescale %520, %277, %278, %275, %275 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1000xi8> - %522 = tosa.rescale %521, %277, %278, %275, %276 {input_unsigned = false, output_unsigned = true, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1000xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1000xui8> - return %522 : tensor<1x1000xui8> - } -} diff --git a/tests/gold/test_python_api/har_int8.mlir b/tests/gold/test_python_api/har_int8.mlir deleted file mode 100644 index e66ed22..0000000 --- a/tests/gold/test_python_api/har_int8.mlir +++ /dev/null @@ -1,117 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor) -> tensor attributes {tf.entry_function = {inputs = "conv2d_input", outputs = "Identity"}} { - %0 = "tosa.const"() <{values = dense<35> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %1 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %2 = "tosa.const"() <{values = dense<-1010580540> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %3 = "tosa.const"() <{values = dense<1515870810> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %4 = "tosa.const"() <{values = dense<536870912> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %5 = "tosa.const"() <{values = dense<4> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %6 = "tosa.const"() <{values = dense<12> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %7 = "tosa.const"() <{values = dense<7> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %8 = "tosa.const"() <{values = dense<1> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %9 = "tosa.const"() <{values = dense<9> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %10 = "tosa.const"() <{values = dense<17> : tensor<1x1xi32>}> : () -> tensor<1x1xi32> - %11 = "tosa.const"() <{values = dense<0> : tensor<1xi16>}> : () -> tensor<1xi16> - %12 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<513xi16>}> : () -> tensor<513xi16> - %17 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %18 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %20 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> - %21 = "tosa.const"() <{values = dense<1078364279> : tensor<1xi32>}> : () -> tensor<1xi32> - %22 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %23 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<6xi32>}> : () -> tensor<6xi32> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<6x128xi8>}> : () -> tensor<6x128xi8> - %26 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> - %27 = "tosa.const"() <{values = dense<1596441372> : tensor<1xi32>}> : () -> tensor<1xi32> - %28 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %29 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x128xi8>}> : () -> tensor<128x128xi8> - %32 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %33 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> - %34 = "tosa.const"() <{values = dense<1440829658> : tensor<1xi32>}> : () -> tensor<1xi32> - %35 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x5632xi8>}> : () -> tensor<128x5632xi8> - %39 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %40 = tosa.const_shape {values = dense<0> : tensor<4xindex>} : () -> !tosa.shape<4> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %43 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %44 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x2x2x1xi8>}> : () -> tensor<128x2x2x1xi8> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %47 = "tosa.const"() <{values = dense<-45> : tensor<1xi8>}> : () -> tensor<1xi8> - %48 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %49 = tosa.conv2d %arg0, %45, %46, %47, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x2x2x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %50 = tosa.rescale %49, %42, %41, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %51 = tosa.clamp %50 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %52 = tosa.slice %51, %40, %39 : (tensor, !tosa.shape<4>, !tosa.shape<4>) -> tensor - %53 = tosa.max_pool2d %52 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %54 = tosa.reshape %53, %36 : (tensor, !tosa.shape<4>) -> tensor - %55 = tosa.reshape %38, %35 : (tensor<128x5632xi8>, !tosa.shape<4>) -> tensor<128x1x1x5632xi8> - %56 = tosa.conv2d %54, %55, %37, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x5632xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %57 = tosa.rescale %56, %34, %33, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %58 = tosa.reshape %57, %32 : (tensor, !tosa.shape<2>) -> tensor - %59 = tosa.clamp %58 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %60 = tosa.reshape %59, %29 : (tensor, !tosa.shape<4>) -> tensor - %61 = tosa.reshape %31, %28 : (tensor<128x128xi8>, !tosa.shape<4>) -> tensor<128x1x1x128xi8> - %62 = tosa.conv2d %60, %61, %30, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x128xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %63 = tosa.rescale %62, %27, %26, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %64 = tosa.reshape %63, %32 : (tensor, !tosa.shape<2>) -> tensor - %65 = tosa.clamp %64 {max_val = 127 : i8, min_val = -128 : i8} : (tensor) -> tensor - %66 = tosa.reshape %65, %29 : (tensor, !tosa.shape<4>) -> tensor - %67 = tosa.reshape %25, %23 : (tensor<6x128xi8>, !tosa.shape<4>) -> tensor<6x1x1x128xi8> - %68 = tosa.conv2d %66, %67, %24, %43, %48 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<6x1x1x128xi8>, tensor<6xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %69 = tosa.rescale %68, %21, %20, %44, %22 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %70 = tosa.reshape %69, %19 : (tensor, !tosa.shape<2>) -> tensor - %71 = tosa.rescale %70, %18, %17, %22, %44 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %72 = tosa.reduce_max %71 {axis = 1 : i32} : (tensor) -> tensor - %73 = tosa.sub %71, %72 : (tensor, tensor) -> tensor - %74 = tosa.rescale %73, %18, %12, %44, %11 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi16>) -> tensor - %75 = tosa.table %74, %16 : (tensor, tensor<513xi16>) -> tensor - %76 = tosa.table %74, %15 : (tensor, tensor<513xi16>) -> tensor - %77 = tosa.table %74, %14 : (tensor, tensor<513xi16>) -> tensor - %78 = tosa.table %74, %13 : (tensor, tensor<513xi16>) -> tensor - %79 = tosa.logical_left_shift %75, %10 : (tensor, tensor<1x1xi32>) -> tensor - %80 = tosa.logical_left_shift %76, %9 : (tensor, tensor<1x1xi32>) -> tensor - %81 = tosa.logical_left_shift %77, %8 : (tensor, tensor<1x1xi32>) -> tensor - %82 = tosa.arithmetic_right_shift %78, %7 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %83 = tosa.add %79, %80 : (tensor, tensor) -> tensor - %84 = tosa.add %83, %81 : (tensor, tensor) -> tensor - %85 = tosa.add %84, %82 : (tensor, tensor) -> tensor - %86 = tosa.arithmetic_right_shift %85, %6 {round = true} : (tensor, tensor<1x1xi32>) -> tensor - %87 = tosa.reduce_sum %86 {axis = 1 : i32} : (tensor) -> tensor - %88 = tosa.clz %87 : (tensor) -> tensor - %89 = tosa.sub %88, %8 : (tensor, tensor<1x1xi32>) -> tensor - %90 = tosa.logical_left_shift %87, %89 : (tensor, tensor) -> tensor - %91 = tosa.mul %90, %2, %1 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %92 = tosa.add %91, %3 : (tensor, tensor<1x1xi32>) -> tensor - %93 = tosa.mul %92, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %94 = tosa.sub %4, %93 : (tensor<1x1xi32>, tensor) -> tensor - %95 = tosa.mul %92, %94, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %96 = tosa.mul %95, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %97 = tosa.add %92, %96 : (tensor, tensor) -> tensor - %98 = tosa.mul %97, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %99 = tosa.sub %4, %98 : (tensor<1x1xi32>, tensor) -> tensor - %100 = tosa.mul %97, %99, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %101 = tosa.mul %100, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %102 = tosa.add %97, %101 : (tensor, tensor) -> tensor - %103 = tosa.mul %102, %90, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %104 = tosa.sub %4, %103 : (tensor<1x1xi32>, tensor) -> tensor - %105 = tosa.mul %102, %104, %1 : (tensor, tensor, tensor<1xi8>) -> tensor - %106 = tosa.mul %105, %5, %48 : (tensor, tensor<1x1xi32>, tensor<1xi8>) -> tensor - %107 = tosa.add %102, %106 : (tensor, tensor) -> tensor - %108 = tosa.mul %85, %107, %17 : (tensor, tensor, tensor<1xi8>) -> tensor - %109 = tosa.sub %0, %88 : (tensor<1x1xi32>, tensor) -> tensor - %110 = tosa.arithmetic_right_shift %108, %109 {round = true} : (tensor, tensor) -> tensor - %111 = tosa.rescale %110, %18, %17, %44, %43 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - return %111 : tensor - } -} diff --git a/tests/gold/test_python_api/kws_micronet_s.mlir b/tests/gold/test_python_api/kws_micronet_s.mlir deleted file mode 100644 index f9cf330..0000000 --- a/tests/gold/test_python_api/kws_micronet_s.mlir +++ /dev/null @@ -1,103 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x49x10x1xi8>) -> tensor<1x12xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %3 = "tosa.const"() <{values = dense<41> : tensor<12xi8>}> : () -> tensor<12xi8> - %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %5 = "tosa.const"() <{values = dense<-49> : tensor<1xi8>}> : () -> tensor<1xi8> - %6 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %7 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x196xi8>}> : () -> tensor<12x1x1x196xi8> - %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi8>}> : () -> tensor<196xi8> - %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi32>}> : () -> tensor<196xi32> - %10 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196xi32>}> : () -> tensor<196xi32> - %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<196x1x1x84xi8>}> : () -> tensor<196x1x1x84xi8> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x84xi8>}> : () -> tensor<84x1x1x84xi8> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x84xi8>}> : () -> tensor<84x1x1x84xi8> - %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x1x1x112xi8>}> : () -> tensor<84x1x1x112xi8> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x112xi8>}> : () -> tensor<1x3x3x112xi8> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi8>}> : () -> tensor<112xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112xi32>}> : () -> tensor<112xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<112x1x1x84xi8>}> : () -> tensor<112x1x1x84xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x84xi8>}> : () -> tensor<1x3x3x84xi8> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi8>}> : () -> tensor<84xi8> - %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %50 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %51 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84x10x4x1xi8>}> : () -> tensor<84x10x4x1xi8> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<84xi32>}> : () -> tensor<84xi32> - %54 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> - %55 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %56 = tosa.conv2d %arg0, %52, %53, %54, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x49x10x1xi8>, tensor<84x10x4x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x49x10x84xi32> - %57 = tosa.rescale %56, %49, %48, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x49x10x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x49x10x84xi8> - %58 = tosa.clamp %57 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x49x10x84xi8>) -> tensor<1x49x10x84xi8> - %59 = tosa.reshape %47, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> - %60 = tosa.depthwise_conv2d %58, %59, %46, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x49x10x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %61 = tosa.rescale %60, %45, %44, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %62 = tosa.clamp %61 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %63 = tosa.conv2d %62, %43, %42, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<112x1x1x84xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x112xi32> - %64 = tosa.rescale %63, %41, %40, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x112xi8> - %65 = tosa.clamp %64 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x112xi8>) -> tensor<1x25x5x112xi8> - %66 = tosa.reshape %39, %0 : (tensor<1x3x3x112xi8>, !tosa.shape<4>) -> tensor<3x3x112x1xi8> - %67 = tosa.depthwise_conv2d %65, %66, %38, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x112xi8>, tensor<3x3x112x1xi8>, tensor<112xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x112xi32> - %68 = tosa.rescale %67, %37, %36, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x112xi32>, tensor<112xi32>, tensor<112xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x112xi8> - %69 = tosa.clamp %68 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x112xi8>) -> tensor<1x25x5x112xi8> - %70 = tosa.conv2d %69, %35, %34, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x112xi8>, tensor<84x1x1x112xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %71 = tosa.rescale %70, %33, %32, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %72 = tosa.clamp %71 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %73 = tosa.reshape %31, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> - %74 = tosa.depthwise_conv2d %72, %73, %30, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %75 = tosa.rescale %74, %29, %28, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %76 = tosa.clamp %75 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %77 = tosa.conv2d %76, %27, %26, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<84x1x1x84xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %78 = tosa.rescale %77, %25, %24, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %79 = tosa.clamp %78 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %80 = tosa.reshape %23, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> - %81 = tosa.depthwise_conv2d %79, %80, %22, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %82 = tosa.rescale %81, %21, %20, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %83 = tosa.clamp %82 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %84 = tosa.conv2d %83, %19, %18, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<84x1x1x84xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %85 = tosa.rescale %84, %17, %16, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %86 = tosa.clamp %85 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %87 = tosa.reshape %15, %1 : (tensor<1x3x3x84xi8>, !tosa.shape<4>) -> tensor<3x3x84x1xi8> - %88 = tosa.depthwise_conv2d %86, %87, %14, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<3x3x84x1xi8>, tensor<84xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x84xi32> - %89 = tosa.rescale %88, %13, %12, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x84xi32>, tensor<84xi32>, tensor<84xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x84xi8> - %90 = tosa.clamp %89 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x84xi8>) -> tensor<1x25x5x84xi8> - %91 = tosa.conv2d %90, %11, %10, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x25x5x84xi8>, tensor<196x1x1x84xi8>, tensor<196xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x25x5x196xi32> - %92 = tosa.rescale %91, %9, %8, %51, %50 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x25x5x196xi32>, tensor<196xi32>, tensor<196xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x25x5x196xi8> - %93 = tosa.clamp %92 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x25x5x196xi8>) -> tensor<1x25x5x196xi8> - %94 = tosa.avg_pool2d %93, %55, %55 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x25x5x196xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x196xi8> - %95 = tosa.conv2d %94, %7, %6, %50, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x196xi8>, tensor<12x1x1x196xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x12xi32> - %96 = tosa.rescale %95, %4, %3, %51, %5 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x12xi8> - %97 = tosa.reshape %96, %2 : (tensor<1x1x1x12xi8>, !tosa.shape<2>) -> tensor<1x12xi8> - return %97 : tensor<1x12xi8> - } -} diff --git a/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir b/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir deleted file mode 100644 index 4db4c11..0000000 --- a/tests/gold/test_python_api/mobilenet_v2_1.0_224_quantized_1_default_1.mlir +++ /dev/null @@ -1,427 +0,0 @@ -module attributes {tfl.description = "TOCO Converted.", tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x224x224x3xui8>) -> tensor<1x1001xui8> attributes {tf.entry_function = {inputs = "input", outputs = "output"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %8 = "tosa.const"() <{values = dense<42> : tensor<1xi8>}> : () -> tensor<1xi8> - %9 = "tosa.const"() <{values = dense<1769517290> : tensor<1xi32>}> : () -> tensor<1xi32> - %10 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> - %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1001xi32>}> : () -> tensor<1001xi32> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1001x1x1x1280xi8>}> : () -> tensor<1001x1x1x1280xi8> - %13 = "tosa.const"() <{values = dense<1764866200> : tensor<1xi32>}> : () -> tensor<1xi32> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280xi32>}> : () -> tensor<1280xi32> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1280x1x1x320xi8>}> : () -> tensor<1280x1x1x320xi8> - %16 = "tosa.const"() <{values = dense<1771764546> : tensor<1xi32>}> : () -> tensor<1xi32> - %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320xi32>}> : () -> tensor<320xi32> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<320x1x1x960xi8>}> : () -> tensor<320x1x1x960xi8> - %19 = "tosa.const"() <{values = dense<1413581440> : tensor<1xi32>}> : () -> tensor<1xi32> - %20 = "tosa.const"() <{values = dense<73> : tensor<1xi8>}> : () -> tensor<1xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> - %23 = "tosa.const"() <{values = dense<1255718954> : tensor<1xi32>}> : () -> tensor<1xi32> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> - %26 = "tosa.const"() <{values = dense<1733986385> : tensor<1xi32>}> : () -> tensor<1xi32> - %27 = "tosa.const"() <{values = dense<1908224859> : tensor<1xi32>}> : () -> tensor<1xi32> - %28 = "tosa.const"() <{values = dense<38> : tensor<1xi8>}> : () -> tensor<1xi8> - %29 = "tosa.const"() <{values = dense<1409905126> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x960xi8>}> : () -> tensor<160x1x1x960xi8> - %32 = "tosa.const"() <{values = dense<1471261696> : tensor<1xi32>}> : () -> tensor<1xi32> - %33 = "tosa.const"() <{values = dense<-26> : tensor<1xi8>}> : () -> tensor<1xi8> - %34 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> - %36 = "tosa.const"() <{values = dense<1403672173> : tensor<1xi32>}> : () -> tensor<1xi32> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> - %39 = "tosa.const"() <{values = dense<1886271458> : tensor<1xi32>}> : () -> tensor<1xi32> - %40 = "tosa.const"() <{values = dense<1629649814> : tensor<1xi32>}> : () -> tensor<1xi32> - %41 = "tosa.const"() <{values = dense<2034086883> : tensor<1xi32>}> : () -> tensor<1xi32> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x960xi8>}> : () -> tensor<160x1x1x960xi8> - %44 = "tosa.const"() <{values = dense<1431685120> : tensor<1xi32>}> : () -> tensor<1xi32> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x960xi8>}> : () -> tensor<1x3x3x960xi8> - %47 = "tosa.const"() <{values = dense<1563714083> : tensor<1xi32>}> : () -> tensor<1xi32> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960xi32>}> : () -> tensor<960xi32> - %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<960x1x1x160xi8>}> : () -> tensor<960x1x1x160xi8> - %50 = "tosa.const"() <{values = dense<1846357403> : tensor<1xi32>}> : () -> tensor<1xi32> - %51 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160xi32>}> : () -> tensor<160xi32> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<160x1x1x576xi8>}> : () -> tensor<160x1x1x576xi8> - %54 = "tosa.const"() <{values = dense<2097034112> : tensor<1xi32>}> : () -> tensor<1xi32> - %55 = "tosa.const"() <{values = dense<-36> : tensor<1xi8>}> : () -> tensor<1xi8> - %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> - %58 = "tosa.const"() <{values = dense<1885290042> : tensor<1xi32>}> : () -> tensor<1xi32> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> - %61 = "tosa.const"() <{values = dense<1713159654> : tensor<1xi32>}> : () -> tensor<1xi32> - %62 = "tosa.const"() <{values = dense<2031709950> : tensor<1xi32>}> : () -> tensor<1xi32> - %63 = "tosa.const"() <{values = dense<1666054802> : tensor<1xi32>}> : () -> tensor<1xi32> - %64 = "tosa.const"() <{values = dense<26> : tensor<1xi8>}> : () -> tensor<1xi8> - %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x576xi8>}> : () -> tensor<96x1x1x576xi8> - %67 = "tosa.const"() <{values = dense<1279693056> : tensor<1xi32>}> : () -> tensor<1xi32> - %68 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> - %71 = "tosa.const"() <{values = dense<1878841398> : tensor<1xi32>}> : () -> tensor<1xi32> - %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> - %74 = "tosa.const"() <{values = dense<2079856357> : tensor<1xi32>}> : () -> tensor<1xi32> - %75 = "tosa.const"() <{values = dense<1552338772> : tensor<1xi32>}> : () -> tensor<1xi32> - %76 = "tosa.const"() <{values = dense<1758291557> : tensor<1xi32>}> : () -> tensor<1xi32> - %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x576xi8>}> : () -> tensor<96x1x1x576xi8> - %79 = "tosa.const"() <{values = dense<1216473984> : tensor<1xi32>}> : () -> tensor<1xi32> - %80 = "tosa.const"() <{values = dense<-62> : tensor<1xi8>}> : () -> tensor<1xi8> - %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x576xi8>}> : () -> tensor<1x3x3x576xi8> - %83 = "tosa.const"() <{values = dense<1625450438> : tensor<1xi32>}> : () -> tensor<1xi32> - %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576xi32>}> : () -> tensor<576xi32> - %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<576x1x1x96xi8>}> : () -> tensor<576x1x1x96xi8> - %86 = "tosa.const"() <{values = dense<1127574829> : tensor<1xi32>}> : () -> tensor<1xi32> - %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x384xi8>}> : () -> tensor<96x1x1x384xi8> - %89 = "tosa.const"() <{values = dense<2137714944> : tensor<1xi32>}> : () -> tensor<1xi32> - %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> - %92 = "tosa.const"() <{values = dense<2095071944> : tensor<1xi32>}> : () -> tensor<1xi32> - %93 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> - %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %95 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> - %96 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> - %97 = "tosa.const"() <{values = dense<1946727039> : tensor<1xi32>}> : () -> tensor<1xi32> - %98 = "tosa.const"() <{values = dense<1680680778> : tensor<1xi32>}> : () -> tensor<1xi32> - %99 = "tosa.const"() <{values = dense<1619097955> : tensor<1xi32>}> : () -> tensor<1xi32> - %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> - %102 = "tosa.const"() <{values = dense<1401151616> : tensor<1xi32>}> : () -> tensor<1xi32> - %103 = "tosa.const"() <{values = dense<27> : tensor<1xi8>}> : () -> tensor<1xi8> - %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> - %106 = "tosa.const"() <{values = dense<1601894870> : tensor<1xi32>}> : () -> tensor<1xi32> - %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> - %109 = "tosa.const"() <{values = dense<2033798859> : tensor<1xi32>}> : () -> tensor<1xi32> - %110 = "tosa.const"() <{values = dense<1671053707> : tensor<1xi32>}> : () -> tensor<1xi32> - %111 = "tosa.const"() <{values = dense<1133754932> : tensor<1xi32>}> : () -> tensor<1xi32> - %112 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> - %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> - %115 = "tosa.const"() <{values = dense<1800720000> : tensor<1xi32>}> : () -> tensor<1xi32> - %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %117 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> - %118 = "tosa.const"() <{values = dense<1624188629> : tensor<1xi32>}> : () -> tensor<1xi32> - %119 = "tosa.const"() <{values = dense<6> : tensor<1xi8>}> : () -> tensor<1xi8> - %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> - %122 = "tosa.const"() <{values = dense<2105410924> : tensor<1xi32>}> : () -> tensor<1xi32> - %123 = "tosa.const"() <{values = dense<1999568813> : tensor<1xi32>}> : () -> tensor<1xi32> - %124 = "tosa.const"() <{values = dense<1257485775> : tensor<1xi32>}> : () -> tensor<1xi32> - %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %126 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x384xi8>}> : () -> tensor<64x1x1x384xi8> - %127 = "tosa.const"() <{values = dense<2093439744> : tensor<1xi32>}> : () -> tensor<1xi32> - %128 = "tosa.const"() <{values = dense<-18> : tensor<1xi8>}> : () -> tensor<1xi8> - %129 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x384xi8>}> : () -> tensor<1x3x3x384xi8> - %131 = "tosa.const"() <{values = dense<1682901674> : tensor<1xi32>}> : () -> tensor<1xi32> - %132 = "tosa.const"() <{values = dense<-3> : tensor<1xi8>}> : () -> tensor<1xi8> - %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384xi32>}> : () -> tensor<384xi32> - %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<384x1x1x64xi8>}> : () -> tensor<384x1x1x64xi8> - %135 = "tosa.const"() <{values = dense<2037336008> : tensor<1xi32>}> : () -> tensor<1xi32> - %136 = "tosa.const"() <{values = dense<-2> : tensor<1xi8>}> : () -> tensor<1xi8> - %137 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> - %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x192xi8>}> : () -> tensor<64x1x1x192xi8> - %140 = "tosa.const"() <{values = dense<1386468480> : tensor<1xi32>}> : () -> tensor<1xi32> - %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> - %143 = "tosa.const"() <{values = dense<1857304257> : tensor<1xi32>}> : () -> tensor<1xi32> - %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> - %146 = "tosa.const"() <{values = dense<1681202601> : tensor<1xi32>}> : () -> tensor<1xi32> - %147 = "tosa.const"() <{values = dense<2131432016> : tensor<1xi32>}> : () -> tensor<1xi32> - %148 = "tosa.const"() <{values = dense<1836050801> : tensor<1xi32>}> : () -> tensor<1xi32> - %149 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> - %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x192xi8>}> : () -> tensor<32x1x1x192xi8> - %152 = "tosa.const"() <{values = dense<1358890624> : tensor<1xi32>}> : () -> tensor<1xi32> - %153 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> - %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> - %156 = "tosa.const"() <{values = dense<2070508920> : tensor<1xi32>}> : () -> tensor<1xi32> - %157 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> - %158 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %159 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> - %160 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> - %161 = "tosa.const"() <{values = dense<1884945131> : tensor<1xi32>}> : () -> tensor<1xi32> - %162 = "tosa.const"() <{values = dense<2057234100> : tensor<1xi32>}> : () -> tensor<1xi32> - %163 = "tosa.const"() <{values = dense<1081754833> : tensor<1xi32>}> : () -> tensor<1xi32> - %164 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> - %165 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> - %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x192xi8>}> : () -> tensor<32x1x1x192xi8> - %168 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> - %169 = "tosa.const"() <{values = dense<1120997760> : tensor<1xi32>}> : () -> tensor<1xi32> - %170 = "tosa.const"() <{values = dense<-10> : tensor<1xi8>}> : () -> tensor<1xi8> - %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %172 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> - %173 = "tosa.const"() <{values = dense<1227338673> : tensor<1xi32>}> : () -> tensor<1xi32> - %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x32xi8>}> : () -> tensor<192x1x1x32xi8> - %176 = "tosa.const"() <{values = dense<1995624654> : tensor<1xi32>}> : () -> tensor<1xi32> - %177 = "tosa.const"() <{values = dense<-17> : tensor<1xi8>}> : () -> tensor<1xi8> - %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x144xi8>}> : () -> tensor<32x1x1x144xi8> - %180 = "tosa.const"() <{values = dense<1182172288> : tensor<1xi32>}> : () -> tensor<1xi32> - %181 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> - %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> - %184 = "tosa.const"() <{values = dense<1892639773> : tensor<1xi32>}> : () -> tensor<1xi32> - %185 = "tosa.const"() <{values = dense<-24> : tensor<1xi8>}> : () -> tensor<1xi8> - %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> - %188 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> - %189 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> - %190 = "tosa.const"() <{values = dense<1995052007> : tensor<1xi32>}> : () -> tensor<1xi32> - %191 = "tosa.const"() <{values = dense<1475367762> : tensor<1xi32>}> : () -> tensor<1xi32> - %192 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> - %193 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> - %194 = "tosa.const"() <{values = dense<1766066391> : tensor<1xi32>}> : () -> tensor<1xi32> - %195 = "tosa.const"() <{values = dense<8> : tensor<1xi8>}> : () -> tensor<1xi8> - %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x144xi8>}> : () -> tensor<24x1x1x144xi8> - %198 = "tosa.const"() <{values = dense<1458735232> : tensor<1xi32>}> : () -> tensor<1xi32> - %199 = "tosa.const"() <{values = dense<-76> : tensor<1xi8>}> : () -> tensor<1xi8> - %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x144xi8>}> : () -> tensor<1x3x3x144xi8> - %202 = "tosa.const"() <{values = dense<35> : tensor<1xi8>}> : () -> tensor<1xi8> - %203 = "tosa.const"() <{values = dense<1472565610> : tensor<1xi32>}> : () -> tensor<1xi32> - %204 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> - %205 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x24xi8>}> : () -> tensor<144x1x1x24xi8> - %207 = "tosa.const"() <{values = dense<40> : tensor<1xi8>}> : () -> tensor<1xi8> - %208 = "tosa.const"() <{values = dense<2113598676> : tensor<1xi32>}> : () -> tensor<1xi32> - %209 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> - %210 = "tosa.const"() <{values = dense<28> : tensor<1xi8>}> : () -> tensor<1xi8> - %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> - %213 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> - %214 = "tosa.const"() <{values = dense<1440987008> : tensor<1xi32>}> : () -> tensor<1xi32> - %215 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> - %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %218 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> - %219 = "tosa.const"() <{values = dense<1262668951> : tensor<1xi32>}> : () -> tensor<1xi32> - %220 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> - %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> - %223 = "tosa.const"() <{values = dense<39> : tensor<1xi8>}> : () -> tensor<1xi8> - %224 = "tosa.const"() <{values = dense<1363945730> : tensor<1xi32>}> : () -> tensor<1xi32> - %225 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> - %226 = "tosa.const"() <{values = dense<12> : tensor<1xi8>}> : () -> tensor<1xi8> - %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x32xi8>}> : () -> tensor<16x1x1x32xi8> - %229 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %230 = "tosa.const"() <{values = dense<1476161024> : tensor<1xi32>}> : () -> tensor<1xi32> - %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %232 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x32xi8>}> : () -> tensor<1x3x3x32xi8> - %233 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> - %234 = "tosa.const"() <{values = dense<1550200454> : tensor<1xi32>}> : () -> tensor<1xi32> - %235 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %236 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> - %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %238 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x3xi8>}> : () -> tensor<32x3x3x3xi8> - %239 = "tosa.const"() <{values = dense<-70> : tensor<1xi8>}> : () -> tensor<1xi8> - %240 = "tosa.const"() <{values = dense<58> : tensor<1xi8>}> : () -> tensor<1xi8> - %241 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %242 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %243 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %244 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %245 = tosa.rescale %arg0, %241, %242, %243, %244 {input_unsigned = true, output_unsigned = false, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x224x224x3xui8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x224x224x3xi8> - %246 = tosa.conv2d %245, %238, %237, %244, %236 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x224x224x3xi8>, tensor<32x3x3x3xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> - %247 = tosa.rescale %246, %234, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> - %248 = tosa.reshape %232, %6 : (tensor<1x3x3x32xi8>, !tosa.shape<4>) -> tensor<3x3x32x1xi8> - %249 = tosa.depthwise_conv2d %247, %248, %231, %243, %233 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<3x3x32x1xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x32xi32> - %250 = tosa.rescale %249, %230, %229, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x32xi8> - %251 = tosa.conv2d %250, %228, %227, %243, %226 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x32xi8>, tensor<16x1x1x32xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x16xi32> - %252 = tosa.rescale %251, %224, %223, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x16xi8> - %253 = tosa.conv2d %252, %222, %221, %225, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x112x112x96xi32> - %254 = tosa.rescale %253, %219, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x112x112x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x112x112x96xi8> - %255 = tosa.reshape %217, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %256 = tosa.depthwise_conv2d %254, %255, %216, %243, %215 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x112x112x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x96xi32> - %257 = tosa.rescale %256, %214, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x96xi8> - %258 = tosa.conv2d %257, %212, %211, %243, %210 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> - %259 = tosa.rescale %258, %208, %207, %235, %209 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %260 = tosa.conv2d %259, %206, %205, %209, %204 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %261 = tosa.rescale %260, %203, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %262 = tosa.reshape %201, %4 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> - %263 = tosa.depthwise_conv2d %261, %262, %200, %243, %199 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %264 = tosa.rescale %263, %198, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %265 = tosa.conv2d %264, %197, %196, %243, %236 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<24x1x1x144xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x24xi32> - %266 = tosa.rescale %265, %194, %207, %235, %195 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %267 = tosa.rescale %266, %241, %193, %195, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %268 = tosa.rescale %259, %241, %192, %209, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %269 = tosa.rescale %268, %191, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x56x56x24xi32> - %270 = tosa.add %267, %269 : (tensor<1x56x56x24xi32>, tensor<1x56x56x24xi32>) -> tensor<1x56x56x24xi32> - %271 = tosa.rescale %270, %190, %189, %235, %188 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x24xi8> - %272 = tosa.conv2d %271, %187, %186, %188, %185 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x24xi8>, tensor<144x1x1x24xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x56x56x144xi32> - %273 = tosa.rescale %272, %184, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x56x56x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x56x56x144xi8> - %274 = tosa.reshape %183, %4 : (tensor<1x3x3x144xi8>, !tosa.shape<4>) -> tensor<3x3x144x1xi8> - %275 = tosa.depthwise_conv2d %273, %274, %182, %243, %181 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x56x56x144xi8>, tensor<3x3x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x144xi32> - %276 = tosa.rescale %275, %180, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x144xi8> - %277 = tosa.conv2d %276, %179, %178, %243, %177 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x144xi8>, tensor<32x1x1x144xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> - %278 = tosa.rescale %277, %176, %207, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> - %279 = tosa.conv2d %278, %175, %174, %220, %244 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> - %280 = tosa.rescale %279, %173, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> - %281 = tosa.reshape %172, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> - %282 = tosa.depthwise_conv2d %280, %281, %171, %243, %170 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> - %283 = tosa.rescale %282, %169, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> - %284 = tosa.conv2d %283, %167, %166, %243, %165 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<32x1x1x192xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> - %285 = tosa.rescale %284, %163, %223, %235, %164 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> - %286 = tosa.rescale %285, %241, %193, %164, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %287 = tosa.rescale %278, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %288 = tosa.rescale %287, %162, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %289 = tosa.add %286, %288 : (tensor<1x28x28x32xi32>, tensor<1x28x28x32xi32>) -> tensor<1x28x28x32xi32> - %290 = tosa.rescale %289, %161, %189, %235, %160 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> - %291 = tosa.conv2d %290, %159, %158, %160, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> - %292 = tosa.rescale %291, %156, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> - %293 = tosa.reshape %155, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> - %294 = tosa.depthwise_conv2d %292, %293, %154, %243, %153 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> - %295 = tosa.rescale %294, %152, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> - %296 = tosa.conv2d %295, %151, %150, %243, %244 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<32x1x1x192xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x32xi32> - %297 = tosa.rescale %296, %148, %207, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> - %298 = tosa.rescale %297, %241, %192, %149, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %299 = tosa.rescale %298, %147, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %300 = tosa.rescale %290, %241, %193, %160, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x28x28x32xi32> - %301 = tosa.add %299, %300 : (tensor<1x28x28x32xi32>, tensor<1x28x28x32xi32>) -> tensor<1x28x28x32xi32> - %302 = tosa.rescale %301, %146, %189, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x32xi8> - %303 = tosa.conv2d %302, %145, %144, %149, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x32xi8>, tensor<192x1x1x32xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x28x28x192xi32> - %304 = tosa.rescale %303, %143, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x28x28x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x28x28x192xi8> - %305 = tosa.reshape %142, %3 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> - %306 = tosa.depthwise_conv2d %304, %305, %141, %243, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x28x28x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x192xi32> - %307 = tosa.rescale %306, %140, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x192xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x192xi8> - %308 = tosa.conv2d %307, %139, %138, %243, %137 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x192xi8>, tensor<64x1x1x192xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> - %309 = tosa.rescale %308, %135, %207, %235, %136 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %310 = tosa.conv2d %309, %134, %133, %136, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %311 = tosa.rescale %310, %131, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %312 = tosa.reshape %130, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> - %313 = tosa.depthwise_conv2d %311, %312, %129, %243, %128 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %314 = tosa.rescale %313, %127, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %315 = tosa.conv2d %314, %126, %125, %243, %149 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> - %316 = tosa.rescale %315, %124, %223, %235, %215 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %317 = tosa.rescale %316, %241, %192, %215, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %318 = tosa.rescale %317, %123, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %319 = tosa.rescale %309, %241, %193, %136, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %320 = tosa.add %318, %319 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> - %321 = tosa.rescale %320, %122, %189, %235, %236 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %322 = tosa.conv2d %321, %121, %120, %236, %119 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %323 = tosa.rescale %322, %118, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %324 = tosa.reshape %117, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> - %325 = tosa.depthwise_conv2d %323, %324, %116, %243, %188 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %326 = tosa.rescale %325, %115, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %327 = tosa.conv2d %326, %114, %113, %243, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> - %328 = tosa.rescale %327, %111, %223, %235, %112 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %329 = tosa.rescale %328, %241, %192, %112, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %330 = tosa.rescale %329, %110, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %331 = tosa.rescale %321, %241, %193, %236, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %332 = tosa.add %330, %331 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> - %333 = tosa.rescale %332, %109, %189, %235, %149 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %334 = tosa.conv2d %333, %108, %107, %149, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %335 = tosa.rescale %334, %106, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %336 = tosa.reshape %105, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> - %337 = tosa.depthwise_conv2d %335, %336, %104, %243, %103 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %338 = tosa.rescale %337, %102, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %339 = tosa.conv2d %338, %101, %100, %243, %204 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<64x1x1x384xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x64xi32> - %340 = tosa.rescale %339, %99, %223, %235, %236 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %341 = tosa.rescale %340, %241, %192, %236, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %342 = tosa.rescale %341, %98, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %343 = tosa.rescale %333, %241, %193, %149, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x64xi32> - %344 = tosa.add %342, %343 : (tensor<1x14x14x64xi32>, tensor<1x14x14x64xi32>) -> tensor<1x14x14x64xi32> - %345 = tosa.rescale %344, %97, %189, %235, %96 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x64xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x64xi8> - %346 = tosa.conv2d %345, %95, %94, %96, %93 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x64xi8>, tensor<384x1x1x64xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %347 = tosa.rescale %346, %92, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %348 = tosa.reshape %91, %2 : (tensor<1x3x3x384xi8>, !tosa.shape<4>) -> tensor<3x3x384x1xi8> - %349 = tosa.depthwise_conv2d %347, %348, %90, %243, %181 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<3x3x384x1xi8>, tensor<384xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x384xi32> - %350 = tosa.rescale %349, %89, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x384xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x384xi8> - %351 = tosa.conv2d %350, %88, %87, %243, %225 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x384xi8>, tensor<96x1x1x384xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> - %352 = tosa.rescale %351, %86, %207, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> - %353 = tosa.conv2d %352, %85, %84, %225, %119 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> - %354 = tosa.rescale %353, %83, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> - %355 = tosa.reshape %82, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> - %356 = tosa.depthwise_conv2d %354, %355, %81, %243, %80 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> - %357 = tosa.rescale %356, %79, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> - %358 = tosa.conv2d %357, %78, %77, %243, %195 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<96x1x1x576xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> - %359 = tosa.rescale %358, %76, %207, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> - %360 = tosa.rescale %359, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %361 = tosa.rescale %360, %75, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %362 = tosa.rescale %352, %241, %193, %225, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %363 = tosa.add %361, %362 : (tensor<1x14x14x96xi32>, tensor<1x14x14x96xi32>) -> tensor<1x14x14x96xi32> - %364 = tosa.rescale %363, %74, %189, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> - %365 = tosa.conv2d %364, %73, %72, %220, %192 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> - %366 = tosa.rescale %365, %71, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> - %367 = tosa.reshape %70, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> - %368 = tosa.depthwise_conv2d %366, %367, %69, %243, %68 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> - %369 = tosa.rescale %368, %67, %168, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> - %370 = tosa.conv2d %369, %66, %65, %243, %64 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<96x1x1x576xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x96xi32> - %371 = tosa.rescale %370, %63, %223, %235, %220 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> - %372 = tosa.rescale %371, %241, %193, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %373 = tosa.rescale %364, %241, %192, %220, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %374 = tosa.rescale %373, %62, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x14x14x96xi32> - %375 = tosa.add %372, %374 : (tensor<1x14x14x96xi32>, tensor<1x14x14x96xi32>) -> tensor<1x14x14x96xi32> - %376 = tosa.rescale %375, %61, %189, %235, %136 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x96xi8> - %377 = tosa.conv2d %376, %60, %59, %136, %112 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x96xi8>, tensor<576x1x1x96xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x14x14x576xi32> - %378 = tosa.rescale %377, %58, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x14x14x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x14x14x576xi8> - %379 = tosa.reshape %57, %1 : (tensor<1x3x3x576xi8>, !tosa.shape<4>) -> tensor<3x3x576x1xi8> - %380 = tosa.depthwise_conv2d %378, %379, %56, %243, %55 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x14x14x576xi8>, tensor<3x3x576x1xi8>, tensor<576xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x576xi32> - %381 = tosa.rescale %380, %54, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x576xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x576xi8> - %382 = tosa.conv2d %381, %53, %52, %243, %226 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x576xi8>, tensor<160x1x1x576xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> - %383 = tosa.rescale %382, %50, %207, %235, %51 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> - %384 = tosa.conv2d %383, %49, %48, %51, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %385 = tosa.rescale %384, %47, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %386 = tosa.reshape %46, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> - %387 = tosa.depthwise_conv2d %385, %386, %45, %243, %137 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %388 = tosa.rescale %387, %44, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %389 = tosa.conv2d %388, %43, %42, %243, %193 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<160x1x1x960xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> - %390 = tosa.rescale %389, %41, %207, %235, %225 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> - %391 = tosa.rescale %390, %241, %192, %225, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %392 = tosa.rescale %391, %40, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %393 = tosa.rescale %383, %241, %193, %51, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %394 = tosa.add %392, %393 : (tensor<1x7x7x160xi32>, tensor<1x7x7x160xi32>) -> tensor<1x7x7x160xi32> - %395 = tosa.rescale %394, %39, %189, %235, %119 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> - %396 = tosa.conv2d %395, %38, %37, %119, %220 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %397 = tosa.rescale %396, %36, %233, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %398 = tosa.reshape %35, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> - %399 = tosa.depthwise_conv2d %397, %398, %34, %243, %33 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %400 = tosa.rescale %399, %32, %202, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %401 = tosa.conv2d %400, %31, %30, %243, %93 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<160x1x1x960xi8>, tensor<160xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x160xi32> - %402 = tosa.rescale %401, %29, %28, %235, %188 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> - %403 = tosa.rescale %402, %241, %193, %188, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %404 = tosa.rescale %395, %241, %192, %119, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %405 = tosa.rescale %404, %27, %229, %235, %235 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x7x7x160xi32> - %406 = tosa.add %403, %405 : (tensor<1x7x7x160xi32>, tensor<1x7x7x160xi32>) -> tensor<1x7x7x160xi32> - %407 = tosa.rescale %406, %26, %189, %235, %93 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x160xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x160xi8> - %408 = tosa.conv2d %407, %25, %24, %93, %157 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x160xi8>, tensor<960x1x1x160xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %409 = tosa.rescale %408, %23, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %410 = tosa.reshape %22, %0 : (tensor<1x3x3x960xi8>, !tosa.shape<4>) -> tensor<3x3x960x1xi8> - %411 = tosa.depthwise_conv2d %409, %410, %21, %243, %20 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<3x3x960x1xi8>, tensor<960xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x960xi32> - %412 = tosa.rescale %411, %19, %218, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x960xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x960xi8> - %413 = tosa.conv2d %412, %18, %17, %243, %177 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x960xi8>, tensor<320x1x1x960xi8>, tensor<320xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x320xi32> - %414 = tosa.rescale %413, %16, %207, %235, %160 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x320xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x320xi8> - %415 = tosa.conv2d %414, %15, %14, %160, %132 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x7x7x320xi8>, tensor<1280x1x1x320xi8>, tensor<1280xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x7x7x1280xi32> - %416 = tosa.rescale %415, %13, %213, %235, %243 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x7x7x1280xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x7x7x1280xi8> - %417 = tosa.avg_pool2d %416, %244, %244 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x7x7x1280xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1280xi8> - %418 = tosa.conv2d %417, %12, %11, %243, %10 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x1280xi8>, tensor<1001x1x1x1280xi8>, tensor<1001xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x1001xi32> - %419 = tosa.rescale %418, %9, %8, %235, %239 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x1001xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x1001xi8> - %420 = tosa.reshape %419, %7 : (tensor<1x1x1x1001xi8>, !tosa.shape<2>) -> tensor<1x1001xi8> - %421 = tosa.rescale %420, %241, %242, %239, %240 {input_unsigned = false, output_unsigned = true, per_channel = false, rounding_mode = "SINGLE_ROUND", scale32 = true} : (tensor<1x1001xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1001xui8> - return %421 : tensor<1x1001xui8> - } -} diff --git a/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir b/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir deleted file mode 100644 index e230308..0000000 --- a/tests/gold/test_python_api/ssd_mobilenet_v3_int8.mlir +++ /dev/null @@ -1,993 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.15.0\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x320x320x3xi8>) -> (tensor<1x2034x91xi8>, tensor<1x2034x4xi8>) attributes {tf.entry_function = {inputs = "normalized_input_image_tensor", outputs = "raw_outputs/class_predictions,raw_outputs/box_encodings"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %11 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %12 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %14 = "tosa.const"() <{values = dense<1862935214> : tensor<1xi32>}> : () -> tensor<1xi32> - %15 = "tosa.const"() <{values = dense<1553028373> : tensor<1xi32>}> : () -> tensor<1xi32> - %16 = "tosa.const"() <{values = dense<1582603170> : tensor<1xi32>}> : () -> tensor<1xi32> - %17 = "tosa.const"() <{values = dense<1187055602> : tensor<1xi32>}> : () -> tensor<1xi32> - %18 = "tosa.const"() <{values = dense<1118715085> : tensor<1xi32>}> : () -> tensor<1xi32> - %19 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x128xi8>}> : () -> tensor<546x1x1x128xi8> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> - %28 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %29 = "tosa.const"() <{values = dense<1835346993> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = "tosa.const"() <{values = dense<1415988625> : tensor<1xi32>}> : () -> tensor<1xi32> - %31 = "tosa.const"() <{values = dense<1183143852> : tensor<1xi32>}> : () -> tensor<1xi32> - %32 = "tosa.const"() <{values = dense<1124158657> : tensor<1xi32>}> : () -> tensor<1xi32> - %33 = "tosa.const"() <{values = dense<1214666873> : tensor<1xi32>}> : () -> tensor<1xi32> - %34 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %37 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x128xi8>}> : () -> tensor<24x1x1x128xi8> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x64xi8>}> : () -> tensor<128x1x1x64xi8> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %49 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %50 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x64xi8>}> : () -> tensor<1x3x3x64xi8> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x256xi8>}> : () -> tensor<64x1x1x256xi8> - %56 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> - %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x256xi8>}> : () -> tensor<546x1x1x256xi8> - %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> - %65 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %66 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x256xi8>}> : () -> tensor<24x1x1x256xi8> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> - %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %77 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x128xi8>}> : () -> tensor<256x1x1x128xi8> - %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %80 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %81 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> - %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x256xi8>}> : () -> tensor<128x1x1x256xi8> - %86 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> - %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x256xi8>}> : () -> tensor<546x1x1x256xi8> - %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> - %95 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %98 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> - %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %100 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x256xi8>}> : () -> tensor<24x1x1x256xi8> - %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> - %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x128xi8>}> : () -> tensor<256x1x1x128xi8> - %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %112 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x128xi8>}> : () -> tensor<1x3x3x128xi8> - %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x512xi8>}> : () -> tensor<128x1x1x512xi8> - %117 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> - %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x512xi8>}> : () -> tensor<546x1x1x512xi8> - %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> - %123 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %124 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %125 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x512xi8>}> : () -> tensor<1x3x3x512xi8> - %126 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %128 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %129 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> - %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x512xi8>}> : () -> tensor<24x1x1x512xi8> - %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> - %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x512xi8>}> : () -> tensor<1x3x3x512xi8> - %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> - %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %139 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x1x1x256xi8>}> : () -> tensor<512x1x1x256xi8> - %140 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %141 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %142 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x256xi8>}> : () -> tensor<1x3x3x256xi8> - %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %145 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x288xi8>}> : () -> tensor<256x1x1x288xi8> - %148 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi8>}> : () -> tensor<546xi8> - %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %151 = "tosa.const"() <{values = dense<127> : tensor<1xi8>}> : () -> tensor<1xi8> - %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546xi32>}> : () -> tensor<546xi32> - %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<546x1x1x288xi8>}> : () -> tensor<546x1x1x288xi8> - %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %156 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %157 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> - %158 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %159 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %161 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> - %162 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x288xi8>}> : () -> tensor<24x1x1x288xi8> - %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %166 = "tosa.const"() <{values = dense<-114> : tensor<1xi8>}> : () -> tensor<1xi8> - %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> - %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %172 = "tosa.const"() <{values = dense<8> : tensor<1xi8>}> : () -> tensor<1xi8> - %173 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> - %175 = "tosa.const"() <{values = dense<1810088313> : tensor<1xi32>}> : () -> tensor<1xi32> - %176 = "tosa.const"() <{values = dense<1864644382> : tensor<1xi32>}> : () -> tensor<1xi32> - %177 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> - %181 = "tosa.const"() <{values = dense<-65> : tensor<1xi8>}> : () -> tensor<1xi8> - %182 = "tosa.const"() <{values = dense<1488594688> : tensor<1xi32>}> : () -> tensor<1xi32> - %183 = "tosa.const"() <{values = dense<1103803029> : tensor<1xi32>}> : () -> tensor<1xi32> - %184 = "tosa.const"() <{values = dense<2122310385> : tensor<1xi32>}> : () -> tensor<1xi32> - %185 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %186 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %187 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %188 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> - %189 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> - %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %196 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> - %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> - %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %202 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %203 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> - %204 = "tosa.const"() <{values = dense<23> : tensor<1xi8>}> : () -> tensor<1xi8> - %205 = "tosa.const"() <{values = dense<1098964878> : tensor<1xi32>}> : () -> tensor<1xi32> - %206 = "tosa.const"() <{values = dense<1099808716> : tensor<1xi32>}> : () -> tensor<1xi32> - %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %208 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %209 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> - %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> - %212 = "tosa.const"() <{values = dense<-59> : tensor<1xi8>}> : () -> tensor<1xi8> - %213 = "tosa.const"() <{values = dense<1586981248> : tensor<1xi32>}> : () -> tensor<1xi32> - %214 = "tosa.const"() <{values = dense<1082196352> : tensor<1xi32>}> : () -> tensor<1xi32> - %215 = "tosa.const"() <{values = dense<1123040526> : tensor<1xi32>}> : () -> tensor<1xi32> - %216 = "tosa.const"() <{values = dense<2049187341> : tensor<1xi32>}> : () -> tensor<1xi32> - %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %218 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> - %221 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> - %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %228 = "tosa.const"() <{values = dense<-19> : tensor<1xi8>}> : () -> tensor<1xi8> - %229 = "tosa.const"() <{values = dense<-115> : tensor<1xi8>}> : () -> tensor<1xi8> - %230 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> - %232 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %233 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %234 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %235 = "tosa.const"() <{values = dense<-20> : tensor<1xi8>}> : () -> tensor<1xi8> - %236 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %237 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> - %238 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %239 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %240 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %241 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x288xi8>}> : () -> tensor<48x1x1x288xi8> - %242 = "tosa.const"() <{values = dense<35> : tensor<1xi8>}> : () -> tensor<1xi8> - %243 = "tosa.const"() <{values = dense<1692615168> : tensor<1xi32>}> : () -> tensor<1xi32> - %244 = "tosa.const"() <{values = dense<1150102447> : tensor<1xi32>}> : () -> tensor<1xi32> - %245 = "tosa.const"() <{values = dense<2053785080> : tensor<1xi32>}> : () -> tensor<1xi32> - %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x72xi8>}> : () -> tensor<288x1x1x72xi8> - %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x288xi8>}> : () -> tensor<72x1x1x288xi8> - %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %257 = "tosa.const"() <{values = dense<-44> : tensor<1xi8>}> : () -> tensor<1xi8> - %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x288xi8>}> : () -> tensor<1x5x5x288xi8> - %260 = tosa.const_shape {values = dense_resource<__elided__> : tensor<3xindex>} : () -> !tosa.shape<3> - %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi8>}> : () -> tensor<273xi8> - %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi32>}> : () -> tensor<273xi32> - %263 = "tosa.const"() <{values = dense<112> : tensor<1xi8>}> : () -> tensor<1xi8> - %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273xi32>}> : () -> tensor<273xi32> - %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<273x1x1x288xi8>}> : () -> tensor<273x1x1x288xi8> - %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> - %270 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi8>}> : () -> tensor<12xi8> - %272 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %273 = "tosa.const"() <{values = dense<66> : tensor<1xi8>}> : () -> tensor<1xi8> - %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %275 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x288xi8>}> : () -> tensor<12x1x1x288xi8> - %276 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %277 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %278 = "tosa.const"() <{values = dense<-117> : tensor<1xi8>}> : () -> tensor<1xi8> - %279 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %280 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> - %281 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %282 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %283 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %284 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %285 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x48xi8>}> : () -> tensor<288x1x1x48xi8> - %286 = "tosa.const"() <{values = dense<-2> : tensor<1xi8>}> : () -> tensor<1xi8> - %287 = "tosa.const"() <{values = dense<2067857906> : tensor<1xi32>}> : () -> tensor<1xi32> - %288 = "tosa.const"() <{values = dense<1609205327> : tensor<1xi32>}> : () -> tensor<1xi32> - %289 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %290 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %291 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %292 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x144xi8>}> : () -> tensor<48x1x1x144xi8> - %293 = "tosa.const"() <{values = dense<1830516352> : tensor<1xi32>}> : () -> tensor<1xi32> - %294 = "tosa.const"() <{values = dense<1104217449> : tensor<1xi32>}> : () -> tensor<1xi32> - %295 = "tosa.const"() <{values = dense<2141783380> : tensor<1xi32>}> : () -> tensor<1xi32> - %296 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %297 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %298 = "tosa.const"() <{values = dense<6> : tensor<1xi8>}> : () -> tensor<1xi8> - %299 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %300 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x40xi8>}> : () -> tensor<144x1x1x40xi8> - %301 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %302 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %303 = "tosa.const"() <{values = dense<-124> : tensor<1xi8>}> : () -> tensor<1xi8> - %304 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %305 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x144xi8>}> : () -> tensor<40x1x1x144xi8> - %306 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %307 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %308 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %309 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %310 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x144xi8>}> : () -> tensor<1x5x5x144xi8> - %311 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %312 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi8>}> : () -> tensor<144xi8> - %313 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %314 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144xi32>}> : () -> tensor<144xi32> - %315 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<144x1x1x48xi8>}> : () -> tensor<144x1x1x48xi8> - %316 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %317 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %318 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> - %319 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %320 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x120xi8>}> : () -> tensor<48x1x1x120xi8> - %321 = "tosa.const"() <{values = dense<1602825600> : tensor<1xi32>}> : () -> tensor<1xi32> - %322 = "tosa.const"() <{values = dense<1103366361> : tensor<1xi32>}> : () -> tensor<1xi32> - %323 = "tosa.const"() <{values = dense<2137556526> : tensor<1xi32>}> : () -> tensor<1xi32> - %324 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> - %325 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %326 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> - %327 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %328 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120x1x1x32xi8>}> : () -> tensor<120x1x1x32xi8> - %329 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %330 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %331 = "tosa.const"() <{values = dense<-126> : tensor<1xi8>}> : () -> tensor<1xi8> - %332 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %333 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x120xi8>}> : () -> tensor<32x1x1x120xi8> - %334 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %335 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> - %336 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %337 = "tosa.const"() <{values = dense<-75> : tensor<1xi8>}> : () -> tensor<1xi8> - %338 = "tosa.const"() <{values = dense<-118> : tensor<1xi8>}> : () -> tensor<1xi8> - %339 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %340 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x120xi8>}> : () -> tensor<1x5x5x120xi8> - %341 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %342 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi8>}> : () -> tensor<120xi8> - %343 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %344 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> - %345 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120xi32>}> : () -> tensor<120xi32> - %346 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<120x1x1x40xi8>}> : () -> tensor<120x1x1x40xi8> - %347 = "tosa.const"() <{values = dense<1667743280> : tensor<1xi32>}> : () -> tensor<1xi32> - %348 = "tosa.const"() <{values = dense<1677119600> : tensor<1xi32>}> : () -> tensor<1xi32> - %349 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %350 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %351 = "tosa.const"() <{values = dense<-9> : tensor<1xi8>}> : () -> tensor<1xi8> - %352 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %353 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> - %354 = "tosa.const"() <{values = dense<-15> : tensor<1xi8>}> : () -> tensor<1xi8> - %355 = "tosa.const"() <{values = dense<1427554176> : tensor<1xi32>}> : () -> tensor<1xi32> - %356 = "tosa.const"() <{values = dense<1320933047> : tensor<1xi32>}> : () -> tensor<1xi32> - %357 = "tosa.const"() <{values = dense<1758591359> : tensor<1xi32>}> : () -> tensor<1xi32> - %358 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %359 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %360 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> - %361 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %362 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x64xi8>}> : () -> tensor<240x1x1x64xi8> - %363 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %364 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %365 = "tosa.const"() <{values = dense<-123> : tensor<1xi8>}> : () -> tensor<1xi8> - %366 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %367 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x240xi8>}> : () -> tensor<64x1x1x240xi8> - %368 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %369 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %370 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %371 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> - %372 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %373 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> - %374 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %375 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %376 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %377 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %378 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> - %379 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> - %380 = "tosa.const"() <{values = dense<1971685847> : tensor<1xi32>}> : () -> tensor<1xi32> - %381 = "tosa.const"() <{values = dense<1952317738> : tensor<1xi32>}> : () -> tensor<1xi32> - %382 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %383 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %384 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> - %385 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %386 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x240xi8>}> : () -> tensor<40x1x1x240xi8> - %387 = "tosa.const"() <{values = dense<-7> : tensor<1xi8>}> : () -> tensor<1xi8> - %388 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> - %389 = "tosa.const"() <{values = dense<1346235520> : tensor<1xi32>}> : () -> tensor<1xi32> - %390 = "tosa.const"() <{values = dense<1210219841> : tensor<1xi32>}> : () -> tensor<1xi32> - %391 = "tosa.const"() <{values = dense<1896721978> : tensor<1xi32>}> : () -> tensor<1xi32> - %392 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %393 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %394 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> - %395 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %396 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x64xi8>}> : () -> tensor<240x1x1x64xi8> - %397 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %398 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %399 = "tosa.const"() <{values = dense<-122> : tensor<1xi8>}> : () -> tensor<1xi8> - %400 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %401 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x1x1x240xi8>}> : () -> tensor<64x1x1x240xi8> - %402 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %403 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %404 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %405 = "tosa.const"() <{values = dense<-119> : tensor<1xi8>}> : () -> tensor<1xi8> - %406 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %407 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x240xi8>}> : () -> tensor<1x5x5x240xi8> - %408 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %409 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi8>}> : () -> tensor<240xi8> - %410 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %411 = "tosa.const"() <{values = dense<-5> : tensor<1xi8>}> : () -> tensor<1xi8> - %412 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240xi32>}> : () -> tensor<240xi32> - %413 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<240x1x1x40xi8>}> : () -> tensor<240x1x1x40xi8> - %414 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %415 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %416 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> - %417 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %418 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x96xi8>}> : () -> tensor<40x1x1x96xi8> - %419 = "tosa.const"() <{values = dense<-110> : tensor<1xi8>}> : () -> tensor<1xi8> - %420 = "tosa.const"() <{values = dense<36> : tensor<1xi8>}> : () -> tensor<1xi8> - %421 = "tosa.const"() <{values = dense<1770674688> : tensor<1xi32>}> : () -> tensor<1xi32> - %422 = "tosa.const"() <{values = dense<1982666603> : tensor<1xi32>}> : () -> tensor<1xi32> - %423 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %424 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %425 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> - %426 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %427 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x24xi8>}> : () -> tensor<96x1x1x24xi8> - %428 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %429 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %430 = "tosa.const"() <{values = dense<-125> : tensor<1xi8>}> : () -> tensor<1xi8> - %431 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %432 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x96xi8>}> : () -> tensor<24x1x1x96xi8> - %433 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %434 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %435 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %436 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> - %437 = "tosa.const"() <{values = dense<-120> : tensor<1xi8>}> : () -> tensor<1xi8> - %438 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %439 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x5x5x96xi8>}> : () -> tensor<1x5x5x96xi8> - %440 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %441 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %442 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %443 = "tosa.const"() <{values = dense<12> : tensor<1xi8>}> : () -> tensor<1xi8> - %444 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %445 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x24xi8>}> : () -> tensor<96x1x1x24xi8> - %446 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> - %447 = "tosa.const"() <{values = dense<1085834602> : tensor<1xi32>}> : () -> tensor<1xi32> - %448 = "tosa.const"() <{values = dense<1899624818> : tensor<1xi32>}> : () -> tensor<1xi32> - %449 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %450 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %451 = "tosa.const"() <{values = dense<14> : tensor<1xi8>}> : () -> tensor<1xi8> - %452 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %453 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x88xi8>}> : () -> tensor<24x1x1x88xi8> - %454 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi8>}> : () -> tensor<88xi8> - %455 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> - %456 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> - %457 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x88xi8>}> : () -> tensor<1x3x3x88xi8> - %458 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi8>}> : () -> tensor<88xi8> - %459 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> - %460 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88xi32>}> : () -> tensor<88xi32> - %461 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<88x1x1x24xi8>}> : () -> tensor<88x1x1x24xi8> - %462 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi8>}> : () -> tensor<24xi8> - %463 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %464 = "tosa.const"() <{values = dense<-3> : tensor<1xi8>}> : () -> tensor<1xi8> - %465 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24xi32>}> : () -> tensor<24xi32> - %466 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<24x1x1x72xi8>}> : () -> tensor<24x1x1x72xi8> - %467 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %468 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %469 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %470 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x72xi8>}> : () -> tensor<1x3x3x72xi8> - %471 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi8>}> : () -> tensor<72xi8> - %472 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %473 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72xi32>}> : () -> tensor<72xi32> - %474 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<72x1x1x16xi8>}> : () -> tensor<72x1x1x16xi8> - %475 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %476 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %477 = "tosa.const"() <{values = dense<-22> : tensor<1xi8>}> : () -> tensor<1xi8> - %478 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %479 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x16xi8>}> : () -> tensor<16x1x1x16xi8> - %480 = "tosa.const"() <{values = dense<38> : tensor<1xi8>}> : () -> tensor<1xi8> - %481 = "tosa.const"() <{values = dense<1082344576> : tensor<1xi32>}> : () -> tensor<1xi32> - %482 = "tosa.const"() <{values = dense<37> : tensor<1xi8>}> : () -> tensor<1xi8> - %483 = "tosa.const"() <{values = dense<1082196480> : tensor<1xi32>}> : () -> tensor<1xi32> - %484 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %485 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor - %486 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor - %487 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> - %488 = "tosa.const"() <{values = dense<1077969129> : tensor<1xi32>}> : () -> tensor<1xi32> - %489 = tosa.const_shape {values = dense<1> : tensor<4xindex>} : () -> !tosa.shape<4> - %490 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> - %491 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %492 = "tosa.const"() <{values = dense<1529543979> : tensor<1xi32>}> : () -> tensor<1xi32> - %493 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> - %494 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %495 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor - %496 = "tosa.const"() <{values = dense<127> : tensor}> : () -> tensor - %497 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %498 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %499 = "tosa.const"() <{values = dense<-51> : tensor<1xi8>}> : () -> tensor<1xi8> - %500 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %501 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x8xi8>}> : () -> tensor<16x1x1x8xi8> - %502 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> - %503 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %504 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %505 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x16xi8>}> : () -> tensor<8x1x1x16xi8> - %506 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %507 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %508 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %509 = "tosa.const"() <{values = dense<-127> : tensor<1xi8>}> : () -> tensor<1xi8> - %510 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %511 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x16xi8>}> : () -> tensor<1x3x3x16xi8> - %512 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %513 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %514 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %515 = "tosa.const"() <{values = dense<-45> : tensor<1xi8>}> : () -> tensor<1xi8> - %516 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %517 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x3x3x3xi8>}> : () -> tensor<16x3x3x3xi8> - %518 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %519 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %520 = tosa.conv2d %arg0, %517, %518, %519, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x320x320x3xi8>, tensor<16x3x3x3xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x160x160x16xi32> - %521 = tosa.rescale %520, %514, %513, %516, %515 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x160x160x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x160x160x16xi8> - %522 = tosa.table %521, %512 : (tensor<1x160x160x16xi8>, tensor<256xi8>) -> tensor<1x160x160x16xi8> - %523 = tosa.reshape %511, %12 : (tensor<1x3x3x16xi8>, !tosa.shape<4>) -> tensor<3x3x16x1xi8> - %524 = tosa.depthwise_conv2d %522, %523, %510, %509, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x160x160x16xi8>, tensor<3x3x16x1xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x16xi32> - %525 = tosa.rescale %524, %507, %506, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> - %526 = tosa.clamp %525 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x80x80x16xi8>) -> tensor<1x80x80x16xi8> - %527 = tosa.avg_pool2d %526, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x16xi8> - %528 = tosa.conv2d %527, %505, %504, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x16xi8>, tensor<8x1x1x16xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x8xi32> - %529 = tosa.rescale %528, %503, %502, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x8xi8> - %530 = tosa.clamp %529 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x8xi8>) -> tensor<1x1x1x8xi8> - %531 = tosa.conv2d %530, %501, %500, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x8xi8>, tensor<16x1x1x8xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x16xi32> - %532 = tosa.rescale %531, %498, %497, %516, %499 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> - %533 = tosa.rescale %532, %494, %493, %499, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> - %534 = tosa.rescale %533, %492, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x16xi32> - %535 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %536 = tosa.reshape %535, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %537 = tosa.add %534, %536 : (tensor<1x1x1x16xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x16xi32> - %538 = tosa.rescale %537, %488, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> - %539 = tosa.clamp %538 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x16xi8>) -> tensor<1x1x1x16xi8> - %540 = tosa.rescale %539, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> - %541 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %542 = tosa.reshape %541, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %543 = tosa.mul %540, %542, %519 : (tensor<1x1x1x16xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi32> - %544 = tosa.rescale %543, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x16xi8> - %545 = tosa.rescale %526, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x80x80x16xi32> - %546 = tosa.rescale %544, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x16xi32> - %547 = tosa.mul %545, %546, %519 : (tensor<1x80x80x16xi32>, tensor<1x1x1x16xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi32> - %548 = tosa.rescale %547, %481, %480, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> - %549 = tosa.conv2d %548, %479, %478, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<16x1x1x16xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x16xi32> - %550 = tosa.rescale %549, %476, %475, %516, %477 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x16xi8> - %551 = tosa.conv2d %550, %474, %473, %477, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x16xi8>, tensor<72x1x1x16xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x80x80x72xi32> - %552 = tosa.rescale %551, %472, %471, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x80x80x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x80x80x72xi8> - %553 = tosa.clamp %552 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x80x80x72xi8>) -> tensor<1x80x80x72xi8> - %554 = tosa.reshape %470, %11 : (tensor<1x3x3x72xi8>, !tosa.shape<4>) -> tensor<3x3x72x1xi8> - %555 = tosa.depthwise_conv2d %553, %554, %469, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x80x80x72xi8>, tensor<3x3x72x1xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x72xi32> - %556 = tosa.rescale %555, %468, %467, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x72xi8> - %557 = tosa.clamp %556 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x72xi8>) -> tensor<1x40x40x72xi8> - %558 = tosa.conv2d %557, %466, %465, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x72xi8>, tensor<24x1x1x72xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x24xi32> - %559 = tosa.rescale %558, %463, %462, %516, %464 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> - %560 = tosa.conv2d %559, %461, %460, %464, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x24xi8>, tensor<88x1x1x24xi8>, tensor<88xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x88xi32> - %561 = tosa.rescale %560, %459, %458, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x88xi32>, tensor<88xi32>, tensor<88xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x88xi8> - %562 = tosa.clamp %561 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x88xi8>) -> tensor<1x40x40x88xi8> - %563 = tosa.reshape %457, %10 : (tensor<1x3x3x88xi8>, !tosa.shape<4>) -> tensor<3x3x88x1xi8> - %564 = tosa.depthwise_conv2d %562, %563, %456, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x88xi8>, tensor<3x3x88x1xi8>, tensor<88xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x88xi32> - %565 = tosa.rescale %564, %455, %454, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x88xi32>, tensor<88xi32>, tensor<88xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x88xi8> - %566 = tosa.clamp %565 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x40x40x88xi8>) -> tensor<1x40x40x88xi8> - %567 = tosa.conv2d %566, %453, %452, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x88xi8>, tensor<24x1x1x88xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x24xi32> - %568 = tosa.rescale %567, %450, %449, %516, %451 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> - %569 = tosa.rescale %568, %494, %490, %451, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x40x40x24xi32> - %570 = tosa.rescale %559, %494, %493, %464, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x40x40x24xi32> - %571 = tosa.rescale %570, %448, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x40x40x24xi32> - %572 = tosa.add %569, %571 : (tensor<1x40x40x24xi32>, tensor<1x40x40x24xi32>) -> tensor<1x40x40x24xi32> - %573 = tosa.rescale %572, %447, %487, %516, %446 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x24xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x24xi8> - %574 = tosa.conv2d %573, %445, %444, %446, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x24xi8>, tensor<96x1x1x24xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x40x40x96xi32> - %575 = tosa.rescale %574, %442, %441, %516, %443 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x40x40x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x40x40x96xi8> - %576 = tosa.table %575, %440 : (tensor<1x40x40x96xi8>, tensor<256xi8>) -> tensor<1x40x40x96xi8> - %577 = tosa.reshape %439, %9 : (tensor<1x5x5x96xi8>, !tosa.shape<4>) -> tensor<5x5x96x1xi8> - %578 = tosa.depthwise_conv2d %576, %577, %438, %437, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x40x40x96xi8>, tensor<5x5x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x96xi32> - %579 = tosa.rescale %578, %435, %434, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi8> - %580 = tosa.table %579, %433 : (tensor<1x20x20x96xi8>, tensor<256xi8>) -> tensor<1x20x20x96xi8> - %581 = tosa.avg_pool2d %580, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x96xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x96xi8> - %582 = tosa.conv2d %581, %432, %431, %430, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x96xi8>, tensor<24x1x1x96xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x24xi32> - %583 = tosa.rescale %582, %429, %428, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x24xi8> - %584 = tosa.clamp %583 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x24xi8>) -> tensor<1x1x1x24xi8> - %585 = tosa.conv2d %584, %427, %426, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x24xi8>, tensor<96x1x1x24xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x96xi32> - %586 = tosa.rescale %585, %424, %423, %516, %425 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> - %587 = tosa.rescale %586, %494, %493, %425, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> - %588 = tosa.rescale %587, %422, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x96xi32> - %589 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %590 = tosa.reshape %589, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %591 = tosa.add %588, %590 : (tensor<1x1x1x96xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x96xi32> - %592 = tosa.rescale %591, %488, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> - %593 = tosa.clamp %592 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x96xi8>) -> tensor<1x1x1x96xi8> - %594 = tosa.rescale %593, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> - %595 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %596 = tosa.reshape %595, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %597 = tosa.mul %594, %596, %519 : (tensor<1x1x1x96xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi32> - %598 = tosa.rescale %597, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x96xi8> - %599 = tosa.rescale %580, %494, %484, %430, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x96xi32> - %600 = tosa.rescale %598, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x96xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x96xi32> - %601 = tosa.mul %599, %600, %519 : (tensor<1x20x20x96xi32>, tensor<1x1x1x96xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi32> - %602 = tosa.rescale %601, %421, %420, %516, %419 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x96xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x96xi8> - %603 = tosa.conv2d %602, %418, %417, %419, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x96xi8>, tensor<40x1x1x96xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> - %604 = tosa.rescale %603, %415, %414, %516, %416 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> - %605 = tosa.conv2d %604, %413, %412, %416, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %606 = tosa.rescale %605, %410, %409, %516, %411 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %607 = tosa.table %606, %408 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> - %608 = tosa.reshape %407, %8 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> - %609 = tosa.depthwise_conv2d %607, %608, %406, %405, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %610 = tosa.rescale %609, %404, %403, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %611 = tosa.table %610, %402 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> - %612 = tosa.avg_pool2d %611, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %613 = tosa.conv2d %612, %401, %400, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x240xi8>, tensor<64x1x1x240xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> - %614 = tosa.rescale %613, %398, %397, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> - %615 = tosa.clamp %614 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> - %616 = tosa.conv2d %615, %396, %395, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<240x1x1x64xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi32> - %617 = tosa.rescale %616, %393, %392, %516, %394 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %618 = tosa.rescale %617, %494, %493, %394, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %619 = tosa.rescale %618, %391, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %620 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %621 = tosa.reshape %620, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %622 = tosa.add %619, %621 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x240xi32> - %623 = tosa.rescale %622, %390, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %624 = tosa.clamp %623 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x240xi8>) -> tensor<1x1x1x240xi8> - %625 = tosa.rescale %624, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %626 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %627 = tosa.reshape %626, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %628 = tosa.mul %625, %627, %519 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi32> - %629 = tosa.rescale %628, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %630 = tosa.rescale %611, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x240xi32> - %631 = tosa.rescale %629, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %632 = tosa.mul %630, %631, %519 : (tensor<1x20x20x240xi32>, tensor<1x1x1x240xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %633 = tosa.rescale %632, %389, %388, %516, %387 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %634 = tosa.conv2d %633, %386, %385, %387, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> - %635 = tosa.rescale %634, %383, %382, %516, %384 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> - %636 = tosa.rescale %635, %494, %490, %384, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %637 = tosa.rescale %604, %494, %493, %416, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %638 = tosa.rescale %637, %381, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %639 = tosa.add %636, %638 : (tensor<1x20x20x40xi32>, tensor<1x20x20x40xi32>) -> tensor<1x20x20x40xi32> - %640 = tosa.rescale %639, %380, %379, %516, %519 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> - %641 = tosa.conv2d %640, %378, %377, %519, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<240x1x1x40xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %642 = tosa.rescale %641, %376, %375, %516, %491 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %643 = tosa.table %642, %374 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> - %644 = tosa.reshape %373, %8 : (tensor<1x5x5x240xi8>, !tosa.shape<4>) -> tensor<5x5x240x1xi8> - %645 = tosa.depthwise_conv2d %643, %644, %372, %405, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<5x5x240x1xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %646 = tosa.rescale %645, %370, %369, %516, %371 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %647 = tosa.table %646, %368 : (tensor<1x20x20x240xi8>, tensor<256xi8>) -> tensor<1x20x20x240xi8> - %648 = tosa.avg_pool2d %647, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %649 = tosa.conv2d %648, %367, %366, %365, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x240xi8>, tensor<64x1x1x240xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> - %650 = tosa.rescale %649, %364, %363, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> - %651 = tosa.clamp %650 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> - %652 = tosa.conv2d %651, %362, %361, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<240x1x1x64xi8>, tensor<240xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x240xi32> - %653 = tosa.rescale %652, %359, %358, %516, %360 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<240xi32>, tensor<240xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %654 = tosa.rescale %653, %494, %493, %360, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %655 = tosa.rescale %654, %357, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %656 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %657 = tosa.reshape %656, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %658 = tosa.add %655, %657 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x240xi32> - %659 = tosa.rescale %658, %356, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %660 = tosa.clamp %659 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x240xi8>) -> tensor<1x1x1x240xi8> - %661 = tosa.rescale %660, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %662 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %663 = tosa.reshape %662, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %664 = tosa.mul %661, %663, %519 : (tensor<1x1x1x240xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi32> - %665 = tosa.rescale %664, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x240xi8> - %666 = tosa.rescale %647, %494, %484, %365, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x240xi32> - %667 = tosa.rescale %665, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x240xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x240xi32> - %668 = tosa.mul %666, %667, %519 : (tensor<1x20x20x240xi32>, tensor<1x1x1x240xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi32> - %669 = tosa.rescale %668, %355, %388, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x240xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x240xi8> - %670 = tosa.conv2d %669, %353, %352, %354, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x240xi8>, tensor<40x1x1x240xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x40xi32> - %671 = tosa.rescale %670, %350, %349, %516, %351 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> - %672 = tosa.rescale %671, %494, %490, %351, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %673 = tosa.rescale %640, %494, %493, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %674 = tosa.rescale %673, %348, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x40xi32> - %675 = tosa.add %672, %674 : (tensor<1x20x20x40xi32>, tensor<1x20x20x40xi32>) -> tensor<1x20x20x40xi32> - %676 = tosa.rescale %675, %347, %379, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x40xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x40xi8> - %677 = tosa.conv2d %676, %346, %345, %354, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x40xi8>, tensor<120x1x1x40xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x120xi32> - %678 = tosa.rescale %677, %343, %342, %516, %344 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> - %679 = tosa.table %678, %341 : (tensor<1x20x20x120xi8>, tensor<256xi8>) -> tensor<1x20x20x120xi8> - %680 = tosa.reshape %340, %7 : (tensor<1x5x5x120xi8>, !tosa.shape<4>) -> tensor<5x5x120x1xi8> - %681 = tosa.depthwise_conv2d %679, %680, %339, %338, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<5x5x120x1xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x120xi32> - %682 = tosa.rescale %681, %336, %335, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> - %683 = tosa.table %682, %334 : (tensor<1x20x20x120xi8>, tensor<256xi8>) -> tensor<1x20x20x120xi8> - %684 = tosa.avg_pool2d %683, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x120xi8> - %685 = tosa.conv2d %684, %333, %332, %331, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x120xi8>, tensor<32x1x1x120xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x32xi32> - %686 = tosa.rescale %685, %330, %329, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x32xi8> - %687 = tosa.clamp %686 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x32xi8>) -> tensor<1x1x1x32xi8> - %688 = tosa.conv2d %687, %328, %327, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x32xi8>, tensor<120x1x1x32xi8>, tensor<120xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x120xi32> - %689 = tosa.rescale %688, %325, %324, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<120xi32>, tensor<120xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> - %690 = tosa.rescale %689, %494, %490, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> - %691 = tosa.rescale %496, %494, %493, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %692 = tosa.rescale %691, %323, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor - %693 = tosa.reshape %692, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %694 = tosa.add %690, %693 : (tensor<1x1x1x120xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x120xi32> - %695 = tosa.rescale %694, %322, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> - %696 = tosa.clamp %695 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x120xi8>) -> tensor<1x1x1x120xi8> - %697 = tosa.rescale %696, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> - %698 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %699 = tosa.reshape %698, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %700 = tosa.mul %697, %699, %519 : (tensor<1x1x1x120xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi32> - %701 = tosa.rescale %700, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x120xi8> - %702 = tosa.rescale %683, %494, %484, %331, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x120xi32> - %703 = tosa.rescale %701, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x120xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x120xi32> - %704 = tosa.mul %702, %703, %519 : (tensor<1x20x20x120xi32>, tensor<1x1x1x120xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi32> - %705 = tosa.rescale %704, %321, %388, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x120xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x120xi8> - %706 = tosa.conv2d %705, %320, %319, %337, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x120xi8>, tensor<48x1x1x120xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x48xi32> - %707 = tosa.rescale %706, %317, %316, %516, %318 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> - %708 = tosa.conv2d %707, %315, %314, %318, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x48xi8>, tensor<144x1x1x48xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x144xi32> - %709 = tosa.rescale %708, %313, %312, %516, %416 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> - %710 = tosa.table %709, %311 : (tensor<1x20x20x144xi8>, tensor<256xi8>) -> tensor<1x20x20x144xi8> - %711 = tosa.reshape %310, %6 : (tensor<1x5x5x144xi8>, !tosa.shape<4>) -> tensor<5x5x144x1xi8> - %712 = tosa.depthwise_conv2d %710, %711, %309, %365, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<5x5x144x1xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x144xi32> - %713 = tosa.rescale %712, %308, %307, %516, %451 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> - %714 = tosa.table %713, %306 : (tensor<1x20x20x144xi8>, tensor<256xi8>) -> tensor<1x20x20x144xi8> - %715 = tosa.avg_pool2d %714, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x144xi8> - %716 = tosa.conv2d %715, %305, %304, %303, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x144xi8>, tensor<40x1x1x144xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x40xi32> - %717 = tosa.rescale %716, %302, %301, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x40xi8> - %718 = tosa.clamp %717 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x40xi8>) -> tensor<1x1x1x40xi8> - %719 = tosa.conv2d %718, %300, %299, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x40xi8>, tensor<144x1x1x40xi8>, tensor<144xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x144xi32> - %720 = tosa.rescale %719, %297, %296, %516, %298 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<144xi32>, tensor<144xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> - %721 = tosa.rescale %720, %494, %493, %298, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> - %722 = tosa.rescale %721, %295, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x144xi32> - %723 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %724 = tosa.reshape %723, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %725 = tosa.add %722, %724 : (tensor<1x1x1x144xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x144xi32> - %726 = tosa.rescale %725, %294, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> - %727 = tosa.clamp %726 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x144xi8>) -> tensor<1x1x1x144xi8> - %728 = tosa.rescale %727, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> - %729 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %730 = tosa.reshape %729, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %731 = tosa.mul %728, %730, %519 : (tensor<1x1x1x144xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi32> - %732 = tosa.rescale %731, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x144xi8> - %733 = tosa.rescale %714, %494, %484, %303, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x144xi32> - %734 = tosa.rescale %732, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x144xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x144xi32> - %735 = tosa.mul %733, %734, %519 : (tensor<1x20x20x144xi32>, tensor<1x1x1x144xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi32> - %736 = tosa.rescale %735, %293, %388, %516, %477 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x144xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x144xi8> - %737 = tosa.conv2d %736, %292, %291, %477, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x144xi8>, tensor<48x1x1x144xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x48xi32> - %738 = tosa.rescale %737, %290, %289, %516, %411 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> - %739 = tosa.rescale %738, %494, %493, %411, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x48xi32> - %740 = tosa.rescale %739, %288, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x20x20x48xi32> - %741 = tosa.rescale %707, %494, %490, %318, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x20x20x48xi32> - %742 = tosa.add %740, %741 : (tensor<1x20x20x48xi32>, tensor<1x20x20x48xi32>) -> tensor<1x20x20x48xi32> - %743 = tosa.rescale %742, %287, %379, %516, %286 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x48xi8> - %744 = tosa.conv2d %743, %285, %284, %286, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> - %745 = tosa.rescale %744, %283, %282, %516, %344 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> - %746 = tosa.table %745, %281 : (tensor<1x20x20x288xi8>, tensor<256xi8>) -> tensor<1x20x20x288xi8> - %747 = tosa.reshape %280, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> - %748 = tosa.depthwise_conv2d %746, %747, %279, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> - %749 = tosa.rescale %748, %277, %276, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> - %750 = tosa.clamp %749 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x20x20x288xi8>) -> tensor<1x20x20x288xi8> - %751 = tosa.conv2d %750, %275, %274, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<12x1x1x288xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x12xi32> - %752 = tosa.rescale %751, %272, %271, %516, %273 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x12xi8> - %753 = tosa.reshape %752, %270 : (tensor<1x20x20x12xi8>, !tosa.shape<4>) -> tensor<1x1200x1x4xi8> - %754 = tosa.reshape %269, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> - %755 = tosa.depthwise_conv2d %746, %754, %268, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x288xi32> - %756 = tosa.rescale %755, %267, %266, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x288xi8> - %757 = tosa.clamp %756 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x20x20x288xi8>) -> tensor<1x20x20x288xi8> - %758 = tosa.conv2d %757, %265, %264, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<273x1x1x288xi8>, tensor<273xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x20x20x273xi32> - %759 = tosa.rescale %758, %262, %261, %516, %263 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x20x20x273xi32>, tensor<273xi32>, tensor<273xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x20x20x273xi8> - %760 = tosa.reshape %759, %260 : (tensor<1x20x20x273xi8>, !tosa.shape<3>) -> tensor<1x1200x91xi8> - %761 = tosa.reshape %259, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> - %762 = tosa.depthwise_conv2d %746, %761, %258, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x20x20x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %763 = tosa.rescale %762, %256, %255, %516, %257 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %764 = tosa.table %763, %254 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %765 = tosa.avg_pool2d %764, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %766 = tosa.conv2d %765, %253, %252, %303, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> - %767 = tosa.rescale %766, %251, %250, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> - %768 = tosa.clamp %767 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> - %769 = tosa.conv2d %768, %249, %248, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %770 = tosa.rescale %769, %247, %246, %516, %490 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %771 = tosa.rescale %770, %494, %493, %490, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %772 = tosa.rescale %771, %245, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %773 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %774 = tosa.reshape %773, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %775 = tosa.add %772, %774 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> - %776 = tosa.rescale %775, %244, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %777 = tosa.clamp %776 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> - %778 = tosa.rescale %777, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %779 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %780 = tosa.reshape %779, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %781 = tosa.mul %778, %780, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %782 = tosa.rescale %781, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %783 = tosa.rescale %764, %494, %484, %303, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> - %784 = tosa.rescale %782, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %785 = tosa.mul %783, %784, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %786 = tosa.rescale %785, %243, %242, %516, %337 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %787 = tosa.conv2d %786, %241, %240, %337, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> - %788 = tosa.rescale %787, %239, %238, %516, %351 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> - %789 = tosa.conv2d %788, %237, %236, %351, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %790 = tosa.rescale %789, %234, %233, %516, %235 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %791 = tosa.table %790, %232 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %792 = tosa.reshape %231, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> - %793 = tosa.depthwise_conv2d %791, %792, %230, %229, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %794 = tosa.rescale %793, %227, %226, %516, %228 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %795 = tosa.table %794, %225 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %796 = tosa.avg_pool2d %795, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %797 = tosa.conv2d %796, %224, %223, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> - %798 = tosa.rescale %797, %222, %221, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> - %799 = tosa.clamp %798 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> - %800 = tosa.conv2d %799, %220, %219, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %801 = tosa.rescale %800, %218, %217, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %802 = tosa.rescale %801, %494, %493, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %803 = tosa.rescale %802, %216, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %804 = tosa.rescale %496, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %805 = tosa.reshape %804, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %806 = tosa.add %803, %805 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> - %807 = tosa.rescale %806, %215, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %808 = tosa.clamp %807 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> - %809 = tosa.rescale %808, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %810 = tosa.rescale %486, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %811 = tosa.reshape %810, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %812 = tosa.mul %809, %811, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %813 = tosa.rescale %812, %214, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %814 = tosa.rescale %795, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> - %815 = tosa.rescale %813, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %816 = tosa.mul %814, %815, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %817 = tosa.rescale %816, %213, %242, %516, %212 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %818 = tosa.conv2d %817, %211, %210, %212, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> - %819 = tosa.rescale %818, %208, %207, %516, %209 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> - %820 = tosa.rescale %819, %494, %490, %209, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %821 = tosa.rescale %788, %494, %493, %351, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %822 = tosa.rescale %821, %206, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %823 = tosa.add %820, %822 : (tensor<1x10x10x48xi32>, tensor<1x10x10x48xi32>) -> tensor<1x10x10x48xi32> - %824 = tosa.rescale %823, %205, %487, %516, %204 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> - %825 = tosa.conv2d %824, %203, %202, %204, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %826 = tosa.rescale %825, %201, %200, %516, %354 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %827 = tosa.table %826, %199 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %828 = tosa.reshape %198, %4 : (tensor<1x5x5x288xi8>, !tosa.shape<4>) -> tensor<5x5x288x1xi8> - %829 = tosa.depthwise_conv2d %827, %828, %197, %278, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<5x5x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %830 = tosa.rescale %829, %195, %194, %516, %196 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %831 = tosa.table %830, %193 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %832 = tosa.avg_pool2d %831, %519, %519 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %833 = tosa.conv2d %832, %192, %191, %399, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x288xi8>, tensor<72x1x1x288xi8>, tensor<72xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x72xi32> - %834 = tosa.rescale %833, %190, %189, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x72xi32>, tensor<72xi32>, tensor<72xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x72xi8> - %835 = tosa.clamp %834 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x72xi8>) -> tensor<1x1x1x72xi8> - %836 = tosa.conv2d %835, %188, %187, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x72xi8>, tensor<288x1x1x72xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %837 = tosa.rescale %836, %186, %185, %516, %326 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %838 = tosa.rescale %837, %494, %493, %326, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %839 = tosa.rescale %838, %184, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %840 = tosa.rescale %495, %494, %490, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %841 = tosa.reshape %840, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %842 = tosa.add %839, %841 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>) -> tensor<1x1x1x288xi32> - %843 = tosa.rescale %842, %183, %487, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %844 = tosa.clamp %843 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x288xi8>) -> tensor<1x1x1x288xi8> - %845 = tosa.rescale %844, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %846 = tosa.rescale %485, %494, %484, %519, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %847 = tosa.reshape %846, %489 : (tensor, !tosa.shape<4>) -> tensor<1x1x1x1xi32> - %848 = tosa.mul %845, %847, %519 : (tensor<1x1x1x288xi32>, tensor<1x1x1x1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi32> - %849 = tosa.rescale %848, %483, %482, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x288xi8> - %850 = tosa.rescale %831, %494, %484, %399, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x288xi32> - %851 = tosa.rescale %849, %494, %484, %508, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x288xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x1x288xi32> - %852 = tosa.mul %850, %851, %519 : (tensor<1x10x10x288xi32>, tensor<1x1x1x288xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %853 = tosa.rescale %852, %182, %242, %516, %181 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %854 = tosa.conv2d %853, %180, %179, %181, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<48x1x1x288xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x48xi32> - %855 = tosa.rescale %854, %178, %177, %516, %425 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> - %856 = tosa.rescale %855, %494, %490, %425, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %857 = tosa.rescale %824, %494, %493, %204, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %858 = tosa.rescale %857, %176, %491, %516, %516 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x10x10x48xi32> - %859 = tosa.add %856, %858 : (tensor<1x10x10x48xi32>, tensor<1x10x10x48xi32>) -> tensor<1x10x10x48xi32> - %860 = tosa.rescale %859, %175, %379, %516, %436 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x48xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x48xi8> - %861 = tosa.conv2d %860, %174, %173, %436, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x48xi8>, tensor<288x1x1x48xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %862 = tosa.rescale %861, %171, %170, %516, %172 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %863 = tosa.table %862, %169 : (tensor<1x10x10x288xi8>, tensor<256xi8>) -> tensor<1x10x10x288xi8> - %864 = tosa.reshape %168, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> - %865 = tosa.depthwise_conv2d %863, %864, %167, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %866 = tosa.rescale %865, %165, %164, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %867 = tosa.clamp %866 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x288xi8>) -> tensor<1x10x10x288xi8> - %868 = tosa.conv2d %867, %163, %162, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<24x1x1x288xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x24xi32> - %869 = tosa.rescale %868, %160, %159, %516, %161 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x24xi8> - %870 = tosa.reshape %869, %158 : (tensor<1x10x10x24xi8>, !tosa.shape<4>) -> tensor<1x600x1x4xi8> - %871 = tosa.reshape %157, %5 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> - %872 = tosa.depthwise_conv2d %863, %871, %156, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x288xi32> - %873 = tosa.rescale %872, %155, %154, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x288xi8> - %874 = tosa.clamp %873 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x288xi8>) -> tensor<1x10x10x288xi8> - %875 = tosa.conv2d %874, %153, %152, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<546x1x1x288xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x546xi32> - %876 = tosa.rescale %875, %150, %149, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x546xi8> - %877 = tosa.reshape %876, %148 : (tensor<1x10x10x546xi8>, !tosa.shape<3>) -> tensor<1x600x91xi8> - %878 = tosa.conv2d %863, %147, %146, %166, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x288xi8>, tensor<256x1x1x288xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x10x10x256xi32> - %879 = tosa.rescale %878, %145, %144, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x10x10x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x10x10x256xi8> - %880 = tosa.clamp %879 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x10x10x256xi8>) -> tensor<1x10x10x256xi8> - %881 = tosa.reshape %143, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> - %882 = tosa.depthwise_conv2d %880, %881, %142, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x10x10x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x256xi32> - %883 = tosa.rescale %882, %141, %140, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x256xi8> - %884 = tosa.clamp %883 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x256xi8>) -> tensor<1x5x5x256xi8> - %885 = tosa.conv2d %884, %139, %138, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x256xi8>, tensor<512x1x1x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> - %886 = tosa.rescale %885, %137, %136, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> - %887 = tosa.clamp %886 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> - %888 = tosa.reshape %135, %2 : (tensor<1x3x3x512xi8>, !tosa.shape<4>) -> tensor<3x3x512x1xi8> - %889 = tosa.depthwise_conv2d %887, %888, %134, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<3x3x512x1xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> - %890 = tosa.rescale %889, %133, %132, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> - %891 = tosa.clamp %890 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> - %892 = tosa.conv2d %891, %131, %130, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<24x1x1x512xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x24xi32> - %893 = tosa.rescale %892, %128, %127, %516, %129 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x24xi8> - %894 = tosa.reshape %893, %126 : (tensor<1x5x5x24xi8>, !tosa.shape<4>) -> tensor<1x150x1x4xi8> - %895 = tosa.reshape %125, %2 : (tensor<1x3x3x512xi8>, !tosa.shape<4>) -> tensor<3x3x512x1xi8> - %896 = tosa.depthwise_conv2d %887, %895, %124, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<3x3x512x1xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x512xi32> - %897 = tosa.rescale %896, %123, %122, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x512xi32>, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x512xi8> - %898 = tosa.clamp %897 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x512xi8>) -> tensor<1x5x5x512xi8> - %899 = tosa.conv2d %898, %121, %120, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<546x1x1x512xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x546xi32> - %900 = tosa.rescale %899, %119, %118, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x546xi8> - %901 = tosa.reshape %900, %117 : (tensor<1x5x5x546xi8>, !tosa.shape<3>) -> tensor<1x150x91xi8> - %902 = tosa.conv2d %887, %116, %115, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x512xi8>, tensor<128x1x1x512xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x5x5x128xi32> - %903 = tosa.rescale %902, %114, %113, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x5x5x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x5x5x128xi8> - %904 = tosa.clamp %903 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x5x5x128xi8>) -> tensor<1x5x5x128xi8> - %905 = tosa.reshape %112, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> - %906 = tosa.depthwise_conv2d %904, %905, %111, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x5x5x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x128xi32> - %907 = tosa.rescale %906, %110, %109, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x128xi8> - %908 = tosa.clamp %907 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x128xi8>) -> tensor<1x3x3x128xi8> - %909 = tosa.conv2d %908, %108, %107, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x128xi8>, tensor<256x1x1x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> - %910 = tosa.rescale %909, %106, %105, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> - %911 = tosa.clamp %910 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> - %912 = tosa.reshape %104, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> - %913 = tosa.depthwise_conv2d %911, %912, %103, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> - %914 = tosa.rescale %913, %102, %101, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> - %915 = tosa.clamp %914 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> - %916 = tosa.conv2d %915, %100, %99, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<24x1x1x256xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x24xi32> - %917 = tosa.rescale %916, %97, %96, %516, %98 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x24xi8> - %918 = tosa.reshape %917, %95 : (tensor<1x3x3x24xi8>, !tosa.shape<4>) -> tensor<1x54x1x4xi8> - %919 = tosa.reshape %94, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> - %920 = tosa.depthwise_conv2d %911, %919, %93, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x256xi32> - %921 = tosa.rescale %920, %92, %91, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x256xi8> - %922 = tosa.clamp %921 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x256xi8>) -> tensor<1x3x3x256xi8> - %923 = tosa.conv2d %922, %90, %89, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<546x1x1x256xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x546xi32> - %924 = tosa.rescale %923, %88, %87, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x546xi8> - %925 = tosa.reshape %924, %86 : (tensor<1x3x3x546xi8>, !tosa.shape<3>) -> tensor<1x54x91xi8> - %926 = tosa.conv2d %911, %85, %84, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x256xi8>, tensor<128x1x1x256xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x3x3x128xi32> - %927 = tosa.rescale %926, %83, %82, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x3x3x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x3x3x128xi8> - %928 = tosa.clamp %927 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x3x3x128xi8>) -> tensor<1x3x3x128xi8> - %929 = tosa.reshape %81, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> - %930 = tosa.depthwise_conv2d %928, %929, %80, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x3x3x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x128xi32> - %931 = tosa.rescale %930, %79, %78, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x128xi8> - %932 = tosa.clamp %931 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x128xi8>) -> tensor<1x2x2x128xi8> - %933 = tosa.conv2d %932, %77, %76, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x128xi8>, tensor<256x1x1x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> - %934 = tosa.rescale %933, %75, %74, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> - %935 = tosa.clamp %934 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> - %936 = tosa.reshape %73, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> - %937 = tosa.depthwise_conv2d %935, %936, %72, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> - %938 = tosa.rescale %937, %71, %70, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> - %939 = tosa.clamp %938 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> - %940 = tosa.conv2d %939, %69, %68, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<24x1x1x256xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x24xi32> - %941 = tosa.rescale %940, %67, %66, %516, %298 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x24xi8> - %942 = tosa.reshape %941, %65 : (tensor<1x2x2x24xi8>, !tosa.shape<4>) -> tensor<1x24x1x4xi8> - %943 = tosa.reshape %64, %3 : (tensor<1x3x3x256xi8>, !tosa.shape<4>) -> tensor<3x3x256x1xi8> - %944 = tosa.depthwise_conv2d %935, %943, %63, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<3x3x256x1xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x256xi32> - %945 = tosa.rescale %944, %62, %61, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x256xi32>, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x256xi8> - %946 = tosa.clamp %945 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x256xi8>) -> tensor<1x2x2x256xi8> - %947 = tosa.conv2d %946, %60, %59, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<546x1x1x256xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x546xi32> - %948 = tosa.rescale %947, %58, %57, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x546xi8> - %949 = tosa.reshape %948, %56 : (tensor<1x2x2x546xi8>, !tosa.shape<3>) -> tensor<1x24x91xi8> - %950 = tosa.conv2d %935, %55, %54, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x256xi8>, tensor<64x1x1x256xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x2x2x64xi32> - %951 = tosa.rescale %950, %53, %52, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x2x2x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x2x2x64xi8> - %952 = tosa.clamp %951 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x2x2x64xi8>) -> tensor<1x2x2x64xi8> - %953 = tosa.reshape %51, %0 : (tensor<1x3x3x64xi8>, !tosa.shape<4>) -> tensor<3x3x64x1xi8> - %954 = tosa.depthwise_conv2d %952, %953, %50, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x2x2x64xi8>, tensor<3x3x64x1xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x64xi32> - %955 = tosa.rescale %954, %49, %48, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x64xi32>, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x64xi8> - %956 = tosa.clamp %955 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x64xi8>) -> tensor<1x1x1x64xi8> - %957 = tosa.conv2d %956, %47, %46, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x64xi8>, tensor<128x1x1x64xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> - %958 = tosa.rescale %957, %45, %44, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> - %959 = tosa.clamp %958 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> - %960 = tosa.reshape %43, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> - %961 = tosa.depthwise_conv2d %959, %960, %42, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> - %962 = tosa.rescale %961, %41, %40, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> - %963 = tosa.clamp %962 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> - %964 = tosa.conv2d %963, %39, %38, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<24x1x1x128xi8>, tensor<24xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x24xi32> - %965 = tosa.rescale %964, %36, %35, %516, %37 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x24xi32>, tensor<24xi32>, tensor<24xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x24xi8> - %966 = tosa.reshape %965, %34 : (tensor<1x1x1x24xi8>, !tosa.shape<4>) -> tensor<1x6x1x4xi8> - %967 = tosa.rescale %966, %33, %491, %37, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x6x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x6x1x4xi8> - %968 = tosa.rescale %942, %32, %491, %298, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x24x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x24x1x4xi8> - %969 = tosa.rescale %918, %31, %491, %98, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x54x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x54x1x4xi8> - %970 = tosa.rescale %894, %30, %491, %129, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x150x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x150x1x4xi8> - %971 = tosa.rescale %870, %29, %491, %161, %273 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x600x1x4xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x600x1x4xi8> - %972 = tosa.concat %753, %971, %970, %969, %968, %967 {axis = 1 : i32} : (tensor<1x1200x1x4xi8>, tensor<1x600x1x4xi8>, tensor<1x150x1x4xi8>, tensor<1x54x1x4xi8>, tensor<1x24x1x4xi8>, tensor<1x6x1x4xi8>) -> tensor<1x2034x1x4xi8> - %973 = tosa.reshape %972, %28 : (tensor<1x2034x1x4xi8>, !tosa.shape<3>) -> tensor<1x2034x4xi8> - %974 = tosa.reshape %27, %1 : (tensor<1x3x3x128xi8>, !tosa.shape<4>) -> tensor<3x3x128x1xi8> - %975 = tosa.depthwise_conv2d %959, %974, %26, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<3x3x128x1xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi32> - %976 = tosa.rescale %975, %25, %24, %516, %508 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x128xi8> - %977 = tosa.clamp %976 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x1x1x128xi8>) -> tensor<1x1x1x128xi8> - %978 = tosa.conv2d %977, %23, %22, %508, %519 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<546x1x1x128xi8>, tensor<546xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x546xi32> - %979 = tosa.rescale %978, %21, %20, %516, %151 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x546xi32>, tensor<546xi32>, tensor<546xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x546xi8> - %980 = tosa.reshape %979, %19 : (tensor<1x1x1x546xi8>, !tosa.shape<3>) -> tensor<1x6x91xi8> - %981 = tosa.rescale %980, %18, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x6x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x6x91xi8> - %982 = tosa.rescale %949, %17, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x24x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x24x91xi8> - %983 = tosa.rescale %925, %16, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x54x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x54x91xi8> - %984 = tosa.rescale %901, %15, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x150x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x150x91xi8> - %985 = tosa.rescale %877, %14, %37, %151, %263 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x600x91xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x600x91xi8> - %986 = tosa.concat %760, %985, %984, %983, %982, %981 {axis = 1 : i32} : (tensor<1x1200x91xi8>, tensor<1x600x91xi8>, tensor<1x150x91xi8>, tensor<1x54x91xi8>, tensor<1x24x91xi8>, tensor<1x6x91xi8>) -> tensor<1x2034x91xi8> - %987 = tosa.table %986, %13 : (tensor<1x2034x91xi8>, tensor<256xi8>) -> tensor<1x2034x91xi8> - return %987, %973 : tensor<1x2034x91xi8>, tensor<1x2034x4xi8> - } -} diff --git a/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir b/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir deleted file mode 100644 index 199e562..0000000 --- a/tests/gold/test_python_api/tiny_wav2letter_pruned_int8.mlir +++ /dev/null @@ -1,128 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.13.1\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x296x39xi8>) -> tensor<1x1x148x29xi8> attributes {tf.entry_function = {inputs = "input_1_int8", outputs = "Identity_int8"}} { - %0 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi8>}> : () -> tensor<29xi8> - %1 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi32>}> : () -> tensor<29xi32> - %2 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> - %3 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29xi32>}> : () -> tensor<29xi32> - %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<29x1x1x750xi8>}> : () -> tensor<29x1x1x750xi8> - %5 = "tosa.const"() <{values = dense<-77> : tensor<1xi8>}> : () -> tensor<1xi8> - %6 = "tosa.const"() <{values = dense<1925690389> : tensor<1xi32>}> : () -> tensor<1xi32> - %7 = "tosa.const"() <{values = dense<1540552334> : tensor<1xi32>}> : () -> tensor<1xi32> - %8 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi8>}> : () -> tensor<750xi8> - %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> - %10 = "tosa.const"() <{values = dense<13> : tensor<1xi8>}> : () -> tensor<1xi8> - %11 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750x1x1x750xi8>}> : () -> tensor<750x1x1x750xi8> - %13 = "tosa.const"() <{values = dense<-76> : tensor<1xi8>}> : () -> tensor<1xi8> - %14 = "tosa.const"() <{values = dense<1949381878> : tensor<1xi32>}> : () -> tensor<1xi32> - %15 = "tosa.const"() <{values = dense<1559505526> : tensor<1xi32>}> : () -> tensor<1xi32> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi8>}> : () -> tensor<750xi8> - %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> - %18 = "tosa.const"() <{values = dense<15> : tensor<1xi8>}> : () -> tensor<1xi8> - %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750xi32>}> : () -> tensor<750xi32> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<750x1x32x100xi8>}> : () -> tensor<750x1x32x100xi8> - %21 = "tosa.const"() <{values = dense<-84> : tensor<1xi8>}> : () -> tensor<1xi8> - %22 = "tosa.const"() <{values = dense<1819150077> : tensor<1xi32>}> : () -> tensor<1xi32> - %23 = "tosa.const"() <{values = dense<1455320083> : tensor<1xi32>}> : () -> tensor<1xi32> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> - %28 = "tosa.const"() <{values = dense<1833421420> : tensor<1xi32>}> : () -> tensor<1xi32> - %29 = "tosa.const"() <{values = dense<1466737158> : tensor<1xi32>}> : () -> tensor<1xi32> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %32 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %33 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> - %34 = "tosa.const"() <{values = dense<1981257558> : tensor<1xi32>}> : () -> tensor<1xi32> - %35 = "tosa.const"() <{values = dense<1585006070> : tensor<1xi32>}> : () -> tensor<1xi32> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> - %40 = "tosa.const"() <{values = dense<-74> : tensor<1xi8>}> : () -> tensor<1xi8> - %41 = "tosa.const"() <{values = dense<1976102450> : tensor<1xi32>}> : () -> tensor<1xi32> - %42 = "tosa.const"() <{values = dense<1580881984> : tensor<1xi32>}> : () -> tensor<1xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %45 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x100xi8>}> : () -> tensor<100x1x7x100xi8> - %48 = "tosa.const"() <{values = dense<-56> : tensor<1xi8>}> : () -> tensor<1xi8> - %49 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> - %50 = "tosa.const"() <{values = dense<1139114841> : tensor<1xi32>}> : () -> tensor<1xi32> - %51 = "tosa.const"() <{values = dense<1822583773> : tensor<1xi32>}> : () -> tensor<1xi32> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi8>}> : () -> tensor<100xi8> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %54 = "tosa.const"() <{values = dense<41> : tensor<1xi8>}> : () -> tensor<1xi8> - %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100xi32>}> : () -> tensor<100xi32> - %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<100x1x7x250xi8>}> : () -> tensor<100x1x7x250xi8> - %57 = "tosa.const"() <{values = dense<-83> : tensor<1xi8>}> : () -> tensor<1xi8> - %58 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %59 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %60 = "tosa.const"() <{values = dense<1827101553> : tensor<1xi32>}> : () -> tensor<1xi32> - %61 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %62 = "tosa.const"() <{values = dense<1461681264> : tensor<1xi32>}> : () -> tensor<1xi32> - %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi8>}> : () -> tensor<250xi8> - %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi32>}> : () -> tensor<250xi32> - %65 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> - %66 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %67 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %68 = "tosa.const"() <{values = dense<4> : tensor<1xi8>}> : () -> tensor<1xi8> - %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250xi32>}> : () -> tensor<250xi32> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<250x1x48x39xi8>}> : () -> tensor<250x1x48x39xi8> - %71 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %72 = tosa.reshape %arg0, %71 : (tensor<1x296x39xi8>, !tosa.shape<4>) -> tensor<1x1x296x39xi8> - %73 = tosa.conv2d %72, %70, %69, %68, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x296x39xi8>, tensor<250x1x48x39xi8>, tensor<250xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x250xi32> - %74 = tosa.rescale %73, %64, %63, %66, %65 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi32>, tensor<250xi32>, tensor<250xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x250xi8> - %75 = tosa.rescale %74, %62, %61, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x250xi32> - %76 = tosa.rescale %74, %60, %59, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x250xi32> - %77 = tosa.maximum %76, %75 : (tensor<1x1x148x250xi32>, tensor<1x1x148x250xi32>) -> tensor<1x1x148x250xi32> - %78 = tosa.rescale %77, %58, %59, %66, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x250xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x250xi8> - %79 = tosa.conv2d %78, %56, %55, %57, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x250xi8>, tensor<100x1x7x250xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> - %80 = tosa.rescale %79, %53, %52, %66, %54 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %81 = tosa.rescale %80, %51, %61, %54, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %82 = tosa.rescale %80, %50, %49, %54, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %83 = tosa.maximum %82, %81 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> - %84 = tosa.rescale %83, %58, %59, %66, %48 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %85 = tosa.conv2d %84, %47, %46, %48, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> - %86 = tosa.rescale %85, %44, %43, %66, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %87 = tosa.rescale %86, %42, %61, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %88 = tosa.rescale %86, %41, %59, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %89 = tosa.maximum %88, %87 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> - %90 = tosa.rescale %89, %58, %59, %66, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %91 = tosa.conv2d %90, %39, %38, %40, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> - %92 = tosa.rescale %91, %37, %36, %66, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %93 = tosa.rescale %92, %35, %61, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %94 = tosa.rescale %92, %34, %59, %45, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %95 = tosa.maximum %94, %93 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> - %96 = tosa.rescale %95, %58, %59, %66, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %97 = tosa.conv2d %96, %33, %32, %40, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> - %98 = tosa.rescale %97, %31, %30, %66, %68 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %99 = tosa.rescale %98, %29, %61, %68, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %100 = tosa.rescale %98, %28, %59, %68, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %101 = tosa.maximum %100, %99 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> - %102 = tosa.rescale %101, %58, %59, %66, %57 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %103 = tosa.conv2d %102, %27, %26, %57, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<100x1x7x100xi8>, tensor<100xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x100xi32> - %104 = tosa.rescale %103, %25, %24, %66, %65 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<100xi32>, tensor<100xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %105 = tosa.rescale %104, %23, %61, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %106 = tosa.rescale %104, %22, %59, %65, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x100xi32> - %107 = tosa.maximum %106, %105 : (tensor<1x1x148x100xi32>, tensor<1x1x148x100xi32>) -> tensor<1x1x148x100xi32> - %108 = tosa.rescale %107, %58, %59, %66, %21 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x100xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x100xi8> - %109 = tosa.conv2d %108, %20, %19, %21, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x100xi8>, tensor<750x1x32x100xi8>, tensor<750xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x750xi32> - %110 = tosa.rescale %109, %17, %16, %66, %18 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<750xi32>, tensor<750xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> - %111 = tosa.rescale %110, %15, %61, %18, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> - %112 = tosa.rescale %110, %14, %59, %18, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> - %113 = tosa.maximum %112, %111 : (tensor<1x1x148x750xi32>, tensor<1x1x148x750xi32>) -> tensor<1x1x148x750xi32> - %114 = tosa.rescale %113, %58, %59, %66, %13 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> - %115 = tosa.conv2d %114, %12, %11, %13, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x750xi8>, tensor<750x1x1x750xi8>, tensor<750xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x750xi32> - %116 = tosa.rescale %115, %9, %8, %66, %10 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<750xi32>, tensor<750xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> - %117 = tosa.rescale %116, %7, %61, %10, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> - %118 = tosa.rescale %116, %6, %59, %10, %66 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x1x148x750xi32> - %119 = tosa.maximum %118, %117 : (tensor<1x1x148x750xi32>, tensor<1x1x148x750xi32>) -> tensor<1x1x148x750xi32> - %120 = tosa.rescale %119, %58, %59, %66, %5 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x750xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x750xi8> - %121 = tosa.conv2d %120, %4, %3, %5, %67 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x148x750xi8>, tensor<29x1x1x750xi8>, tensor<29xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x148x29xi32> - %122 = tosa.rescale %121, %1, %0, %66, %2 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x148x29xi32>, tensor<29xi32>, tensor<29xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x148x29xi8> - return %122 : tensor<1x1x148x29xi8> - } -} diff --git a/tests/gold/test_python_api/vww4_128_128_INT8.mlir b/tests/gold/test_python_api/vww4_128_128_INT8.mlir deleted file mode 100644 index 0991a35..0000000 --- a/tests/gold/test_python_api/vww4_128_128_INT8.mlir +++ /dev/null @@ -1,514 +0,0 @@ -module attributes {tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "1.5.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor<1x128x128x1xi8>) -> tensor<1x2xi8> attributes {tf.entry_function = {inputs = "input", outputs = "Identity"}} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %1 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %2 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %3 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %4 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %5 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %6 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %7 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %8 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %9 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %10 = tosa.const_shape {values = dense_resource<__elided__> : tensor<2xindex>} : () -> !tosa.shape<2> - %11 = "tosa.const"() <{values = dense<41> : tensor<2xi8>}> : () -> tensor<2xi8> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2xi32>}> : () -> tensor<2xi32> - %13 = "tosa.const"() <{values = dense<-17> : tensor<1xi8>}> : () -> tensor<1xi8> - %14 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2xi32>}> : () -> tensor<2xi32> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<2x1x1x128xi8>}> : () -> tensor<2x1x1x128xi8> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %17 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x32xi8>}> : () -> tensor<128x1x1x32xi8> - %20 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %21 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %22 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x96xi8>}> : () -> tensor<32x1x1x96xi8> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %25 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %28 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %29 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %30 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %31 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> - %32 = "tosa.const"() <{values = dense<20> : tensor<1xi8>}> : () -> tensor<1xi8> - %33 = "tosa.const"() <{values = dense<1867675366> : tensor<1xi32>}> : () -> tensor<1xi32> - %34 = "tosa.const"() <{values = dense<1869358422> : tensor<1xi32>}> : () -> tensor<1xi32> - %35 = "tosa.const"() <{values = dense<-23> : tensor<1xi8>}> : () -> tensor<1xi8> - %36 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> - %37 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %40 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x96xi8>}> : () -> tensor<32x1x1x96xi8> - %41 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %42 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %45 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %48 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> - %49 = "tosa.const"() <{values = dense<-23> : tensor<1xi8>}> : () -> tensor<1xi8> - %50 = "tosa.const"() <{values = dense<1356240683> : tensor<1xi32>}> : () -> tensor<1xi32> - %51 = "tosa.const"() <{values = dense<2017076441> : tensor<1xi32>}> : () -> tensor<1xi32> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %53 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x96xi8>}> : () -> tensor<16x1x1x96xi8> - %56 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %57 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %58 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %61 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x16xi8>}> : () -> tensor<96x1x1x16xi8> - %64 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %65 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %66 = "tosa.const"() <{values = dense<-21> : tensor<1xi8>}> : () -> tensor<1xi8> - %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x288xi8>}> : () -> tensor<16x1x1x288xi8> - %69 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %72 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x288xi8>}> : () -> tensor<1x3x3x288xi8> - %73 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi8>}> : () -> tensor<288xi8> - %74 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288xi32>}> : () -> tensor<288xi32> - %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<288x1x1x68xi8>}> : () -> tensor<288x1x1x68xi8> - %77 = "tosa.const"() <{values = dense<-8> : tensor<1xi8>}> : () -> tensor<1xi8> - %78 = "tosa.const"() <{values = dense<2052730416> : tensor<1xi32>}> : () -> tensor<1xi32> - %79 = "tosa.const"() <{values = dense<1366556772> : tensor<1xi32>}> : () -> tensor<1xi32> - %80 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> - %81 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> - %82 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi8>}> : () -> tensor<48xi8> - %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %84 = "tosa.const"() <{values = dense<18> : tensor<1xi8>}> : () -> tensor<1xi8> - %85 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48xi32>}> : () -> tensor<48xi32> - %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<48x1x1x172xi8>}> : () -> tensor<48x1x1x172xi8> - %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> - %88 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %89 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %90 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x172xi8>}> : () -> tensor<1x3x3x172xi8> - %91 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> - %92 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172x1x1x68xi8>}> : () -> tensor<172x1x1x68xi8> - %95 = "tosa.const"() <{values = dense<-10> : tensor<1xi8>}> : () -> tensor<1xi8> - %96 = "tosa.const"() <{values = dense<1372189797> : tensor<1xi32>}> : () -> tensor<1xi32> - %97 = "tosa.const"() <{values = dense<1887351030> : tensor<1xi32>}> : () -> tensor<1xi32> - %98 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi8>}> : () -> tensor<68xi8> - %99 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> - %100 = "tosa.const"() <{values = dense<-12> : tensor<1xi8>}> : () -> tensor<1xi8> - %101 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> - %102 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68x1x1x172xi8>}> : () -> tensor<68x1x1x172xi8> - %103 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> - %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %106 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x172xi8>}> : () -> tensor<1x3x3x172xi8> - %107 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi8>}> : () -> tensor<172xi8> - %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172xi32>}> : () -> tensor<172xi32> - %110 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<172x1x1x68xi8>}> : () -> tensor<172x1x1x68xi8> - %111 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi8>}> : () -> tensor<68xi8> - %112 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> - %113 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68xi32>}> : () -> tensor<68xi32> - %114 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<68x1x1x192xi8>}> : () -> tensor<68x1x1x192xi8> - %115 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %116 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %117 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %118 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x192xi8>}> : () -> tensor<1x3x3x192xi8> - %119 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi8>}> : () -> tensor<192xi8> - %120 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %121 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192xi32>}> : () -> tensor<192xi32> - %122 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<192x1x1x52xi8>}> : () -> tensor<192x1x1x52xi8> - %123 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> - %124 = "tosa.const"() <{values = dense<1799263499> : tensor<1xi32>}> : () -> tensor<1xi32> - %125 = "tosa.const"() <{values = dense<1622651996> : tensor<1xi32>}> : () -> tensor<1xi32> - %126 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> - %127 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi8>}> : () -> tensor<44xi8> - %128 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> - %129 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> - %130 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44x1x1x268xi8>}> : () -> tensor<44x1x1x268xi8> - %131 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %132 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %133 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %134 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> - %135 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %136 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %137 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %138 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x52xi8>}> : () -> tensor<268x1x1x52xi8> - %139 = "tosa.const"() <{values = dense<1549390221> : tensor<1xi32>}> : () -> tensor<1xi32> - %140 = "tosa.const"() <{values = dense<2040440426> : tensor<1xi32>}> : () -> tensor<1xi32> - %141 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> - %142 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> - %143 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi8>}> : () -> tensor<52xi8> - %144 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi32>}> : () -> tensor<52xi32> - %145 = "tosa.const"() <{values = dense<-6> : tensor<1xi8>}> : () -> tensor<1xi8> - %146 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52xi32>}> : () -> tensor<52xi32> - %147 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<52x1x1x268xi8>}> : () -> tensor<52x1x1x268xi8> - %148 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %149 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %150 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %151 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> - %152 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %153 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %154 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %155 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x44xi8>}> : () -> tensor<268x1x1x44xi8> - %156 = "tosa.const"() <{values = dense<-1> : tensor<1xi8>}> : () -> tensor<1xi8> - %157 = "tosa.const"() <{values = dense<1767410519> : tensor<1xi32>}> : () -> tensor<1xi32> - %158 = "tosa.const"() <{values = dense<1898895765> : tensor<1xi32>}> : () -> tensor<1xi32> - %159 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> - %160 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi8>}> : () -> tensor<40xi8> - %161 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %162 = "tosa.const"() <{values = dense<3> : tensor<1xi8>}> : () -> tensor<1xi8> - %163 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40xi32>}> : () -> tensor<40xi32> - %164 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<40x1x1x268xi8>}> : () -> tensor<40x1x1x268xi8> - %165 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %166 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %167 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %168 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x268xi8>}> : () -> tensor<1x3x3x268xi8> - %169 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi8>}> : () -> tensor<268xi8> - %170 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %171 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268xi32>}> : () -> tensor<268xi32> - %172 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<268x1x1x44xi8>}> : () -> tensor<268x1x1x44xi8> - %173 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi8>}> : () -> tensor<44xi8> - %174 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> - %175 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44xi32>}> : () -> tensor<44xi32> - %176 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<44x1x1x152xi8>}> : () -> tensor<44x1x1x152xi8> - %177 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi8>}> : () -> tensor<152xi8> - %178 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> - %179 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> - %180 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x152xi8>}> : () -> tensor<1x3x3x152xi8> - %181 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi8>}> : () -> tensor<152xi8> - %182 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> - %183 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152xi32>}> : () -> tensor<152xi32> - %184 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<152x1x1x32xi8>}> : () -> tensor<152x1x1x32xi8> - %185 = "tosa.const"() <{values = dense<5> : tensor<1xi8>}> : () -> tensor<1xi8> - %186 = "tosa.const"() <{values = dense<50> : tensor<1xi8>}> : () -> tensor<1xi8> - %187 = "tosa.const"() <{values = dense<1225590971> : tensor<1xi32>}> : () -> tensor<1xi32> - %188 = "tosa.const"() <{values = dense<2080949659> : tensor<1xi32>}> : () -> tensor<1xi32> - %189 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> - %190 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> - %191 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %192 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %193 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x96xi8>}> : () -> tensor<28x1x1x96xi8> - %194 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %195 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %196 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %197 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %198 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %199 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %200 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %201 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> - %202 = "tosa.const"() <{values = dense<1> : tensor<1xi8>}> : () -> tensor<1xi8> - %203 = "tosa.const"() <{values = dense<1109216184> : tensor<1xi32>}> : () -> tensor<1xi32> - %204 = "tosa.const"() <{values = dense<1288860604> : tensor<1xi32>}> : () -> tensor<1xi32> - %205 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> - %206 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> - %207 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %208 = "tosa.const"() <{values = dense<2> : tensor<1xi8>}> : () -> tensor<1xi8> - %209 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %210 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x96xi8>}> : () -> tensor<28x1x1x96xi8> - %211 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %212 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %213 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %214 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x96xi8>}> : () -> tensor<1x3x3x96xi8> - %215 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi8>}> : () -> tensor<96xi8> - %216 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %217 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96xi32>}> : () -> tensor<96xi32> - %218 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<96x1x1x32xi8>}> : () -> tensor<96x1x1x32xi8> - %219 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %220 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %221 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> - %222 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %223 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x1x1x28xi8>}> : () -> tensor<32x1x1x28xi8> - %224 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> - %225 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %226 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %227 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x28xi8>}> : () -> tensor<1x3x3x28xi8> - %228 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi8>}> : () -> tensor<28xi8> - %229 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %230 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28xi32>}> : () -> tensor<28xi32> - %231 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<28x1x1x16xi8>}> : () -> tensor<28x1x1x16xi8> - %232 = "tosa.const"() <{values = dense<-13> : tensor<1xi8>}> : () -> tensor<1xi8> - %233 = "tosa.const"() <{values = dense<49> : tensor<1xi8>}> : () -> tensor<1xi8> - %234 = "tosa.const"() <{values = dense<1170608407> : tensor<1xi32>}> : () -> tensor<1xi32> - %235 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %236 = "tosa.const"() <{values = dense<1615754472> : tensor<1xi32>}> : () -> tensor<1xi32> - %237 = "tosa.const"() <{values = dense<10> : tensor<1xi8>}> : () -> tensor<1xi8> - %238 = "tosa.const"() <{values = dense<11> : tensor<1xi8>}> : () -> tensor<1xi8> - %239 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %240 = "tosa.const"() <{values = dense<-30> : tensor<1xi8>}> : () -> tensor<1xi8> - %241 = tosa.const_shape {values = dense_resource<__elided__> : tensor<8xindex>} : () -> !tosa.shape<8> - %242 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %243 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %244 = "tosa.const"() <{values = dense<-33> : tensor<1xi8>}> : () -> tensor<1xi8> - %245 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %246 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x1x1x14xi8>}> : () -> tensor<16x1x1x14xi8> - %247 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi8>}> : () -> tensor<14xi8> - %248 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> - %249 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> - %250 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x14xi8>}> : () -> tensor<1x3x3x14xi8> - %251 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi8>}> : () -> tensor<14xi8> - %252 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> - %253 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14xi32>}> : () -> tensor<14xi32> - %254 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<14x1x1x12xi8>}> : () -> tensor<14x1x1x12xi8> - %255 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi8>}> : () -> tensor<12xi8> - %256 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %257 = "tosa.const"() <{values = dense<-30> : tensor<1xi8>}> : () -> tensor<1xi8> - %258 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12xi32>}> : () -> tensor<12xi32> - %259 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<12x1x1x8xi8>}> : () -> tensor<12x1x1x8xi8> - %260 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> - %261 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %262 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %263 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x8xi8>}> : () -> tensor<1x3x3x8xi8> - %264 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> - %265 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %266 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %267 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x1x1x4xi8>}> : () -> tensor<8x1x1x4xi8> - %268 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> - %269 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %270 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %271 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4x1x1x4xi8>}> : () -> tensor<4x1x1x4xi8> - %272 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> - %273 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %274 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %275 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1x3x3x4xi8>}> : () -> tensor<1x3x3x4xi8> - %276 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi8>}> : () -> tensor<4xi8> - %277 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %278 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4xi32>}> : () -> tensor<4xi32> - %279 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<4x1x1x8xi8>}> : () -> tensor<4x1x1x8xi8> - %280 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi8>}> : () -> tensor<8xi8> - %281 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %282 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %283 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %284 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8x3x3x1xi8>}> : () -> tensor<8x3x3x1xi8> - %285 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<8xi32>}> : () -> tensor<8xi32> - %286 = "tosa.const"() <{values = dense<-70> : tensor<1xi8>}> : () -> tensor<1xi8> - %287 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %288 = tosa.conv2d %arg0, %284, %285, %286, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x128x128x1xi8>, tensor<8x3x3x1xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x8xi32> - %289 = tosa.rescale %288, %281, %280, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x8xi8> - %290 = tosa.clamp %289 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x8xi8>) -> tensor<1x64x64x8xi8> - %291 = tosa.conv2d %290, %279, %278, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x8xi8>, tensor<4x1x1x8xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> - %292 = tosa.rescale %291, %277, %276, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> - %293 = tosa.clamp %292 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x4xi8>) -> tensor<1x64x64x4xi8> - %294 = tosa.reshape %275, %9 : (tensor<1x3x3x4xi8>, !tosa.shape<4>) -> tensor<3x3x4x1xi8> - %295 = tosa.depthwise_conv2d %293, %294, %274, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<3x3x4x1xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> - %296 = tosa.rescale %295, %273, %272, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> - %297 = tosa.clamp %296 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x4xi8>) -> tensor<1x64x64x4xi8> - %298 = tosa.conv2d %297, %271, %270, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<4x1x1x4xi8>, tensor<4xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x4xi32> - %299 = tosa.rescale %298, %269, %268, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x4xi32>, tensor<4xi32>, tensor<4xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x4xi8> - %300 = tosa.conv2d %299, %267, %266, %287, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x4xi8>, tensor<8x1x1x4xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x64x64x8xi32> - %301 = tosa.rescale %300, %265, %264, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x64x64x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x64x64x8xi8> - %302 = tosa.clamp %301 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x64x64x8xi8>) -> tensor<1x64x64x8xi8> - %303 = tosa.reshape %263, %8 : (tensor<1x3x3x8xi8>, !tosa.shape<4>) -> tensor<3x3x8x1xi8> - %304 = tosa.depthwise_conv2d %302, %303, %262, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x64x64x8xi8>, tensor<3x3x8x1xi8>, tensor<8xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x8xi32> - %305 = tosa.rescale %304, %261, %260, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x8xi32>, tensor<8xi32>, tensor<8xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x8xi8> - %306 = tosa.clamp %305 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x8xi8>) -> tensor<1x32x32x8xi8> - %307 = tosa.conv2d %306, %259, %258, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x8xi8>, tensor<12x1x1x8xi8>, tensor<12xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x12xi32> - %308 = tosa.rescale %307, %256, %255, %283, %257 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x12xi32>, tensor<12xi32>, tensor<12xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x12xi8> - %309 = tosa.conv2d %308, %254, %253, %257, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x12xi8>, tensor<14x1x1x12xi8>, tensor<14xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x14xi32> - %310 = tosa.rescale %309, %252, %251, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x14xi32>, tensor<14xi32>, tensor<14xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x14xi8> - %311 = tosa.clamp %310 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x14xi8>) -> tensor<1x32x32x14xi8> - %312 = tosa.reshape %250, %7 : (tensor<1x3x3x14xi8>, !tosa.shape<4>) -> tensor<3x3x14x1xi8> - %313 = tosa.depthwise_conv2d %311, %312, %249, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x14xi8>, tensor<3x3x14x1xi8>, tensor<14xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x14xi32> - %314 = tosa.rescale %313, %248, %247, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x14xi32>, tensor<14xi32>, tensor<14xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x14xi8> - %315 = tosa.clamp %314 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x14xi8>) -> tensor<1x32x32x14xi8> - %316 = tosa.conv2d %315, %246, %245, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x14xi8>, tensor<16x1x1x14xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x16xi32> - %317 = tosa.rescale %316, %243, %242, %283, %244 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x16xi8> - %318 = tosa.pad %308, %241, %240 : (tensor<1x32x32x12xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x32x32x16xi8> - %319 = tosa.rescale %318, %239, %238, %257, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x32x32x16xi32> - %320 = tosa.rescale %317, %239, %237, %244, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x32x32x16xi32> - %321 = tosa.rescale %320, %236, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x32x32x16xi32> - %322 = tosa.add %319, %321 : (tensor<1x32x32x16xi32>, tensor<1x32x32x16xi32>) -> tensor<1x32x32x16xi32> - %323 = tosa.rescale %322, %234, %233, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x16xi8> - %324 = tosa.conv2d %323, %231, %230, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x16xi8>, tensor<28x1x1x16xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x32x32x28xi32> - %325 = tosa.rescale %324, %229, %228, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x32x32x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x32x32x28xi8> - %326 = tosa.clamp %325 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x32x32x28xi8>) -> tensor<1x32x32x28xi8> - %327 = tosa.reshape %227, %6 : (tensor<1x3x3x28xi8>, !tosa.shape<4>) -> tensor<3x3x28x1xi8> - %328 = tosa.depthwise_conv2d %326, %327, %226, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x32x32x28xi8>, tensor<3x3x28x1xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> - %329 = tosa.rescale %328, %225, %224, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> - %330 = tosa.clamp %329 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x28xi8>) -> tensor<1x16x16x28xi8> - %331 = tosa.conv2d %330, %223, %222, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x28xi8>, tensor<32x1x1x28xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x32xi32> - %332 = tosa.rescale %331, %220, %219, %283, %221 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> - %333 = tosa.conv2d %332, %218, %217, %221, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> - %334 = tosa.rescale %333, %216, %215, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> - %335 = tosa.clamp %334 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> - %336 = tosa.reshape %214, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %337 = tosa.depthwise_conv2d %335, %336, %213, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> - %338 = tosa.rescale %337, %212, %211, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> - %339 = tosa.clamp %338 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> - %340 = tosa.conv2d %339, %210, %209, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<28x1x1x96xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> - %341 = tosa.rescale %340, %207, %206, %283, %208 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> - %342 = tosa.pad %341, %241, %205 : (tensor<1x16x16x28xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x16x16x32xi8> - %343 = tosa.rescale %332, %239, %238, %221, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %344 = tosa.rescale %342, %239, %237, %208, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %345 = tosa.rescale %344, %204, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %346 = tosa.add %343, %345 : (tensor<1x16x16x32xi32>, tensor<1x16x16x32xi32>) -> tensor<1x16x16x32xi32> - %347 = tosa.rescale %346, %203, %233, %283, %202 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> - %348 = tosa.conv2d %347, %201, %200, %202, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> - %349 = tosa.rescale %348, %199, %198, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> - %350 = tosa.clamp %349 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> - %351 = tosa.reshape %197, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %352 = tosa.depthwise_conv2d %350, %351, %196, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x96xi32> - %353 = tosa.rescale %352, %195, %194, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x96xi8> - %354 = tosa.clamp %353 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x96xi8>) -> tensor<1x16x16x96xi8> - %355 = tosa.conv2d %354, %193, %192, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x96xi8>, tensor<28x1x1x96xi8>, tensor<28xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x28xi32> - %356 = tosa.rescale %355, %191, %190, %283, %208 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x28xi32>, tensor<28xi32>, tensor<28xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x28xi8> - %357 = tosa.pad %356, %241, %189 : (tensor<1x16x16x28xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x16x16x32xi8> - %358 = tosa.rescale %347, %239, %238, %202, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %359 = tosa.rescale %357, %239, %237, %208, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %360 = tosa.rescale %359, %188, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x16x16x32xi32> - %361 = tosa.add %358, %360 : (tensor<1x16x16x32xi32>, tensor<1x16x16x32xi32>) -> tensor<1x16x16x32xi32> - %362 = tosa.rescale %361, %187, %186, %283, %185 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x32xi8> - %363 = tosa.conv2d %362, %184, %183, %185, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x32xi8>, tensor<152x1x1x32xi8>, tensor<152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x16x16x152xi32> - %364 = tosa.rescale %363, %182, %181, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x16x16x152xi32>, tensor<152xi32>, tensor<152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x16x16x152xi8> - %365 = tosa.clamp %364 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x16x16x152xi8>) -> tensor<1x16x16x152xi8> - %366 = tosa.reshape %180, %4 : (tensor<1x3x3x152xi8>, !tosa.shape<4>) -> tensor<3x3x152x1xi8> - %367 = tosa.depthwise_conv2d %365, %366, %179, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x16x16x152xi8>, tensor<3x3x152x1xi8>, tensor<152xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x152xi32> - %368 = tosa.rescale %367, %178, %177, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x152xi32>, tensor<152xi32>, tensor<152xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x152xi8> - %369 = tosa.clamp %368 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x152xi8>) -> tensor<1x8x8x152xi8> - %370 = tosa.conv2d %369, %176, %175, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x152xi8>, tensor<44x1x1x152xi8>, tensor<44xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x44xi32> - %371 = tosa.rescale %370, %174, %173, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<44xi32>, tensor<44xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> - %372 = tosa.conv2d %371, %172, %171, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x44xi8>, tensor<268x1x1x44xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %373 = tosa.rescale %372, %170, %169, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %374 = tosa.clamp %373 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %375 = tosa.reshape %168, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> - %376 = tosa.depthwise_conv2d %374, %375, %167, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %377 = tosa.rescale %376, %166, %165, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %378 = tosa.clamp %377 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %379 = tosa.conv2d %378, %164, %163, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<40x1x1x268xi8>, tensor<40xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x40xi32> - %380 = tosa.rescale %379, %161, %160, %283, %162 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x40xi32>, tensor<40xi32>, tensor<40xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x40xi8> - %381 = tosa.pad %380, %241, %159 : (tensor<1x8x8x40xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x44xi8> - %382 = tosa.rescale %371, %239, %238, %232, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x44xi32> - %383 = tosa.rescale %381, %239, %237, %162, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x44xi32> - %384 = tosa.rescale %383, %158, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x44xi32> - %385 = tosa.add %382, %384 : (tensor<1x8x8x44xi32>, tensor<1x8x8x44xi32>) -> tensor<1x8x8x44xi32> - %386 = tosa.rescale %385, %157, %186, %283, %156 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> - %387 = tosa.conv2d %386, %155, %154, %156, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x44xi8>, tensor<268x1x1x44xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %388 = tosa.rescale %387, %153, %152, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %389 = tosa.clamp %388 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %390 = tosa.reshape %151, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> - %391 = tosa.depthwise_conv2d %389, %390, %150, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %392 = tosa.rescale %391, %149, %148, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %393 = tosa.clamp %392 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %394 = tosa.conv2d %393, %147, %146, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<52x1x1x268xi8>, tensor<52xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x52xi32> - %395 = tosa.rescale %394, %144, %143, %283, %145 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<52xi32>, tensor<52xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> - %396 = tosa.pad %386, %142, %141 : (tensor<1x8x8x44xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x52xi8> - %397 = tosa.rescale %396, %239, %238, %156, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %398 = tosa.rescale %395, %239, %237, %145, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %399 = tosa.rescale %398, %140, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %400 = tosa.add %397, %399 : (tensor<1x8x8x52xi32>, tensor<1x8x8x52xi32>) -> tensor<1x8x8x52xi32> - %401 = tosa.rescale %400, %139, %186, %283, %232 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> - %402 = tosa.conv2d %401, %138, %137, %232, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x52xi8>, tensor<268x1x1x52xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %403 = tosa.rescale %402, %136, %135, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %404 = tosa.clamp %403 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %405 = tosa.reshape %134, %3 : (tensor<1x3x3x268xi8>, !tosa.shape<4>) -> tensor<3x3x268x1xi8> - %406 = tosa.depthwise_conv2d %404, %405, %133, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<3x3x268x1xi8>, tensor<268xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x268xi32> - %407 = tosa.rescale %406, %132, %131, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x268xi32>, tensor<268xi32>, tensor<268xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x268xi8> - %408 = tosa.clamp %407 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x268xi8>) -> tensor<1x8x8x268xi8> - %409 = tosa.conv2d %408, %130, %129, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x268xi8>, tensor<44x1x1x268xi8>, tensor<44xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x44xi32> - %410 = tosa.rescale %409, %128, %127, %283, %145 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x44xi32>, tensor<44xi32>, tensor<44xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x44xi8> - %411 = tosa.pad %410, %142, %126 : (tensor<1x8x8x44xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x52xi8> - %412 = tosa.rescale %401, %239, %238, %232, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %413 = tosa.rescale %411, %239, %237, %145, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %414 = tosa.rescale %413, %125, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x52xi32> - %415 = tosa.add %412, %414 : (tensor<1x8x8x52xi32>, tensor<1x8x8x52xi32>) -> tensor<1x8x8x52xi32> - %416 = tosa.rescale %415, %124, %186, %283, %123 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x52xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x52xi8> - %417 = tosa.conv2d %416, %122, %121, %123, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x52xi8>, tensor<192x1x1x52xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x192xi32> - %418 = tosa.rescale %417, %120, %119, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x192xi8> - %419 = tosa.clamp %418 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x192xi8>) -> tensor<1x8x8x192xi8> - %420 = tosa.reshape %118, %2 : (tensor<1x3x3x192xi8>, !tosa.shape<4>) -> tensor<3x3x192x1xi8> - %421 = tosa.depthwise_conv2d %419, %420, %117, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x192xi8>, tensor<3x3x192x1xi8>, tensor<192xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x192xi32> - %422 = tosa.rescale %421, %116, %115, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x192xi32>, tensor<192xi32>, tensor<192xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x192xi8> - %423 = tosa.clamp %422 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x192xi8>) -> tensor<1x8x8x192xi8> - %424 = tosa.conv2d %423, %114, %113, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x192xi8>, tensor<68x1x1x192xi8>, tensor<68xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x68xi32> - %425 = tosa.rescale %424, %112, %111, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<68xi32>, tensor<68xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> - %426 = tosa.conv2d %425, %110, %109, %287, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<172x1x1x68xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> - %427 = tosa.rescale %426, %108, %107, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> - %428 = tosa.clamp %427 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> - %429 = tosa.reshape %106, %1 : (tensor<1x3x3x172xi8>, !tosa.shape<4>) -> tensor<3x3x172x1xi8> - %430 = tosa.depthwise_conv2d %428, %429, %105, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<3x3x172x1xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> - %431 = tosa.rescale %430, %104, %103, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> - %432 = tosa.clamp %431 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> - %433 = tosa.conv2d %432, %102, %101, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<68x1x1x172xi8>, tensor<68xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x68xi32> - %434 = tosa.rescale %433, %99, %98, %283, %100 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<68xi32>, tensor<68xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> - %435 = tosa.rescale %425, %239, %237, %287, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %436 = tosa.rescale %435, %97, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %437 = tosa.rescale %434, %239, %238, %100, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %438 = tosa.add %436, %437 : (tensor<1x8x8x68xi32>, tensor<1x8x8x68xi32>) -> tensor<1x8x8x68xi32> - %439 = tosa.rescale %438, %96, %186, %283, %95 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> - %440 = tosa.conv2d %439, %94, %93, %95, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<172x1x1x68xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> - %441 = tosa.rescale %440, %92, %91, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> - %442 = tosa.clamp %441 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> - %443 = tosa.reshape %90, %1 : (tensor<1x3x3x172xi8>, !tosa.shape<4>) -> tensor<3x3x172x1xi8> - %444 = tosa.depthwise_conv2d %442, %443, %89, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<3x3x172x1xi8>, tensor<172xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x172xi32> - %445 = tosa.rescale %444, %88, %87, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x172xi32>, tensor<172xi32>, tensor<172xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x172xi8> - %446 = tosa.clamp %445 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x172xi8>) -> tensor<1x8x8x172xi8> - %447 = tosa.conv2d %446, %86, %85, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x172xi8>, tensor<48x1x1x172xi8>, tensor<48xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x48xi32> - %448 = tosa.rescale %447, %83, %82, %283, %84 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x48xi32>, tensor<48xi32>, tensor<48xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x48xi8> - %449 = tosa.pad %448, %81, %80 : (tensor<1x8x8x48xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x8x8x68xi8> - %450 = tosa.rescale %439, %239, %238, %95, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %451 = tosa.rescale %449, %239, %237, %84, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %452 = tosa.rescale %451, %79, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x8x8x68xi32> - %453 = tosa.add %450, %452 : (tensor<1x8x8x68xi32>, tensor<1x8x8x68xi32>) -> tensor<1x8x8x68xi32> - %454 = tosa.rescale %453, %78, %186, %283, %77 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x68xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x68xi8> - %455 = tosa.conv2d %454, %76, %75, %77, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x68xi8>, tensor<288x1x1x68xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x8x8x288xi32> - %456 = tosa.rescale %455, %74, %73, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x8x8x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x8x8x288xi8> - %457 = tosa.clamp %456 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x8x8x288xi8>) -> tensor<1x8x8x288xi8> - %458 = tosa.reshape %72, %0 : (tensor<1x3x3x288xi8>, !tosa.shape<4>) -> tensor<3x3x288x1xi8> - %459 = tosa.depthwise_conv2d %457, %458, %71, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x8x8x288xi8>, tensor<3x3x288x1xi8>, tensor<288xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x288xi32> - %460 = tosa.rescale %459, %70, %69, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x288xi32>, tensor<288xi32>, tensor<288xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x288xi8> - %461 = tosa.clamp %460 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x288xi8>) -> tensor<1x4x4x288xi8> - %462 = tosa.conv2d %461, %68, %67, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x288xi8>, tensor<16x1x1x288xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x16xi32> - %463 = tosa.rescale %462, %65, %64, %283, %66 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> - %464 = tosa.conv2d %463, %63, %62, %66, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %465 = tosa.rescale %464, %61, %60, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %466 = tosa.clamp %465 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %467 = tosa.reshape %59, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %468 = tosa.depthwise_conv2d %466, %467, %58, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %469 = tosa.rescale %468, %57, %56, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %470 = tosa.clamp %469 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %471 = tosa.conv2d %470, %55, %54, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<16x1x1x96xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x16xi32> - %472 = tosa.rescale %471, %53, %52, %283, %95 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> - %473 = tosa.rescale %463, %239, %237, %66, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x16xi32> - %474 = tosa.rescale %473, %51, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x4x4x16xi32> - %475 = tosa.rescale %472, %239, %238, %95, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x16xi32> - %476 = tosa.add %474, %475 : (tensor<1x4x4x16xi32>, tensor<1x4x4x16xi32>) -> tensor<1x4x4x16xi32> - %477 = tosa.rescale %476, %50, %186, %283, %49 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x16xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x16xi8> - %478 = tosa.conv2d %477, %48, %47, %49, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x16xi8>, tensor<96x1x1x16xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %479 = tosa.rescale %478, %46, %45, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %480 = tosa.clamp %479 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %481 = tosa.reshape %44, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %482 = tosa.depthwise_conv2d %480, %481, %43, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %483 = tosa.rescale %482, %42, %41, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %484 = tosa.clamp %483 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %485 = tosa.conv2d %484, %40, %39, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<32x1x1x96xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x32xi32> - %486 = tosa.rescale %485, %38, %37, %283, %287 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> - %487 = tosa.pad %477, %36, %35 : (tensor<1x4x4x16xi8>, !tosa.shape<8>, tensor<1xi8>) -> tensor<1x4x4x32xi8> - %488 = tosa.rescale %487, %239, %238, %49, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x32xi32> - %489 = tosa.rescale %486, %239, %237, %287, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi8>, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor<1x4x4x32xi32> - %490 = tosa.rescale %489, %34, %235, %283, %283 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi32>) -> tensor<1x4x4x32xi32> - %491 = tosa.add %488, %490 : (tensor<1x4x4x32xi32>, tensor<1x4x4x32xi32>) -> tensor<1x4x4x32xi32> - %492 = tosa.rescale %491, %33, %186, %283, %32 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> - %493 = tosa.conv2d %492, %31, %30, %32, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x32xi8>, tensor<96x1x1x32xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %494 = tosa.rescale %493, %29, %28, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %495 = tosa.clamp %494 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %496 = tosa.reshape %27, %5 : (tensor<1x3x3x96xi8>, !tosa.shape<4>) -> tensor<3x3x96x1xi8> - %497 = tosa.depthwise_conv2d %495, %496, %26, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<3x3x96x1xi8>, tensor<96xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x96xi32> - %498 = tosa.rescale %497, %25, %24, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x96xi32>, tensor<96xi32>, tensor<96xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x96xi8> - %499 = tosa.clamp %498 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x96xi8>) -> tensor<1x4x4x96xi8> - %500 = tosa.conv2d %499, %23, %22, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x96xi8>, tensor<32x1x1x96xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x32xi32> - %501 = tosa.rescale %500, %21, %20, %283, %202 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x32xi32>, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x32xi8> - %502 = tosa.conv2d %501, %19, %18, %202, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x4x4x32xi8>, tensor<128x1x1x32xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x4x4x128xi32> - %503 = tosa.rescale %502, %17, %16, %283, %282 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x4x4x128xi32>, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x4x4x128xi8> - %504 = tosa.clamp %503 {max_val = 127 : i8, min_val = -128 : i8} : (tensor<1x4x4x128xi8>) -> tensor<1x4x4x128xi8> - %505 = tosa.avg_pool2d %504, %287, %287 {acc_type = i32, kernel = array, pad = array, stride = array} : (tensor<1x4x4x128xi8>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x128xi8> - %506 = tosa.conv2d %505, %15, %14, %282, %287 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor<1x1x1x128xi8>, tensor<2x1x1x128xi8>, tensor<2xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor<1x1x1x2xi32> - %507 = tosa.rescale %506, %12, %11, %283, %13 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor<1x1x1x2xi32>, tensor<2xi32>, tensor<2xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor<1x1x1x2xi8> - %508 = tosa.reshape %507, %10 : (tensor<1x1x1x2xi8>, !tosa.shape<2>) -> tensor<1x2xi8> - return %508 : tensor<1x2xi8> - } -} diff --git a/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir b/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir deleted file mode 100644 index 6457b20..0000000 --- a/tests/gold/test_python_api/yolov3_tiny_int8_pruned_backbone_only.mlir +++ /dev/null @@ -1,197 +0,0 @@ -module attributes {tf_saved_model.semantics, tfl.description = "MLIR Converted.", tfl.metadata = {min_runtime_version = "2.3.0\00\00\00\00\00\00\00\00\00\00\00"}, tfl.schema_version = 3 : i32} { - func.func @main(%arg0: tensor {tf_saved_model.index_path = ["input"]}) -> (tensor {tf_saved_model.index_path = ["yolo_output_1"]}, tensor {tf_saved_model.index_path = ["yolo_output_0"]}) attributes {tf.entry_function = {inputs = "serving_default_input:0", outputs = "StatefulPartitionedCall:1,StatefulPartitionedCall:0"}, tf_saved_model.exported_names = ["serving_default"]} { - %0 = tosa.const_shape {values = dense_resource<__elided__> : tensor<5xindex>} : () -> !tosa.shape<5> - %1 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi8>}> : () -> tensor<255xi8> - %2 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> - %3 = "tosa.const"() <{values = dense<67> : tensor<1xi8>}> : () -> tensor<1xi8> - %4 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> - %5 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255x1x1x256xi8>}> : () -> tensor<255x1x1x256xi8> - %6 = "tosa.const"() <{values = dense<-100> : tensor<1xi8>}> : () -> tensor<1xi8> - %7 = "tosa.const"() <{values = dense<2146540981> : tensor<1xi32>}> : () -> tensor<1xi32> - %8 = "tosa.const"() <{values = dense<1717232810> : tensor<1xi32>}> : () -> tensor<1xi32> - %9 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %10 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %11 = "tosa.const"() <{values = dense<14> : tensor<1xi8>}> : () -> tensor<1xi8> - %12 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %13 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x3x3x384xi8>}> : () -> tensor<256x3x3x384xi8> - %14 = tosa.const_shape {values = dense_resource<__elided__> : tensor<5xindex>} : () -> !tosa.shape<5> - %15 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi8>}> : () -> tensor<255xi8> - %16 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> - %17 = "tosa.const"() <{values = dense<57> : tensor<1xi8>}> : () -> tensor<1xi8> - %18 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255xi32>}> : () -> tensor<255xi32> - %19 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<255x1x1x512xi8>}> : () -> tensor<255x1x1x512xi8> - %20 = "tosa.const"() <{values = dense<-102> : tensor<1xi8>}> : () -> tensor<1xi8> - %21 = "tosa.const"() <{values = dense<2045027926> : tensor<1xi32>}> : () -> tensor<1xi32> - %22 = "tosa.const"() <{values = dense<1636022365> : tensor<1xi32>}> : () -> tensor<1xi32> - %23 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> - %24 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %25 = "tosa.const"() <{values = dense<7> : tensor<1xi8>}> : () -> tensor<1xi8> - %26 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %27 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x3x3x256xi8>}> : () -> tensor<512x3x3x256xi8> - %28 = tosa.const_shape {values = dense<3> : tensor<2xindex>} : () -> !tosa.shape<2> - %29 = tosa.const_shape {values = dense<1> : tensor<2xindex>} : () -> !tosa.shape<2> - %30 = tosa.const_shape {values = dense_resource<__elided__> : tensor<4xindex>} : () -> !tosa.shape<4> - %31 = "tosa.const"() <{values = dense<31> : tensor<1xi8>}> : () -> tensor<1xi8> - %32 = "tosa.const"() <{values = dense<1867790575> : tensor<1xi32>}> : () -> tensor<1xi32> - %33 = "tosa.const"() <{values = dense<34> : tensor<1xi8>}> : () -> tensor<1xi8> - %34 = "tosa.const"() <{values = dense<1494232483> : tensor<1xi32>}> : () -> tensor<1xi32> - %35 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %36 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %37 = "tosa.const"() <{values = dense<-16> : tensor<1xi8>}> : () -> tensor<1xi8> - %38 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %39 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x1x1x256xi8>}> : () -> tensor<128x1x1x256xi8> - %40 = "tosa.const"() <{values = dense<-95> : tensor<1xi8>}> : () -> tensor<1xi8> - %41 = "tosa.const"() <{values = dense<1153990886> : tensor<1xi32>}> : () -> tensor<1xi32> - %42 = "tosa.const"() <{values = dense<1846385445> : tensor<1xi32>}> : () -> tensor<1xi32> - %43 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %44 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %45 = "tosa.const"() <{values = dense<24> : tensor<1xi8>}> : () -> tensor<1xi8> - %46 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %47 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x1x1x1024xi8>}> : () -> tensor<256x1x1x1024xi8> - %48 = "tosa.const"() <{values = dense<-98> : tensor<1xi8>}> : () -> tensor<1xi8> - %49 = "tosa.const"() <{values = dense<1112539429> : tensor<1xi32>}> : () -> tensor<1xi32> - %50 = "tosa.const"() <{values = dense<1780063113> : tensor<1xi32>}> : () -> tensor<1xi32> - %51 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi8>}> : () -> tensor<1024xi8> - %52 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi32>}> : () -> tensor<1024xi32> - %53 = "tosa.const"() <{values = dense<19> : tensor<1xi8>}> : () -> tensor<1xi8> - %54 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024xi32>}> : () -> tensor<1024xi32> - %55 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<1024x3x3x512xi8>}> : () -> tensor<1024x3x3x512xi8> - %56 = "tosa.const"() <{values = dense<-99> : tensor<1xi8>}> : () -> tensor<1xi8> - %57 = "tosa.const"() <{values = dense<1090607686> : tensor<1xi32>}> : () -> tensor<1xi32> - %58 = "tosa.const"() <{values = dense<1744972324> : tensor<1xi32>}> : () -> tensor<1xi32> - %59 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi8>}> : () -> tensor<512xi8> - %60 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %61 = "tosa.const"() <{values = dense<16> : tensor<1xi8>}> : () -> tensor<1xi8> - %62 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512xi32>}> : () -> tensor<512xi32> - %63 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<512x3x3x256xi8>}> : () -> tensor<512x3x3x256xi8> - %64 = "tosa.const"() <{values = dense<-108> : tensor<1xi8>}> : () -> tensor<1xi8> - %65 = "tosa.const"() <{values = dense<1827454564> : tensor<1xi32>}> : () -> tensor<1xi32> - %66 = "tosa.const"() <{values = dense<1461963673> : tensor<1xi32>}> : () -> tensor<1xi32> - %67 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi8>}> : () -> tensor<256xi8> - %68 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %69 = "tosa.const"() <{values = dense<-11> : tensor<1xi8>}> : () -> tensor<1xi8> - %70 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256xi32>}> : () -> tensor<256xi32> - %71 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<256x3x3x128xi8>}> : () -> tensor<256x3x3x128xi8> - %72 = "tosa.const"() <{values = dense<-93> : tensor<1xi8>}> : () -> tensor<1xi8> - %73 = "tosa.const"() <{values = dense<1199308892> : tensor<1xi32>}> : () -> tensor<1xi32> - %74 = "tosa.const"() <{values = dense<1918894256> : tensor<1xi32>}> : () -> tensor<1xi32> - %75 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi8>}> : () -> tensor<128xi8> - %76 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %77 = "tosa.const"() <{values = dense<28> : tensor<1xi8>}> : () -> tensor<1xi8> - %78 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128xi32>}> : () -> tensor<128xi32> - %79 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<128x3x3x64xi8>}> : () -> tensor<128x3x3x64xi8> - %80 = "tosa.const"() <{values = dense<-85> : tensor<1xi8>}> : () -> tensor<1xi8> - %81 = "tosa.const"() <{values = dense<1360529732> : tensor<1xi32>}> : () -> tensor<1xi32> - %82 = "tosa.const"() <{values = dense<1088423802> : tensor<1xi32>}> : () -> tensor<1xi32> - %83 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi8>}> : () -> tensor<64xi8> - %84 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %85 = "tosa.const"() <{values = dense<44> : tensor<1xi8>}> : () -> tensor<1xi8> - %86 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64xi32>}> : () -> tensor<64xi32> - %87 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<64x3x3x32xi8>}> : () -> tensor<64x3x3x32xi8> - %88 = "tosa.const"() <{values = dense<-74> : tensor<1xi8>}> : () -> tensor<1xi8> - %89 = "tosa.const"() <{values = dense<29> : tensor<1xi8>}> : () -> tensor<1xi8> - %90 = "tosa.const"() <{values = dense<1564368468> : tensor<1xi32>}> : () -> tensor<1xi32> - %91 = "tosa.const"() <{values = dense<32> : tensor<1xi8>}> : () -> tensor<1xi8> - %92 = "tosa.const"() <{values = dense<1251494793> : tensor<1xi32>}> : () -> tensor<1xi32> - %93 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi8>}> : () -> tensor<32xi8> - %94 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %95 = "tosa.const"() <{values = dense<58> : tensor<1xi8>}> : () -> tensor<1xi8> - %96 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32xi32>}> : () -> tensor<32xi32> - %97 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<32x3x3x16xi8>}> : () -> tensor<32x3x3x16xi8> - %98 = "tosa.const"() <{values = dense<-106> : tensor<1xi8>}> : () -> tensor<1xi8> - %99 = "tosa.const"() <{values = dense<1073741824> : tensor<1xi32>}> : () -> tensor<1xi32> - %100 = "tosa.const"() <{values = dense<30> : tensor<1xi8>}> : () -> tensor<1xi8> - %101 = "tosa.const"() <{values = dense<1905935579> : tensor<1xi32>}> : () -> tensor<1xi32> - %102 = "tosa.const"() <{values = dense<33> : tensor<1xi8>}> : () -> tensor<1xi8> - %103 = "tosa.const"() <{values = dense<1524748486> : tensor<1xi32>}> : () -> tensor<1xi32> - %104 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi8>}> : () -> tensor<16xi8> - %105 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %106 = "tosa.const"() <{values = dense<-4> : tensor<1xi8>}> : () -> tensor<1xi8> - %107 = "tosa.const"() <{values = dense<0> : tensor<1xi32>}> : () -> tensor<1xi32> - %108 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16x3x3x3xi8>}> : () -> tensor<16x3x3x3xi8> - %109 = "tosa.const"() <{values = dense_resource<__elided__> : tensor<16xi32>}> : () -> tensor<16xi32> - %110 = "tosa.const"() <{values = dense<-128> : tensor<1xi8>}> : () -> tensor<1xi8> - %111 = "tosa.const"() <{values = dense<0> : tensor<1xi8>}> : () -> tensor<1xi8> - %112 = tosa.conv2d %arg0, %108, %109, %110, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<16x3x3x3xi8>, tensor<16xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %113 = tosa.rescale %112, %105, %104, %107, %106 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<16xi32>, tensor<16xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %114 = tosa.rescale %113, %103, %102, %106, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %115 = tosa.rescale %113, %101, %100, %106, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %116 = tosa.maximum %115, %114 : (tensor, tensor) -> tensor - %117 = tosa.rescale %116, %99, %100, %107, %98 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %118 = tosa.max_pool2d %117 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %119 = tosa.conv2d %118, %97, %96, %98, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<32x3x3x16xi8>, tensor<32xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %120 = tosa.rescale %119, %94, %93, %107, %95 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<32xi32>, tensor<32xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %121 = tosa.rescale %120, %92, %91, %95, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %122 = tosa.rescale %120, %90, %89, %95, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %123 = tosa.maximum %122, %121 : (tensor, tensor) -> tensor - %124 = tosa.rescale %123, %99, %100, %107, %88 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %125 = tosa.max_pool2d %124 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %126 = tosa.conv2d %125, %87, %86, %88, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<64x3x3x32xi8>, tensor<64xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %127 = tosa.rescale %126, %84, %83, %107, %85 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<64xi32>, tensor<64xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %128 = tosa.rescale %127, %82, %91, %85, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %129 = tosa.rescale %127, %81, %89, %85, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %130 = tosa.maximum %129, %128 : (tensor, tensor) -> tensor - %131 = tosa.rescale %130, %99, %100, %107, %80 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %132 = tosa.max_pool2d %131 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %133 = tosa.conv2d %132, %79, %78, %80, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x3x3x64xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %134 = tosa.rescale %133, %76, %75, %107, %77 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %135 = tosa.rescale %134, %74, %102, %77, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %136 = tosa.rescale %134, %73, %89, %77, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %137 = tosa.maximum %136, %135 : (tensor, tensor) -> tensor - %138 = tosa.rescale %137, %99, %100, %107, %72 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %139 = tosa.max_pool2d %138 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %140 = tosa.conv2d %139, %71, %70, %72, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x3x3x128xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %141 = tosa.rescale %140, %68, %67, %107, %69 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %142 = tosa.rescale %141, %66, %102, %69, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %143 = tosa.rescale %141, %65, %100, %69, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %144 = tosa.maximum %143, %142 : (tensor, tensor) -> tensor - %145 = tosa.rescale %144, %99, %100, %107, %64 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %146 = tosa.max_pool2d %145 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %147 = tosa.conv2d %146, %63, %62, %64, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<512x3x3x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %148 = tosa.rescale %147, %60, %59, %107, %61 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %149 = tosa.rescale %148, %58, %102, %61, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %150 = tosa.rescale %148, %57, %89, %61, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %151 = tosa.maximum %150, %149 : (tensor, tensor) -> tensor - %152 = tosa.rescale %151, %99, %100, %107, %56 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %153 = tosa.max_pool2d %152 {kernel = array, pad = array, stride = array} : (tensor) -> tensor - %154 = tosa.conv2d %153, %55, %54, %56, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<1024x3x3x512xi8>, tensor<1024xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %155 = tosa.rescale %154, %52, %51, %107, %53 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1024xi32>, tensor<1024xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %156 = tosa.rescale %155, %50, %102, %53, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %157 = tosa.rescale %155, %49, %89, %53, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %158 = tosa.maximum %157, %156 : (tensor, tensor) -> tensor - %159 = tosa.rescale %158, %99, %100, %107, %48 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %160 = tosa.conv2d %159, %47, %46, %48, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x1x1x1024xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %161 = tosa.rescale %160, %44, %43, %107, %45 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %162 = tosa.rescale %161, %42, %102, %45, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %163 = tosa.rescale %161, %41, %89, %45, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %164 = tosa.maximum %163, %162 : (tensor, tensor) -> tensor - %165 = tosa.rescale %164, %99, %100, %107, %40 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %166 = tosa.conv2d %165, %39, %38, %40, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<128x1x1x256xi8>, tensor<128xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %167 = tosa.rescale %166, %36, %35, %107, %37 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<128xi32>, tensor<128xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %168 = tosa.rescale %167, %34, %33, %37, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %169 = tosa.rescale %167, %32, %31, %37, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %170 = tosa.maximum %169, %168 : (tensor, tensor) -> tensor - %171 = tosa.rescale %170, %99, %100, %107, %64 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %172 = tosa.resize %171, %30, %29, %28 {mode = "NEAREST_NEIGHBOR"} : (tensor, !tosa.shape<4>, !tosa.shape<2>, !tosa.shape<2>) -> tensor - %173 = tosa.concat %172, %145 {axis = 3 : i32} : (tensor, tensor) -> tensor - %174 = tosa.conv2d %165, %27, %26, %40, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<512x3x3x256xi8>, tensor<512xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %175 = tosa.rescale %174, %24, %23, %107, %25 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<512xi32>, tensor<512xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %176 = tosa.rescale %175, %22, %102, %25, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %177 = tosa.rescale %175, %21, %100, %25, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %178 = tosa.maximum %177, %176 : (tensor, tensor) -> tensor - %179 = tosa.rescale %178, %99, %100, %107, %20 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %180 = tosa.conv2d %179, %19, %18, %20, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<255x1x1x512xi8>, tensor<255xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %181 = tosa.rescale %180, %16, %15, %107, %17 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<255xi32>, tensor<255xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %182 = tosa.reshape %181, %14 : (tensor, !tosa.shape<5>) -> tensor - %183 = tosa.conv2d %173, %13, %12, %64, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<256x3x3x384xi8>, tensor<256xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %184 = tosa.rescale %183, %10, %9, %107, %11 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<256xi32>, tensor<256xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %185 = tosa.rescale %184, %8, %102, %11, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %186 = tosa.rescale %184, %7, %100, %11, %107 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi8>, tensor<1xi32>) -> tensor - %187 = tosa.maximum %186, %185 : (tensor, tensor) -> tensor - %188 = tosa.rescale %187, %99, %100, %107, %6 {input_unsigned = false, output_unsigned = false, per_channel = false, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<1xi32>, tensor<1xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %189 = tosa.conv2d %188, %5, %4, %6, %111 {acc_type = i32, dilation = array, pad = array, stride = array} : (tensor, tensor<255x1x1x256xi8>, tensor<255xi32>, tensor<1xi8>, tensor<1xi8>) -> tensor - %190 = tosa.rescale %189, %2, %1, %107, %3 {input_unsigned = false, output_unsigned = false, per_channel = true, rounding_mode = "DOUBLE_ROUND", scale32 = true} : (tensor, tensor<255xi32>, tensor<255xi8>, tensor<1xi32>, tensor<1xi8>) -> tensor - %191 = tosa.reshape %190, %0 : (tensor, !tosa.shape<5>) -> tensor - return %191, %182 : tensor, tensor - } -} diff --git a/tests/test_python_api.py b/tests/test_python_api.py index a2fce6a..275d524 100644 --- a/tests/test_python_api.py +++ b/tests/test_python_api.py @@ -7,25 +7,22 @@ Test suite for the `tosa-converter-for-tflite` Python API. To run tests with logging: - TOSA_TEST_ELIDE=1 pytest tests/test_python_api.py -v --log-cli-level=DEBUG + pytest tests/test_python_api.py -v --log-cli-level=DEBUG To add a new model spec: 1. Edit `tests/test_python_api.hjson`, adding an entry with: - name (str): unique spec identifier - path (str): relative model path in Arm ML Zoo repo - 2. Place the corresponding golden MLIR file under `tests/gold/test_python_api/.mlir`, normalised for whitespace. Tests cover: - File based & stream based conversion - Bytecode vs text output via `TosaConverterOutputFormat` - - MLIR text regression - Error cases: invalid sink types, truncated inputs, invalid format args - Pre-commit sanity checks """ import io import logging import os -import shutil import subprocess from functools import lru_cache from pathlib import Path @@ -48,8 +45,6 @@ logger = logging.getLogger(__name__) # ----------------------------------------------------------------------------- TEST_ROOT: Path = Path(__file__).parent MANIFEST_FILE: Path = TEST_ROOT / "test_python_api.hjson" -GOLDEN_DIR: Path = TEST_ROOT / "gold" / "test_python_api" -GENERATED_DIR: Path = TEST_ROOT / "generated" / "test_python_api" # Model-Zoo repo details MODEL_ZOO_REPO_DIR_PATH: str = os.environ.get("MODEL_ZOO_REPO_DIR_PATH") MODEL_ZOO_REPO_URL: str = "https://github.com/Arm-Examples/ML-zoo.git" @@ -81,33 +76,6 @@ def normalise_lines(lines: List[str]) -> List[str]: return normalised -def assert_mlir_matches_golden(name: str, gen_path: Path) -> None: - """ - Compare generated MLIR file to golden, after normalization. - Always copy generated MLIR to GENERATED_DIR for missing or mismatched cases. - """ - golden_path = GOLDEN_DIR / f"{name}.mlir" - dump_path = GENERATED_DIR / f"{name}.mlir" - - # If golden missing or content mismatched, dump and report - if not golden_path.exists(): - shutil.copy(gen_path, dump_path) - pytest.fail( - f"Golden MLIR missing for '{name}'; generated file dumped to {dump_path}" - ) - - gold_lines = normalise_lines(golden_path.read_text().splitlines()) - gen_lines = normalise_lines(gen_path.read_text().splitlines()) - if gen_lines != gold_lines: - shutil.copy(gen_path, dump_path) - logger.error(f"MLIR regression detected for '{name}'") - pytest.fail(f"MLIR regression for '{name}'; see dumped file {dump_path}") - - logger.debug(f"MLIR matches golden for '{name}'") - # Clean up any leftover dump - dump_path.unlink(missing_ok=True) - - # ----------------------------------------------------------------------------- # Parametrise specs dynamically # ----------------------------------------------------------------------------- @@ -188,15 +156,6 @@ def tflite_files( return mapping -@pytest.fixture(autouse=True, scope="session") -def clear_generated_dir() -> None: - """Clean or create the generated_mlir directory once before any tests run.""" - if GENERATED_DIR.exists(): - shutil.rmtree(GENERATED_DIR) - GENERATED_DIR.mkdir(parents=True, exist_ok=True) - logger.debug(f"Prepared clean generated directory at {GENERATED_DIR}") - - # ----------------------------------------------------------------------------- # Module scoped fixtures # ----------------------------------------------------------------------------- @@ -239,22 +198,6 @@ def test_bytecode_filesystem( logger.debug(f"Created bytecode file {out_file} ({out_file.stat().st_size} bytes)") -@pytest.mark.slow -@pytest.mark.python_api -def test_mlir_text_regression( - tmp_path: Path, spec: Dict[str, Any], tflite_file: Path -) -> None: - """Generate MLIR text and compare against golden MLIR text files.""" - name = spec["name"] - gen_tmp = tmp_path / f"{name}.mlir" - logger.info(f"Testing MLIR text regression for '{name}'") - tflite_flatbuffer_to_tosa_mlir( - str(tflite_file), str(gen_tmp), TosaConverterOutputFormat.Text - ) - assert gen_tmp.exists(), f"Generated MLIR missing: {gen_tmp}" - assert_mlir_matches_golden(name, gen_tmp) - - @pytest.mark.python_api def test_bytecode_stream_vs_filesystem( tmp_path: Path, sample_tflite_file: Path -- GitLab From a194f5e54f30be9149b2ea8cee5d97e3e5b740d4 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Wed, 16 Jul 2025 09:29:59 +0100 Subject: [PATCH 7/9] chore(Python API Tests): remove sanity tests for large models from model zoo Signed-off-by: Deeptanshu Sekhri --- setup.cfg | 1 - tests/README.md | 13 +-- tests/test_python_api.hjson | 62 ----------- tests/test_python_api.py | 199 ++++++------------------------------ 4 files changed, 35 insertions(+), 240 deletions(-) delete mode 100644 tests/test_python_api.hjson diff --git a/setup.cfg b/setup.cfg index 98e793f..f861493 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,4 +23,3 @@ markers = cli: marks tests of the command-line interface python_api: marks tests of the Python API pre_commit: marks tests to be run in pre-commit - slow: marks tests that take more time to run diff --git a/tests/README.md b/tests/README.md index 099dc15..a5ba9ed 100644 --- a/tests/README.md +++ b/tests/README.md @@ -65,7 +65,6 @@ The Python API test suite exercises the `tflite_flatbuffer_to_tosa_mlir` wrapper ### Python API Test Definition -- **Model specs** live in `tests/test_python_api_models.hjson` - **Test script** is `tests/test_python_api.py` ### Run Python API Tests @@ -76,17 +75,7 @@ pytest tests/test_python_api.py -v --log-cli-level=DEBUG ### Adding a Python API Test -1. **Add a new model spec** to `tests/test_python_api_models.hjson`: - - ```hjson - { - name: "my_new_model" - class: "MyModelClass" - input_shape: [128, 128, 3] - } - ``` - -2. **(Optional)** Extend `tests/test_python_api.py` with additional tests: +To add a new text extend `tests/test_python_api.py` with additional tests: ```python def test_some_new_behavior(...): diff --git a/tests/test_python_api.hjson b/tests/test_python_api.hjson deleted file mode 100644 index 2111485..0000000 --- a/tests/test_python_api.hjson +++ /dev/null @@ -1,62 +0,0 @@ -# -# SPDX-FileCopyrightText: Copyright 2025 Arm Limited and/or its affiliates -# -# SPDX-License-Identifier: Apache-2.0 -# - -# Model manifest for Python API tests. -# Each entry must include: -# - name: a unique identifier for the model spec -# - path: the relative model path in the ML Zoo repository - -[ - { - "name": "ad_small_int8", - "path": "models/anomaly_detection/micronet_small/tflite_int8/ad_small_int8.tflite" - }, - { - "name": "ds_cnn_s_quantized_int16", - "path": "models/keyword_spotting/ds_cnn_small/model_package_tf/model_archive/TFLite/tflite_int16/ds_cnn_s_quantized_int16.tflite" - }, - { - "name": "kws_micronet_s", - "path": "models/keyword_spotting/micronet_small/tflite_int8/kws_micronet_s.tflite" - }, - { - "name": "tiny_wav2letter_pruned_int8", - "path": "models/speech_recognition/tiny_wav2letter/tflite_pruned_int8/tiny_wav2letter_pruned_int8.tflite" - }, - { - "name": "yolov3_tiny_int8_pruned_backbone_only", - "path": "models/experimental/yolov3_tiny_int8_pruned_backbone_only/yolov3_tiny_int8_pruned_backbone_only.tflite" - }, - { - "name": "cnn_s_quantized", - "path": "models/keyword_spotting/cnn_small/model_package_tf/model_archive/TFLite/tflite_int8/cnn_s_quantized.tflite" - }, - { - "name": "efficientnet_lite0_224", - "path": "models/experimental/efficientnet_lite0_224/efficientnet_lite0_224.tflite" - }, - { - "name": "mobilenet_v2_1.0_224_quantized_1_default_1", - "path": "models/image_classification/mobilenet_v2_1.0_224/tflite_uint8/mobilenet_v2_1.0_224_quantized_1_default_1.tflite" - }, - { - "name": "vww4_128_128_INT8", - "path": "models/visual_wake_words/micronet_vww4/tflite_int8/vww4_128_128_INT8.tflite" - }, - { - "name": "dnn_s_quantized", - "path": "models/keyword_spotting/dnn_small/model_package_tf/model_archive/TFLite/tflite_int8/dnn_s_quantized.tflite" - }, - { - "name": "har_int8", - "path": "models/experimental/har_cnn/har_int8.tflite" - }, - { - "name": "ssd_mobilenet_v3_int8", - "path": "models/experimental/ssd_mobilenet_v3_int8/ssd_mobilenet_v3_int8.tflite" - }, - -] diff --git a/tests/test_python_api.py b/tests/test_python_api.py index 275d524..f66618b 100644 --- a/tests/test_python_api.py +++ b/tests/test_python_api.py @@ -9,11 +9,6 @@ Test suite for the `tosa-converter-for-tflite` Python API. To run tests with logging: pytest tests/test_python_api.py -v --log-cli-level=DEBUG -To add a new model spec: - 1. Edit `tests/test_python_api.hjson`, adding an entry with: - - name (str): unique spec identifier - - path (str): relative model path in Arm ML Zoo repo - Tests cover: - File based & stream based conversion - Bytecode vs text output via `TosaConverterOutputFormat` @@ -22,15 +17,9 @@ Tests cover: """ import io import logging -import os -import subprocess -from functools import lru_cache from pathlib import Path from typing import Any -from typing import Dict -from typing import List -import hjson import pytest from tosa_converter_for_tflite import tflite_flatbuffer_to_tosa_mlir from tosa_converter_for_tflite import TosaConverterOutputFormat @@ -40,168 +29,49 @@ from tosa_converter_for_tflite import TosaConverterOutputFormat # ----------------------------------------------------------------------------- logger = logging.getLogger(__name__) -# ----------------------------------------------------------------------------- -# Constants & paths -# ----------------------------------------------------------------------------- -TEST_ROOT: Path = Path(__file__).parent -MANIFEST_FILE: Path = TEST_ROOT / "test_python_api.hjson" -# Model-Zoo repo details -MODEL_ZOO_REPO_DIR_PATH: str = os.environ.get("MODEL_ZOO_REPO_DIR_PATH") -MODEL_ZOO_REPO_URL: str = "https://github.com/Arm-Examples/ML-zoo.git" -MODEL_ZOO_BRANCH: str = "master" -MODEL_ZOO_REPO_DIR_NAME: str = "ml_zoo_repo" - - -# ----------------------------------------------------------------------------- -# Helper functions -# ----------------------------------------------------------------------------- -@lru_cache -def load_manifest() -> List[Dict[str, Any]]: - """Parse the model manifest file into a list of dictionaries.""" - text = MANIFEST_FILE.read_text(encoding="utf-8") - specs = hjson.loads(text) - logger.debug(f"Loaded {len(specs)} specs from manifest") - return specs - - -def normalise_lines(lines: List[str]) -> List[str]: - """Strip trailing whitespace, drop blank lines.""" - normalised = [] - for ln in lines: - # Strip trailing whitespace - ln = ln.rstrip() - # Skip blank lines - if ln: - normalised.append(ln) - return normalised - - -# ----------------------------------------------------------------------------- -# Parametrise specs dynamically -# ----------------------------------------------------------------------------- -def pytest_generate_tests(metafunc: pytest.Metafunc) -> None: - """Parametrise all tests that accept 'spec' with entries from the manifest.""" - if "spec" in metafunc.fixturenames: - if not MANIFEST_FILE.is_file(): - pytest.skip(f"Manifest not found at {MANIFEST_FILE}") - specs = load_manifest() - ids = [s.get("name", "") for s in specs] - metafunc.parametrize("spec", specs, ids=ids) - # ----------------------------------------------------------------------------- # Session scoped fixtures # ----------------------------------------------------------------------------- @pytest.fixture(scope="session") -def manifest() -> List[Dict[str, Any]]: - """Session scoped fixture: parsed list of model specs.""" - return load_manifest() - - -@pytest.fixture(scope="session") -def tflite_files( - tmp_path_factory: pytest.TempPathFactory, - manifest: List[Dict[str, Any]], -) -> Dict[str, Path]: - """ - Get .tflite model files from Model Zoo repo or from MODEL_ZOO_DIR env if provided. - Returns mapping spec_name to .tflite Path. - """ - # Use existing repo if provided - if MODEL_ZOO_REPO_DIR_PATH: - repo_dir = Path(MODEL_ZOO_REPO_DIR_PATH) - if not repo_dir.is_dir(): - pytest.skip( - f"MODEL_ZOO_DIR set to '{MODEL_ZOO_REPO_DIR_PATH}', but it is not a directory" - ) - logger.info(f"Using existing Model Zoo at {repo_dir}") - else: - # Clone into a fresh temp dir - repo_dir = tmp_path_factory.mktemp(MODEL_ZOO_REPO_DIR_NAME) - subprocess.run( - [ - "git", - "clone", - f"--branch={MODEL_ZOO_BRANCH}", - "--depth=1", - MODEL_ZOO_REPO_URL, - str(repo_dir), - ], - check=True, - ) - subprocess.run( - ["git", "-C", str(repo_dir), "sparse-checkout", "init", "--cone"], - check=True, - ) - dirs_to_include = sorted({Path(spec["path"]).parent for spec in manifest}) - subprocess.run( - ["git", "-C", str(repo_dir), "sparse-checkout", "set", *dirs_to_include], - check=True, - ) - - # Build index of available models - models = {p.stem: p for p in repo_dir.rglob("*.tflite")} - mapping: Dict[str, Path] = {} - missing: List[str] = [] - for spec in manifest: - name = spec["name"] - model_path = models.get(name) - if not model_path: - missing.append(name) - else: - mapping[name] = model_path - logger.debug("Selected model %s at %s", name, model_path) - if missing: - logger.warning("Skipping missing models: %s", missing) - return mapping - - -# ----------------------------------------------------------------------------- -# Module scoped fixtures -# ----------------------------------------------------------------------------- -@pytest.fixture(scope="module") -def sample_tflite_file( - manifest: List[Dict[str, Any]], tflite_files: Dict[str, Path] -) -> Path: - """ - Pick one model from the manifest (the first) and return its .tflite path. - """ - name = manifest[0]["name"] - return tflite_files[name] - +def mobilenet_tflite(tmp_path_factory) -> Path: + """Build a MobileNetV3Small TFLite model for testing.""" + # Skip if TensorFlow isn't available + tf = pytest.importorskip( + "tensorflow", reason="TensorFlow is required for TFLite conversion" + ) + # 1) Load the pretrained Keras model + keras_model = tf.keras.applications.MobileNetV3Small( + weights="imagenet", input_shape=(224, 224, 3) + ) + # 2) Convert it to TFLite + converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) + tflite_bytes = converter.convert() -# ----------------------------------------------------------------------------- -# Function scoped fixtures -# ----------------------------------------------------------------------------- -@pytest.fixture -def tflite_file(spec: Dict[str, Any], tflite_files: Dict[str, Path]) -> Path: - """Lookup the prebuilt .tflite for this spec, skip tests if missing.""" - name = spec["name"] - if name not in tflite_files: - pytest.skip(f"Skipping '{name}': model not available") - return tflite_files[name] + # 3) Write it out to a temp .tflite file + model_dir = tmp_path_factory.mktemp("tflite_model") + model_path = model_dir / "mobilenet_v3_small_1.0_224.tflite" + model_path.write_bytes(tflite_bytes) + logger.info("TFLite model written to %s", model_path) + return model_path # ----------------------------------------------------------------------------- # Tests # ----------------------------------------------------------------------------- @pytest.mark.python_api -def test_bytecode_filesystem( - tmp_path: Path, spec: Dict[str, Any], tflite_file: Path -) -> None: +def test_bytecode_filesystem(tmp_path: Path, mobilenet_tflite: Path) -> None: """Ensure that file based bytecode conversion creates a non empty .tosa.mlirbc file.""" - out_file = tmp_path / f"{spec['name']}.tosa.mlirbc" - logger.info(f"Testing filesystem bytecode output for '{spec['name']}'") - tflite_flatbuffer_to_tosa_mlir(str(tflite_file), str(out_file)) + out_file = tmp_path / f"{__name__}.tosa.mlirbc" + logger.info(f"Testing filesystem bytecode output for '{__name__}'") + tflite_flatbuffer_to_tosa_mlir(str(mobilenet_tflite), str(out_file)) assert out_file.exists(), "Output file not created" assert out_file.stat().st_size > 0, "Output file is empty" logger.debug(f"Created bytecode file {out_file} ({out_file.stat().st_size} bytes)") @pytest.mark.python_api -def test_bytecode_stream_vs_filesystem( - tmp_path: Path, sample_tflite_file: Path -) -> None: +def test_bytecode_stream_vs_filesystem(tmp_path: Path, mobilenet_tflite: Path) -> None: """Verify that in memory bytecode == file based bytecode and flush() was called.""" buf = io.BytesIO() called = False @@ -213,7 +83,7 @@ def test_bytecode_stream_vs_filesystem( buf.flush = _flush tflite_flatbuffer_to_tosa_mlir( - str(sample_tflite_file), buf, TosaConverterOutputFormat.Bytecode + str(mobilenet_tflite), buf, TosaConverterOutputFormat.Bytecode ) data_stream = buf.getvalue() assert data_stream, "In memory bytecode is empty" @@ -221,7 +91,7 @@ def test_bytecode_stream_vs_filesystem( fs_path = tmp_path / "sample_fs.tosa.mlirbc" tflite_flatbuffer_to_tosa_mlir( - str(sample_tflite_file), str(fs_path), TosaConverterOutputFormat.Bytecode + str(mobilenet_tflite), str(fs_path), TosaConverterOutputFormat.Bytecode ) data_file = fs_path.read_bytes() @@ -238,16 +108,16 @@ def test_missing_input_file(tmp_path: Path): @pytest.mark.python_api @pytest.mark.parametrize("sink", [123, None, 5.6]) -def test_invalid_sink(sample_tflite_file: Path, sink: Any) -> None: +def test_invalid_sink(mobilenet_tflite: Path, sink: Any) -> None: """Passing a non path, non stream sink should raise TypeError.""" with pytest.raises(TypeError): - tflite_flatbuffer_to_tosa_mlir(str(sample_tflite_file), sink) + tflite_flatbuffer_to_tosa_mlir(str(mobilenet_tflite), sink) @pytest.mark.python_api -def test_truncated_tflite(tmp_path: Path, sample_tflite_file: Path) -> None: +def test_truncated_tflite(tmp_path: Path, mobilenet_tflite: Path) -> None: """A truncated .tflite input should cause a RuntimeError.""" - data = sample_tflite_file.read_bytes() + data = mobilenet_tflite.read_bytes() trunc = data[: len(data) // 2] trunc_path = tmp_path / "trunc.tflite" trunc_path.write_bytes(trunc) @@ -259,18 +129,17 @@ def test_truncated_tflite(tmp_path: Path, sample_tflite_file: Path) -> None: @pytest.mark.python_api @pytest.mark.parametrize("fmt", [123, "bogus", None]) -def test_invalid_format(tmp_path: Path, sample_tflite_file: Path, fmt: Any) -> None: +def test_invalid_format(tmp_path: Path, mobilenet_tflite: Path, fmt: Any) -> None: """Passing an invalid format argument should raise TypeError or ValueError.""" with pytest.raises((TypeError, ValueError)): tflite_flatbuffer_to_tosa_mlir( - str(sample_tflite_file), str(tmp_path / "invalid_format.tosa.mlirbc"), fmt + str(mobilenet_tflite), str(tmp_path / "invalid_format.tosa.mlirbc"), fmt ) @pytest.mark.python_api @pytest.mark.pre_commit -def test_precommit_sanity(manifest: List[Dict[str, Any]]) -> None: - """Sanity check for pre-commit: manifest must not be empty and API callable.""" +def test_precommit_sanity() -> None: + """Sanity check for pre-commit: API should be callable.""" logger.info("Running pre-commit sanity checks") - assert manifest, "Manifest is empty" assert callable(tflite_flatbuffer_to_tosa_mlir), "API function missing" -- GitLab From 02ad517694e280d076dc26fbcde5e0dd82257ebb Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Fri, 18 Jul 2025 12:47:20 +0100 Subject: [PATCH 8/9] docs(tests): update install instructions to use requirements.txt Signed-off-by: Deeptanshu Sekhri --- tests/README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/README.md b/tests/README.md index a5ba9ed..f655924 100644 --- a/tests/README.md +++ b/tests/README.md @@ -10,14 +10,10 @@ This document summarises the test coverage for the tosa-converter-for-tflite pro ## Requirements to run Tests -- Python >= 3.9 -- pytest >= 7.0 -- hjson >= 3.0 - -Install dependencies with: +Install the dependencies with: ```bash -pip install pytest==8.4.1 hjson==3.1.0 tensorflow==2.19.0 +pip install -r requirements.txt ``` --- -- GitLab From 7ef53945304a8eec213c496b883584dc542c7a37 Mon Sep 17 00:00:00 2001 From: Deeptanshu Sekhri Date: Mon, 21 Jul 2025 20:37:53 +0100 Subject: [PATCH 9/9] ci: skip python_api tests in pre-commit hook - Update pytest-pre-commit entry to ignore tests/test_python_api.py - re-assign callable sanity test as python_api test marker Signed-off-by: Deeptanshu Sekhri --- .pre-commit-config.yaml | 2 +- tests/test_python_api.py | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5c9977a..a65f8bf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,7 +39,7 @@ repos: hooks: - id: pytest-pre-commit name: Run pre-commit marked tests - entry: pytest -m pre_commit + entry: pytest -m pre_commit --ignore=tests/test_python_api.py language: system pass_filenames: false always_run: true diff --git a/tests/test_python_api.py b/tests/test_python_api.py index f66618b..d0300ba 100644 --- a/tests/test_python_api.py +++ b/tests/test_python_api.py @@ -59,6 +59,13 @@ def mobilenet_tflite(tmp_path_factory) -> Path: # ----------------------------------------------------------------------------- # Tests # ----------------------------------------------------------------------------- +@pytest.mark.python_api +def test_precommit_sanity() -> None: + """Sanity check: API should be callable.""" + logger.info("Running python API callable sanity checks") + assert callable(tflite_flatbuffer_to_tosa_mlir), "API function missing" + + @pytest.mark.python_api def test_bytecode_filesystem(tmp_path: Path, mobilenet_tflite: Path) -> None: """Ensure that file based bytecode conversion creates a non empty .tosa.mlirbc file.""" @@ -135,11 +142,3 @@ def test_invalid_format(tmp_path: Path, mobilenet_tflite: Path, fmt: Any) -> Non tflite_flatbuffer_to_tosa_mlir( str(mobilenet_tflite), str(tmp_path / "invalid_format.tosa.mlirbc"), fmt ) - - -@pytest.mark.python_api -@pytest.mark.pre_commit -def test_precommit_sanity() -> None: - """Sanity check for pre-commit: API should be callable.""" - logger.info("Running pre-commit sanity checks") - assert callable(tflite_flatbuffer_to_tosa_mlir), "API function missing" -- GitLab