# Copyright (C) 2020 Arm Limited or its affiliates. All rights reserved.
#
# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Description:
# Contains SoftMax
import math

import numpy as np

from . import fp_math
from . import scaling
from .data_type import DataType
from .operation import Operation
from .tensor import create_const_tensor
from .tensor import create_reshape_tensor
from .tensor import Tensor
from .tensor import TensorPurpose


class SoftMax:
    # Turn off black formatting for the LUT tables to keep them compact
    # fmt: off

    EXP_LUT = [
        0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
        0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
        0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
        0x00000002, 0x00000002, 0x00010002, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
        0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
        0x00000003, 0x00000003, 0x00000003, 0x00010003, 0x00000004, 0x00000004, 0x00000004, 0x00000004,
        0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004,
        0x00010004, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005,
        0x00000005, 0x00000005, 0x00010005, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
        0x00000006, 0x00000006, 0x00010006, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007,
        0x00000007, 0x00000007, 0x00010007, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
        0x00010008, 0x00000009, 0x00000009, 0x00000009, 0x00000009, 0x00000009, 0x00010009, 0x0000000a,
        0x0000000a, 0x0000000a, 0x0000000a, 0x0001000a, 0x0000000b, 0x0000000b, 0x0000000b, 0x0000000b,
        0x0001000b, 0x0000000c, 0x0000000c, 0x0000000c, 0x0001000c, 0x0000000d, 0x0000000d, 0x0000000d,
        0x0001000d, 0x0000000e, 0x0000000e, 0x0000000e, 0x0001000e, 0x0000000f, 0x0000000f, 0x0001000f,
        0x00000010, 0x00000010, 0x00010010, 0x00000011, 0x00000011, 0x00010011, 0x00000012, 0x00000012,
        0x00010012, 0x00000013, 0x00000013, 0x00010013, 0x00000014, 0x00010014, 0x00000015, 0x00000015,
        0x00010015, 0x00000016, 0x00010016, 0x00000017, 0x00010017, 0x00000018, 0x00010018, 0x00000019,
        0x00010019, 0x0000001a, 0x0001001a, 0x0000001b, 0x0001001b, 0x0000001c, 0x0001001c, 0x0000001d,
        0x0001001d, 0x0000001e, 0x0001001e, 0x0001001f, 0x00000020, 0x00010020, 0x00010021, 0x00000022,
        0x00010022, 0x00010023, 0x00000024, 0x00010024, 0x00000025, 0x00010025, 0x00010026, 0x00010027,
        0x00000028, 0x00020028, 0x0000002a, 0x0001002a, 0x0001002b, 0x0001002c, 0x0000002d, 0x0001002d,
        0x0001002e, 0x0001002f, 0x00010030, 0x00010031, 0x00010032, 0x00010033, 0x00010034, 0x00010035,
        0x00010036, 0x00010037, 0x00010038, 0x00020039, 0x0001003b, 0x0000003c, 0x0002003c, 0x0001003e,
        0x0002003f, 0x00000041, 0x00020041, 0x00010043, 0x00010044, 0x00020045, 0x00020047, 0x00010049,
        0x0001004a, 0x0002004b, 0x0001004d, 0x0002004e, 0x00010050, 0x00020051, 0x00020053, 0x00010055,
        0x00020056, 0x00020058, 0x0002005a, 0x0001005c, 0x0002005d, 0x0002005f, 0x00020061, 0x00020063,
        0x00020065, 0x00020067, 0x00020069, 0x0002006b, 0x0003006d, 0x00020070, 0x00020072, 0x00020074,
        0x00030076, 0x00020079, 0x0003007b, 0x0002007e, 0x00030080, 0x00020083, 0x00020085, 0x00040087,
        0x0002008b, 0x0003008d, 0x00030090, 0x00020093, 0x00030095, 0x00030098, 0x0003009b, 0x0004009e,
        0x000300a2, 0x000300a5, 0x000300a8, 0x000300ab, 0x000400ae, 0x000300b2, 0x000400b5, 0x000400b9,
        0x000300bd, 0x000400c0, 0x000400c4, 0x000400c8, 0x000400cc, 0x000400d0, 0x000500d4, 0x000400d9,
        0x000400dd, 0x000500e1, 0x000400e6, 0x000500ea, 0x000400ef, 0x000500f3, 0x000500f8, 0x000500fd,
        0x00050102, 0x00050107, 0x0005010c, 0x00060111, 0x00050117, 0x0006011c, 0x00060122, 0x00060128,
        0x0006012e, 0x00060134, 0x0006013a, 0x00070140, 0x00060147, 0x0007014d, 0x00060154, 0x0007015a,
        0x00070161, 0x00060168, 0x0008016e, 0x00070176, 0x0008017d, 0x00080185, 0x0007018d, 0x00090194,
        0x0008019d, 0x000801a5, 0x000801ad, 0x000901b5, 0x000901be, 0x000901c7, 0x000901d0, 0x000901d9,
        0x000a01e2, 0x000901ec, 0x000a01f5, 0x000b01ff, 0x000a020a, 0x000b0214, 0x000a021f, 0x000b0229,
        0x000b0234, 0x000b023f, 0x000c024a, 0x000c0256, 0x000c0262, 0x000c026e, 0x000c027a, 0x000d0286,
        0x000d0293, 0x000d02a0, 0x000e02ad, 0x000e02bb, 0x000e02c9, 0x000e02d7, 0x000f02e5, 0x000f02f4,
        0x000f0303, 0x000f0312, 0x00100321, 0x00100331, 0x00110341, 0x00100352, 0x00120362, 0x00110374,
        0x00120385, 0x00120397, 0x001203a9, 0x001303bb, 0x001303ce, 0x001403e1, 0x001403f5, 0x00140409,
        0x0015041d, 0x00150432, 0x00160447, 0x0016045d, 0x00160473, 0x00170489, 0x001704a0, 0x001904b7,
        0x001804d0, 0x001904e8, 0x00190501, 0x001a051a, 0x001a0534, 0x001b054e, 0x001b0569, 0x001c0584,
        0x001c05a0, 0x001d05bc, 0x001e05d9, 0x001e05f7, 0x001e0615, 0x00200633, 0x00200653, 0x00200673,
        0x00210693, 0x002206b4, 0x002306d6, 0x002306f9, 0x0024071c, 0x00240740, 0x00260764, 0x0026078a,
        0x002607b0, 0x002807d6, 0x002907fe, 0x00290827, 0x002a0850, 0x002a087a, 0x002c08a4, 0x002c08d0,
        0x002e08fc, 0x002e092a, 0x002f0958, 0x00310987, 0x003109b8, 0x003209e9, 0x00330a1b, 0x00340a4e,
        0x00350a82, 0x00350ab7, 0x00380aec, 0x00380b24, 0x003a0b5c, 0x003a0b96, 0x003c0bd0, 0x003d0c0c,
        0x003e0c49, 0x003f0c87, 0x00400cc6, 0x00420d06, 0x00430d48, 0x00440d8b, 0x00460dcf, 0x00480e15,
        0x00480e5d, 0x00490ea5, 0x004c0eee, 0x004d0f3a, 0x004e0f87, 0x00500fd5, 0x00511025, 0x00531076,
        0x005610c9, 0x0056111f, 0x00581175, 0x005a11cd, 0x005c1227, 0x005e1283, 0x005e12e1, 0x0061133f,
        0x006413a0, 0x00651404, 0x00671469, 0x006914d0, 0x006c1539, 0x006c15a5, 0x00701611, 0x00721681,
        0x007416f3, 0x00761767, 0x007917dd, 0x007a1856, 0x007d18d0, 0x0080194d, 0x008319cd, 0x00841a50,
        0x00881ad4, 0x00891b5c, 0x008d1be5, 0x00911c72, 0x00911d03, 0x00961d94, 0x00981e2a, 0x009c1ec2,
        0x009e1f5e, 0x00a21ffc, 0x00a4209e, 0x00a92142, 0x00ab21eb, 0x00ae2296, 0x00b22344, 0x00b523f6,
        0x00b924ab, 0x00be2564, 0x00c02622, 0x00c526e2, 0x00c827a7, 0x00cc286f, 0x00d0293b, 0x00d52a0b,
        0x00d72ae0, 0x00dd2bb7, 0x00e12c94, 0x00e62d75, 0x00eb2e5b, 0x00ef2f46, 0x00f23035, 0x00f83127,
        0x00fe321f, 0x0101331d, 0x0108341e, 0x010c3526, 0x01123632, 0x01173744, 0x011c385b, 0x01233977,
        0x01273a9a, 0x012e3bc1, 0x01343cef, 0x013a3e23, 0x01403f5d, 0x0146409d, 0x014c41e3, 0x0154432f,
        0x01594483, 0x016145dc, 0x0168473d, 0x016f48a5, 0x01764a14, 0x017d4b8a, 0x01854d07, 0x018d4e8c,
        0x01945019, 0x019d51ad, 0x01a4534a, 0x01ad54ee, 0x01b5569b, 0x01be5850, 0x01c75a0e, 0x01d05bd5,
        0x01d85da5, 0x01e35f7d, 0x01eb6160, 0x01f6634b, 0x01ff6541, 0x02096740, 0x02146949, 0x021e6b5d,
        0x02296d7b, 0x02336fa4, 0x023f71d7, 0x024a7416, 0x02567660, 0x026278b6, 0x026d7b18, 0x027a7d85,
    ]

    ONE_OVER_ONE_PLUS_X_LUT = [
        0xffc17fff, 0xffc07fc0, 0xffc27f80, 0xffc07f42, 0xffc17f02, 0xffc17ec3, 0xffc27e84, 0xffc27e46,
        0xffc27e08, 0xffc37dca, 0xffc27d8d, 0xffc37d4f, 0xffc37d12, 0xffc37cd5, 0xffc37c98, 0xffc47c5b,
        0xffc47c1f, 0xffc47be3, 0xffc57ba7, 0xffc57b6c, 0xffc37b31, 0xffc67af4, 0xffc57aba, 0xffc67a7f,
        0xffc57a45, 0xffc67a0a, 0xffc779d0, 0xffc67997, 0xffc6795d, 0xffc77923, 0xffc778ea, 0xffc778b1,
        0xffc87878, 0xffc77840, 0xffc87807, 0xffc877cf, 0xffc97797, 0xffc87760, 0xffc97728, 0xffc976f1,
        0xffc976ba, 0xffc87683, 0xffca764b, 0xffca7615, 0xffca75df, 0xffca75a9, 0xffca7573, 0xffcb753d,
        0xffca7508, 0xffcb74d2, 0xffcb749d, 0xffca7468, 0xffcc7432, 0xffcc73fe, 0xffcb73ca, 0xffcc7395,
        0xffcd7361, 0xffcc732e, 0xffcc72fa, 0xffcd72c6, 0xffcd7293, 0xffcd7260, 0xffcc722d, 0xffce71f9,
        0xffcd71c7, 0xffce7194, 0xffce7162, 0xffce7130, 0xffcf70fe, 0xffce70cd, 0xffce709b, 0xffcf7069,
        0xffcf7038, 0xffcf7007, 0xffcf6fd6, 0xffcf6fa5, 0xffd06f74, 0xffd06f44, 0xffd06f14, 0xffd06ee4,
        0xffd06eb4, 0xffd06e84, 0xffd16e54, 0xffd16e25, 0xffd16df6, 0xffd16dc7, 0xffd06d98, 0xffd26d68,
        0xffd16d3a, 0xffd26d0b, 0xffd26cdd, 0xffd26caf, 0xffd26c81, 0xffd26c53, 0xffd36c25, 0xffd26bf8,
        0xffd36bca, 0xffd36b9d, 0xffd36b70, 0xffd26b43, 0xffd46b15, 0xffd36ae9, 0xffd46abc, 0xffd46a90,
        0xffd46a64, 0xffd46a38, 0xffd46a0c, 0xffd469e0, 0xffd469b4, 0xffd56988, 0xffd5695d, 0xffd56932,
        0xffd56907, 0xffd568dc, 0xffd568b1, 0xffd56886, 0xffd6685b, 0xffd56831, 0xffd66806, 0xffd667dc,
        0xffd667b2, 0xffd76788, 0xffd6675f, 0xffd76735, 0xffd6670c, 0xffd766e2, 0xffd666b9, 0xffd7668f,
        0xffd86666, 0xffd6663e, 0xffd86614, 0xffd765ec, 0xffd865c3, 0xffd8659b, 0xffd86573, 0xffd8654b,
        0xffd86523, 0xffd864fb, 0xffd964d3, 0xffd864ac, 0xffd96484, 0xffd8645d, 0xffd96435, 0xffd9640e,
        0xffd963e7, 0xffd963c0, 0xffd96399, 0xffda6372, 0xffd9634c, 0xffda6325, 0xffda62ff, 0xffda62d9,
        0xffda62b3, 0xffda628d, 0xffda6267, 0xffdb6241, 0xffda621c, 0xffdb61f6, 0xffda61d1, 0xffdc61ab,
        0xffd96187, 0xffdc6160, 0xffdb613c, 0xffdb6117, 0xffdb60f2, 0xffdc60cd, 0xffdc60a9, 0xffdb6085,
        0xffdc6060, 0xffdc603c, 0xffdc6018, 0xffdc5ff4, 0xffdc5fd0, 0xffdd5fac, 0xffdc5f89, 0xffdc5f65,
        0xffdd5f41, 0xffdd5f1e, 0xffdd5efb, 0xffdd5ed8, 0xffdd5eb5, 0xffdd5e92, 0xffdd5e6f, 0xffdd5e4c,
        0xffdd5e29, 0xffde5e06, 0xffde5de4, 0xffdd5dc2, 0xffde5d9f, 0xffde5d7d, 0xffde5d5b, 0xffde5d39,
        0xffdf5d17, 0xffde5cf6, 0xffde5cd4, 0xffdf5cb2, 0xffdf5c91, 0xffde5c70, 0xffdf5c4e, 0xffdf5c2d,
        0xffde5c0c, 0xffe05bea, 0xffdf5bca, 0xffdf5ba9, 0xffdf5b88, 0xffdf5b67, 0xffe05b46, 0xffe05b26,
        0xffdf5b06, 0xffe05ae5, 0xffe05ac5, 0xffe05aa5, 0xffe05a85, 0xffe05a65, 0xffe05a45, 0xffe15a25,
        0xffe05a06, 0xffe059e6, 0xffe159c6, 0xffe159a7, 0xffe05988, 0xffe15968, 0xffe15949, 0xffe1592a,
        0xffe1590b, 0xffe158ec, 0xffe258cd, 0xffe158af, 0xffe15890, 0xffe25871, 0xffe15853, 0xffe25834,
        0xffe25816, 0xffe257f8, 0xffe157da, 0xffe257bb, 0xffe3579d, 0xffe25780, 0xffe25762, 0xffe25744,
        0xffe35726, 0xffe25709, 0xffe256eb, 0xffe356cd, 0xffe356b0, 0xffe35693, 0xffe25676, 0xffe35658,
        0xffe3563b, 0xffe3561e, 0xffe35601, 0xffe355e4, 0xffe455c7, 0xffe355ab, 0xffe4558e, 0xffe35572,
        0xffe45555, 0xffe35539, 0xffe4551c, 0xffe45500, 0xffe454e4, 0xffe454c8, 0xffe454ac, 0xffe45490,
        0xffe45474, 0xffe55458, 0xffe4543d, 0xffe45421, 0xffe55405, 0xffe553ea, 0xffe453cf, 0xffe553b3,
        0xffe45398, 0xffe5537c, 0xffe55361, 0xffe55346, 0xffe5532b, 0xffe55310, 0xffe552f5, 0xffe552da,
        0xffe652bf, 0xffe552a5, 0xffe5528a, 0xffe6526f, 0xffe55255, 0xffe6523a, 0xffe65220, 0xffe55206,
        0xffe651eb, 0xffe651d1, 0xffe651b7, 0xffe6519d, 0xffe65183, 0xffe65169, 0xffe7514f, 0xffe65136,
        0xffe6511c, 0xffe75102, 0xffe650e9, 0xffe750cf, 0xffe650b6, 0xffe7509c, 0xffe75083, 0xffe6506a,
        0xffe75050, 0xffe75037, 0xffe7501e, 0xffe75005, 0xffe74fec, 0xffe74fd3, 0xffe74fba, 0xffe74fa1,
        0xffe84f88, 0xffe74f70, 0xffe84f57, 0xffe74f3f, 0xffe84f26, 0xffe74f0e, 0xffe84ef5, 0xffe84edd,
        0xffe84ec5, 0xffe84ead, 0xffe74e95, 0xffe84e7c, 0xffe84e64, 0xffe94e4c, 0xffe84e35, 0xffe84e1d,
        0xffe84e05, 0xffe94ded, 0xffe84dd6, 0xffe84dbe, 0xffe94da6, 0xffe94d8f, 0xffe84d78, 0xffe84d60,
        0xffea4d48, 0xffe84d32, 0xffe94d1a, 0xffe94d03, 0xffe84cec, 0xffe94cd4, 0xffe94cbd, 0xffea4ca6,
        0xffe94c90, 0xffe84c79, 0xffea4c61, 0xffe94c4b, 0xffe94c34, 0xffea4c1d, 0xffe94c07, 0xffea4bf0,
        0xffe94bda, 0xffea4bc3, 0xffea4bad, 0xffe94b97, 0xffea4b80, 0xffea4b6a, 0xffea4b54, 0xffea4b3e,
        0xffea4b28, 0xffea4b12, 0xffea4afc, 0xffea4ae6, 0xffea4ad0, 0xffeb4aba, 0xffea4aa5, 0xffea4a8f,
        0xffeb4a79, 0xffea4a64, 0xffea4a4e, 0xffeb4a38, 0xffeb4a23, 0xffea4a0e, 0xffeb49f8, 0xffea49e3,
        0xffeb49cd, 0xffeb49b8, 0xffeb49a3, 0xffeb498e, 0xffea4979, 0xffeb4963, 0xffeb494e, 0xffec4939,
        0xffeb4925, 0xffea4910, 0xffec48fa, 0xffeb48e6, 0xffeb48d1, 0xffec48bc, 0xffeb48a8, 0xffec4893,
        0xffeb487f, 0xffec486a, 0xffeb4856, 0xffec4841, 0xffec482d, 0xffeb4819, 0xffec4804, 0xffec47f0,
        0xffec47dc, 0xffec47c8, 0xffec47b4, 0xffec47a0, 0xffec478c, 0xffec4778, 0xffec4764, 0xffec4750,
        0xffec473c, 0xffed4728, 0xffec4715, 0xffec4701, 0xffed46ed, 0xffec46da, 0xffed46c6, 0xffec46b3,
        0xffec469f, 0xffed468b, 0xffed4678, 0xffec4665, 0xffed4651, 0xffed463e, 0xffed462b, 0xffec4618,
        0xffed4604, 0xffed45f1, 0xffed45de, 0xffed45cb, 0xffed45b8, 0xffed45a5, 0xffed4592, 0xffed457f,
        0xffee456c, 0xffed455a, 0xffed4547, 0xffed4534, 0xffee4521, 0xffed450f, 0xffed44fc, 0xffee44e9,
        0xffed44d7, 0xffee44c4, 0xffee44b2, 0xffed44a0, 0xffee448d, 0xffee447b, 0xffed4469, 0xffee4456,
        0xffee4444, 0xffee4432, 0xffee4420, 0xffee440e, 0xffee43fc, 0xffee43ea, 0xffee43d8, 0xffee43c6,
        0xffee43b4, 0xffee43a2, 0xffee4390, 0xffef437e, 0xffee436d, 0xffee435b, 0xffef4349, 0xffee4338,
        0xffee4326, 0xffef4314, 0xffee4303, 0xffef42f1, 0xffee42e0, 0xffef42ce, 0xffee42bd, 0xffef42ab,
        0xffef429a, 0xffee4289, 0xfff04277, 0xffee4267, 0xffef4255, 0xffef4244, 0xffef4233, 0xffef4222,
        0xffee4211, 0xffef41ff, 0xfff041ee, 0xffef41de, 0xffef41cd, 0xffee41bc, 0xfff041aa, 0xffef419a,
        0xffef4189, 0xffef4178, 0xfff04167, 0xffef4157, 0xffef4146, 0xfff04135, 0xffef4125, 0xfff04114,
        0xffef4104, 0xfff040f3, 0xffef40e3, 0xfff040d2, 0xfff040c2, 0xffef40b2, 0xfff040a1, 0xfff04091,
        0xfff04081, 0xffef4071, 0xfff04060, 0xfff04050, 0xfff04040, 0xfff04030, 0xfff04020, 0xfff04010
    ]
    # fmt: on

    def __init__(self, op):
        self.op = op

    def generate_exp_table(self, beta, input_scale):
        integer_bits = 5
        total_signed_bits = 31
        # Calculate scaling
        real_beta = min(
            np.double(beta) * np.double(input_scale) * (1 << (31 - integer_bits)), np.double((1 << 31) - 1.0)
        )
        scale, shift = scaling.quantise_scale(real_beta)
        shift = 31 - shift
        diff_min = -1.0 * math.floor(
            1.0 * ((1 << integer_bits) - 1) * (1 << (total_signed_bits - integer_bits)) / (1 << shift)
        )
        # Generate the exp LUT
        lut = []
        for x in range(256):
            input_diff = x - 255
            if input_diff >= diff_min:
                rescale = fp_math.saturating_rounding_mul(input_diff * (1 << shift), scale)
                lut.append(fp_math.exp_on_negative_values(rescale))
            else:
                lut.append(0)
        return lut

    def get_graph(self):
        ifm = self.op.inputs[0]
        ofm = self.op.outputs[0]

        if ifm.dtype in (DataType.uint8, DataType.int8) and ofm.dtype == ifm.dtype:
            return self.get_graph_8bit(ifm, ofm)
        elif ifm.dtype == DataType.int16 and ofm.dtype == DataType.int16:
            return self.get_graph_int16(ifm, ofm)
        else:
            self.op.run_on_npu = False
            return self.op

    def get_graph_8bit(self, ifm, ofm):
        exp_lut = self.generate_exp_table(self.op.attrs.get("beta", 1.0), ifm.quantization.scale_f32)
        ifm = create_reshape_tensor(ifm, ifm.get_full_shape())
        ofm = create_reshape_tensor(ofm, ofm.get_full_shape(), False)
        no_scale_quant = ifm.quantization.clone()
        no_scale_quant.scale_f32 = None
        no_scale_quant.zero_point = 0
        one_scale_quant = ifm.quantization.clone()
        one_scale_quant.scale_f32 = 1.0
        one_scale_quant.zero_point = 0
        ifm.quantization.zero_point = 0

        # PASS 0 - Depthwise Maxpool
        maxpool_op = self.op.clone("_maxpool0")
        maxpool_op.type = "MaxPool"
        maxpool_h = ifm.shape[1] * ifm.shape[2]
        maxpool_w = ifm.shape[3]
        maxpool_ifm_shape = [1, maxpool_h, maxpool_w, 1]
        maxpool_op.attrs["padding"] = b"VALID"
        maxpool_op.attrs["stride_w"] = 1
        maxpool_op.attrs["stride_h"] = 1
        maxpool_op.attrs["filter_width"] = maxpool_w
        maxpool_op.attrs["filter_height"] = 1
        maxpool_op.attrs["strides"] = [1, maxpool_op.attrs["stride_h"], maxpool_op.attrs["stride_w"], 1]
        maxpool_op.attrs["ksize"] = [1, maxpool_op.attrs["filter_height"], maxpool_op.attrs["filter_width"], 1]
        maxpool_op.inputs = [create_reshape_tensor(ifm, maxpool_ifm_shape)]
        ifm_max = Tensor([1, maxpool_h, 1, 1], ifm.dtype, maxpool_op.name + "_0")
        ifm_max.quantization = no_scale_quant
        maxpool_op.set_output_tensor(ifm_max)

        # PASS 1 - Sub+LUT(exp)
        sub_op = Operation("SubAct", self.op.name + "_sub1")
        sub_op.add_input_tensor(ifm)
        sub_op.add_input_tensor(ifm_max)
        sub_op.set_activation_lut(
            create_const_tensor(
                sub_op.name + "_lut", [1, 1, 1, 256], DataType.int32, exp_lut, np.int32, TensorPurpose.LUT
            )
        )
        ifm_exp = Tensor(ifm.shape, DataType.int32, sub_op.name + "_0")
        ifm_exp.quantization = one_scale_quant.clone()
        ifm_exp.quantization.zero_point = 127
        ifm_exp.quantization.quant_min = -128
        ifm_exp.quantization.quant_max = 127
        sub_op.set_output_tensor(ifm_exp)

        # PASS 2 - SHR
        shr2_op = Operation("SHR", self.op.name + "_shr2")
        shr2_op.add_input_tensor(ifm_exp)
        shr2_op.add_input_tensor(
            create_const_tensor(
                shr2_op.name + "_const", [1, 1, 1, 1], DataType.int32, [12], np.int32, quantization=no_scale_quant
            ),
        )
        rescaled_exp = Tensor(ifm.shape, ifm_exp.dtype, shr2_op.name + "_0")
        rescaled_exp.quantization = no_scale_quant
        shr2_op.set_output_tensor(rescaled_exp)

        # PASS 3 - Reduce sum
        reduce_sum_op = Operation("ReduceSum", self.op.name + "_reduce_sum3")
        reduce_sum_op.attrs["padding"] = b"VALID"
        reduce_sum_op.attrs["stride_w"] = 1
        reduce_sum_op.attrs["stride_h"] = 1
        reduce_sum_op.attrs["filter_width"] = 1
        reduce_sum_op.attrs["filter_height"] = 1
        reduce_sum_op.attrs["strides"] = [1, reduce_sum_op.attrs["stride_h"], reduce_sum_op.attrs["stride_w"], 1]
        reduce_sum_op.attrs["ksize"] = [1, reduce_sum_op.attrs["filter_height"], reduce_sum_op.attrs["filter_width"], 1]
        reduce_sum_op.add_input_tensor(rescaled_exp)

        reduce_sum_shape = [1, rescaled_exp.shape[1], rescaled_exp.shape[2], 1]
        sum_of_exp = Tensor(reduce_sum_shape, DataType.int32, reduce_sum_op.name + "_0")
        sum_of_exp.quantization = no_scale_quant
        reduce_sum_op.set_output_tensor(sum_of_exp)

        # PASS 4 - CLZ
        clz_op = Operation("CLZ", self.op.name + "_clz4")
        clz_op.add_input_tensor(sum_of_exp)
        headroom_plus_one = Tensor(reduce_sum_shape, DataType.int32, clz_op.name + "_0")
        headroom_plus_one.quantization = no_scale_quant
        clz_op.set_output_tensor(headroom_plus_one)

        # PASS 5 - Sub
        sub5_op = Operation("SubAct", self.op.name + "_sub5")
        sub5_op.add_input_tensor(
            create_const_tensor(
                "headroom_offset_const",
                [1, 1, 1, 1],
                DataType.int32,
                [12 + 31 - 8],
                np.int32,
                quantization=no_scale_quant,
            ),
        )
        sub5_op.add_input_tensor(headroom_plus_one)
        right_shift = Tensor(reduce_sum_shape, DataType.int32, sub5_op.name + "_0")
        right_shift.quantization = no_scale_quant
        sub5_op.set_output_tensor(right_shift)

        # PASS 6 - Sub
        one = create_const_tensor("one_const", [1, 1, 1, 1], DataType.int32, [1], np.int32, quantization=no_scale_quant)
        sub6_op = Operation("SubAct", self.op.name + "_sub6")
        sub6_op.add_input_tensor(headroom_plus_one)
        sub6_op.add_input_tensor(one)
        headroom = Tensor(reduce_sum_shape, DataType.int32, sub6_op.name + "_0")
        headroom.quantization = no_scale_quant
        sub6_op.set_output_tensor(headroom)

        # PASS 7 - SHL
        shl7_op = Operation("SHL", self.op.name + "_shl7")
        shl7_op.add_input_tensor(sum_of_exp)
        shl7_op.add_input_tensor(headroom)
        shifted_sum = Tensor(reduce_sum_shape, DataType.int32, shl7_op.name + "_0")
        shifted_sum.quantization = no_scale_quant
        shl7_op.set_output_tensor(shifted_sum)

        # PASS 8 - Sub
        sub8_op = Operation("SubAct", self.op.name + "_sub8")
        sub8_op.add_input_tensor(shifted_sum)
        sub8_op.add_input_tensor(
            create_const_tensor(
                "shifted_one_const", [1, 1, 1, 1], DataType.int32, [1 << 30], np.int32, quantization=no_scale_quant
            ),
        )
        shifted_sum_minus_one = Tensor(reduce_sum_shape, DataType.int32, sub8_op.name + "_0")
        shifted_sum_minus_one.quantization = no_scale_quant
        sub8_op.set_output_tensor(shifted_sum_minus_one)

        # PASS 9 - SHL
        shl9_op = Operation("SHL", self.op.name + "_shl9")
        shl9_op.add_input_tensor(shifted_sum_minus_one)
        shl9_op.add_input_tensor(one)
        shifted_sum_minus_one = Tensor(reduce_sum_shape, DataType.int32, shl9_op.name + "_0")
        shifted_sum_minus_one.quantization = no_scale_quant
        shl9_op.set_output_tensor(shifted_sum_minus_one)

        # PASS 10 - Add
        add10_op = Operation("AddAct", self.op.name + "_add10")
        add10_op.add_input_tensor(
            create_const_tensor(
                "F0_one_const", [1, 1, 1, 1], DataType.int32, [(1 << 31) - 1], np.int32, quantization=no_scale_quant
            ),
        )
        add10_op.add_input_tensor(shifted_sum_minus_one)
        add10_op.attrs["rescale"] = [1, 1]
        half_denominator = Tensor(reduce_sum_shape, DataType.int32, add10_op.name + "_0")
        half_denominator.quantization = one_scale_quant
        add10_op.set_output_tensor(half_denominator)

        # PASS 11 - Multiply
        mul11_op = Operation("MulAct", self.op.name + "_mul11")
        mul11_op.add_input_tensor(half_denominator)
        mul11_op.add_input_tensor(
            create_const_tensor(
                "neg_32_over_17_const",
                [1, 1, 1, 1],
                DataType.int32,
                [-1010580540],
                np.int32,
                quantization=one_scale_quant,
            ),
        )
        rescaled = Tensor(ifm_exp.shape, DataType.int32, mul11_op.name + "_0")
        rescaled.quantization = one_scale_quant.clone()
        rescaled.quantization.scale_f32 = 2.0
        mul11_op.set_output_tensor(rescaled)

        # PASS 12 - Add
        add12_op = Operation("AddAct", self.op.name + "_add12")
        add12_op.add_input_tensor(rescaled)
        add12_op.add_input_tensor(
            create_const_tensor(
                "48_over_17_const", [1, 1, 1, 1], DataType.int32, [1515870810], np.int32, quantization=no_scale_quant
            ),
        )
        rescale_w_offset = Tensor(reduce_sum_shape, DataType.int32, add12_op.name + "_0")
        rescale_w_offset.quantization = one_scale_quant
        add12_op.set_output_tensor(rescale_w_offset)

        nr_x = rescale_w_offset
        F2_one = create_const_tensor(
            "F2_one_const", [1, 1, 1, 1], DataType.int32, [(1 << 29)], np.int32, quantization=no_scale_quant
        )
        two = create_const_tensor("two_const", [1, 1, 1, 1], DataType.int32, [2], np.int32, quantization=no_scale_quant)
        for i in range(3):
            # PASS 13, 18, 23 - MUL
            mul_op = Operation("MulAct", self.op.name + "_mul%d" % (13 + i * 5))
            mul_op.add_input_tensor(nr_x)
            mul_op.add_input_tensor(half_denominator)
            half_denominator_times_x = Tensor(ifm_exp.shape, DataType.int32, mul_op.name + "_0")
            half_denominator_times_x.quantization = one_scale_quant.clone()
            half_denominator_times_x.quantization.scale_f32 = 2.0
            mul_op.set_output_tensor(half_denominator_times_x)
            # PASS 14, 19, 24 - SUB
            sub_op = Operation("SubAct", self.op.name + "_sub%d" % (14 + i * 5))
            sub_op.add_input_tensor(F2_one)
            sub_op.add_input_tensor(half_denominator_times_x)
            one_minus_half_denominator_times_x = Tensor(reduce_sum_shape, DataType.int32, sub_op.name + "_0")
            one_minus_half_denominator_times_x.quantization = one_scale_quant
            sub_op.set_output_tensor(one_minus_half_denominator_times_x)
            # PASS 15, 20, 25 - MUL
            mul_op = Operation("MulAct", self.op.name + "_mul%d" % (15 + i * 5))
            mul_op.add_input_tensor(nr_x)
            mul_op.add_input_tensor(one_minus_half_denominator_times_x)
            to_rescale = Tensor(ifm_exp.shape, DataType.int32, mul_op.name + "_0")
            to_rescale.quantization = one_scale_quant.clone()
            to_rescale.quantization.scale_f32 = 2.0
            mul_op.set_output_tensor(to_rescale)
            # PASS 16, 21, 26 - SHL
            shl_op = Operation("SHL", self.op.name + "_shl%d" % (16 + i * 5))
            shl_op.add_input_tensor(to_rescale)
            shl_op.add_input_tensor(two)
            to_add = Tensor(reduce_sum_shape, DataType.int32, shl_op.name + "_0")
            to_add.quantization = no_scale_quant
            shl_op.set_output_tensor(to_add)
            # PASS 17, 22, 27 - ADD
            add_op = Operation("AddAct", self.op.name + "_add%d" % (17 + i * 5))
            add_op.add_input_tensor(nr_x)
            add_op.add_input_tensor(to_add)
            nr_x = Tensor(reduce_sum_shape, DataType.int32, add_op.name + "_0")
            nr_x.quantization = one_scale_quant
            add_op.set_output_tensor(nr_x)

        # PASS 28 - SHL
        shl28_op = Operation("SHL", self.op.name + "_shl28")
        shl28_op.add_input_tensor(nr_x)
        shl28_op.add_input_tensor(one)
        scale_factor = Tensor(reduce_sum_shape, DataType.int32, shl28_op.name + "_0")
        scale_factor.quantization = one_scale_quant
        shl28_op.set_output_tensor(scale_factor)

        # PASS 29 - Multiply
        mul_op = Operation("MulAct", self.op.name + "_mul29")
        mul_op.add_input_tensor(ifm_exp)
        mul_op.add_input_tensor(scale_factor)
        scaled_exp = Tensor(ifm_exp.shape, DataType.int32, mul_op.name + "_0")
        scaled_exp.quantization = one_scale_quant.clone()
        scaled_exp.quantization.scale_f32 = 2.0
        mul_op.set_output_tensor(scaled_exp)

        # PASS 30 - SHR
        shr30_op = Operation("SHR", self.op.name + "_shr30")
        shr30_op.add_input_tensor(scaled_exp)
        shr30_op.add_input_tensor(right_shift)
        shr30_op.set_output_tensor(ofm)

        return shr30_op

    def get_graph_int16(self, ifm, ofm):
        ifm = create_reshape_tensor(ifm, ifm.get_full_shape())
        ofm = create_reshape_tensor(ofm, ofm.get_full_shape(), False)
        no_scale_quant = ifm.quantization.clone()
        no_scale_quant.scale_f32 = None

        # PASS 0 - Depthwise Maxpool
        maxpool_op = self.op.clone("_maxpool0")
        maxpool_op.type = "MaxPool"
        maxpool_h = ifm.shape[1] * ifm.shape[2]
        maxpool_w = ifm.shape[3]
        maxpool_ifm_shape = [1, maxpool_h, maxpool_w, 1]
        maxpool_op.attrs["padding"] = b"VALID"
        maxpool_op.attrs["stride_w"] = 1
        maxpool_op.attrs["stride_h"] = 1
        maxpool_op.attrs["filter_width"] = maxpool_w
        maxpool_op.attrs["filter_height"] = 1
        maxpool_op.attrs["strides"] = [1, maxpool_op.attrs["stride_h"], maxpool_op.attrs["stride_w"], 1]
        maxpool_op.attrs["ksize"] = [1, maxpool_op.attrs["filter_height"], maxpool_op.attrs["filter_width"], 1]
        maxpool_op.inputs = [create_reshape_tensor(ifm, maxpool_ifm_shape)]
        maxpool_ofm = Tensor([1, maxpool_h, 1, 1], ifm.dtype, maxpool_op.name + "_0")
        maxpool_ofm.quantization = no_scale_quant
        maxpool_op.set_output_tensor(maxpool_ofm)

        # PASS 1 - Sub
        sub1_op = Operation("SubAct", self.op.name + "_sub1")
        sub1_op.add_input_tensor(ifm)
        sub1_op.add_input_tensor(create_reshape_tensor(maxpool_ofm, [1, ifm.shape[1], ifm.shape[2], 1]))
        sub1_ofm = Tensor(ifm.shape, DataType.int32, sub1_op.name + "_0")
        sub1_ofm.quantization = ifm.quantization.clone()
        sub1_op.set_output_tensor(sub1_ofm)

        # PASS 2 - Mul
        beta = self.op.attrs.get("beta", 1.0)
        mul2_out_range = 10.0 / 65535.0
        mul2_scale, _ = scaling.elementwise_mul_scale(sub1_ofm.quantization.scale_f32, beta, mul2_out_range)
        mul2_quant = ifm.quantization.clone()
        mul2_quant.scale_f32 = beta
        mul2_op = Operation("MulAct", self.op.name + "_mul2")
        mul2_op.add_input_tensor(sub1_ofm)
        mul2_op.add_input_tensor(
            create_const_tensor(
                mul2_op.name + "_const", [1, 1, 1, 1], DataType.int32, [mul2_scale], np.int32, quantization=mul2_quant
            ),
        )
        mul2_ofm = Tensor(ifm.shape, DataType.int32, mul2_op.name + "_0")
        mul2_ofm.quantization = ofm.quantization.clone()
        mul2_ofm.quantization.scale_f32 = mul2_out_range
        mul2_op.set_output_tensor(mul2_ofm)

        # PASS 3 - Add+LUT(exp)
        add_op = Operation("AddAct", self.op.name + "_add3")
        add_op.add_input_tensor(mul2_ofm)
        add_op.add_input_tensor(
            create_const_tensor(
                add_op.name + "_const", [1, 1, 1, 1], DataType.int32, [32767], np.int32, quantization=no_scale_quant
            ),
        )
        add_op.set_activation_lut(
            create_const_tensor(
                add_op.name + "_lut", [1, 1, 1, 512], DataType.int32, self.EXP_LUT, np.int32, TensorPurpose.LUT
            )
        )
        exp_ofm = Tensor(mul2_ofm.shape, DataType.int16, add_op.name + "_0")
        exp_ofm.quantization = mul2_ofm.quantization.clone()
        add_op.set_output_tensor(exp_ofm)

        # PASS 4 - Reduce sum
        reduce_sum_op = Operation("ReduceSum", self.op.name + "_reduce_sum4")
        reduce_sum_op.attrs["padding"] = b"VALID"
        reduce_sum_op.attrs["stride_w"] = 1
        reduce_sum_op.attrs["stride_h"] = 1
        reduce_sum_op.attrs["filter_width"] = 1
        reduce_sum_op.attrs["filter_height"] = 1
        reduce_sum_op.attrs["strides"] = [1, reduce_sum_op.attrs["stride_h"], reduce_sum_op.attrs["stride_w"], 1]
        reduce_sum_op.attrs["ksize"] = [1, reduce_sum_op.attrs["filter_height"], reduce_sum_op.attrs["filter_width"], 1]
        reduce_sum_op.add_input_tensor(exp_ofm)

        reduce_sum_shape = [1, exp_ofm.shape[1], exp_ofm.shape[2], 1]
        sum_of_exp = Tensor(reduce_sum_shape, DataType.int32, reduce_sum_op.name + "_0")
        sum_of_exp.quantization = no_scale_quant
        reduce_sum_op.set_output_tensor(sum_of_exp)

        # PASS 5 - CLZ
        clz_op = Operation("CLZ", self.op.name + "_clz5")
        clz_op.add_input_tensor(sum_of_exp)
        headroom_plus_one = Tensor(reduce_sum_shape, DataType.int32, clz_op.name + "_0")
        headroom_plus_one.quantization = no_scale_quant
        clz_op.set_output_tensor(headroom_plus_one)

        # PASS 6 - Sub
        sub6_op = Operation("SubAct", self.op.name + "_sub6")
        sub6_op.add_input_tensor(
            create_const_tensor(
                sub6_op.name + "_const", [1, 1, 1, 1], DataType.int32, [31], np.int32, quantization=no_scale_quant
            ),
        )
        sub6_op.add_input_tensor(headroom_plus_one)
        reciprocal_right_shift = Tensor(reduce_sum_shape, DataType.int32, sub6_op.name + "_0")
        reciprocal_right_shift.quantization = no_scale_quant
        sub6_op.set_output_tensor(reciprocal_right_shift)

        # PASS 7 - SHL
        shl7_op = Operation("SHL", self.op.name + "_shl7")
        shl7_op.add_input_tensor(
            create_const_tensor(
                shl7_op.name + "_const", [1, 1, 1, 1], DataType.int32, [1], np.int32, quantization=no_scale_quant
            ),
        )
        shl7_op.add_input_tensor(reciprocal_right_shift)
        constant_one = Tensor(reduce_sum_shape, DataType.int32, shl7_op.name + "_0")
        constant_one.quantization = no_scale_quant
        shl7_op.set_output_tensor(constant_one)

        # PASS 8 - Sub
        sub8_op = Operation("SubAct", self.op.name + "_sub8")
        sub8_op.add_input_tensor(sum_of_exp)
        sub8_op.add_input_tensor(constant_one)
        sum_of_exps_minus_one = Tensor(reduce_sum_shape, DataType.int32, sub8_op.name + "_0")
        sum_of_exps_minus_one.quantization = no_scale_quant
        sub8_op.set_output_tensor(sum_of_exps_minus_one)

        # PASS 9 - SHL
        shl9_op = Operation("SHL", self.op.name + "_shl9")
        shl9_op.add_input_tensor(sum_of_exps_minus_one)
        shl9_op.add_input_tensor(headroom_plus_one)
        shifted_sum_minus_one = Tensor(reduce_sum_shape, DataType.int32, shl9_op.name + "_0")
        shifted_sum_minus_one.quantization = no_scale_quant
        shl9_op.set_output_tensor(shifted_sum_minus_one)

        # PASS 10 - SHR
        shr10_op = Operation("SHR", self.op.name + "_shr10")
        shr10_op.add_input_tensor(shifted_sum_minus_one)
        shr10_op.add_input_tensor(
            create_const_tensor(
                shr10_op.name + "_const", [1, 1, 1, 1], DataType.int32, [15], np.int32, quantization=no_scale_quant
            ),
        )
        shifted_sum_minus_one_16 = Tensor(reduce_sum_shape, DataType.int32, shr10_op.name + "_0")
        shifted_sum_minus_one_16.quantization = shifted_sum_minus_one.quantization.clone()
        shr10_op.set_output_tensor(shifted_sum_minus_one_16)

        # PASS 11 - Sub+LUT(one over one plus x)
        sub11_op = Operation("SubAct", self.op.name + "_sub11")
        sub11_op.add_input_tensor(shifted_sum_minus_one_16)
        sub11_op.add_input_tensor(
            create_const_tensor(
                sub11_op.name + "_const", [1, 1, 1, 1], DataType.int32, [32768], np.int32, quantization=no_scale_quant
            ),
        )
        sub11_op.set_activation_lut(
            create_const_tensor(
                sub11_op.name + "_lut",
                [1, 1, 1, 512],
                DataType.int32,
                self.ONE_OVER_ONE_PLUS_X_LUT,
                np.int32,
                TensorPurpose.LUT,
            )
        )
        reciprocal_scale = Tensor(reduce_sum_shape, DataType.int16, sub11_op.name + "_0")
        reciprocal_scale.quantization = no_scale_quant
        sub11_op.set_output_tensor(reciprocal_scale)

        # PASS 12 - Multiply
        mul_op = Operation("MulAct", self.op.name + "_mul12")
        mul_op.add_input_tensor(exp_ofm)
        mul_op.add_input_tensor(reciprocal_scale)
        mul_ofm = Tensor(exp_ofm.shape, DataType.int32, mul_op.name + "_0")
        mul_ofm.quantization = no_scale_quant
        mul_op.set_output_tensor(mul_ofm)

        # PASS 13 - SHR
        shr13_op = Operation("SHR", self.op.name + "_shr13")
        shr13_op.add_input_tensor(mul_ofm)
        shr13_op.add_input_tensor(reciprocal_right_shift)
        shr13_op.set_output_tensor(ofm)

        return shr13_op
