
// Copyright (c) 2020, ARM Limited.
//
//    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.

/*
  Syntax:
    DEF_ATTRIBUTE(ATTRIBUTE_NAME, NUM_ARGS_IN_ATTRIBUTES, ARG0_TYPE, ARG0_SCALAR_OR_VECTOR, ARGS0_NAME, ...)

  Description:
    ATTRIBUTE_NAME: corresponding attribute name, must match corresponding "table XXXAttribute" in tosa.fbs
    NUM_ARGS_IN_ATTRIBUTES: number of arguments in this attribute
    ARG0_TYPE: data type of arg0 in attribute
    ARG0_SCALAR_OR_VECTOR: is arg0 a scalar(S) or a vector(V)
    ARG0_NAME: name of arg0
    ...: variadic variables for more arguments, depending on NUM_ARGS_IN_ATTRIBUTES
*/

DEF_ATTRIBUTE(Pool2d, 3,
              int32_t, V, padding,
              int32_t, V, kernel,
              int32_t, V, stride)

DEF_ATTRIBUTE(Conv2d, 3,
              int32_t, V, padding,
              int32_t, V, stride,
              int32_t, V, dilation)

DEF_ATTRIBUTE(TransposeConv2d, 4,
              int32_t, V, outpad,
              int32_t, V, stride,
              int32_t, V, dilation,
              int32_t, V, output_shape)

DEF_ATTRIBUTE(ReluN, 2,
              int32_t, S, max_int,
              float, S, max_fp)

DEF_ATTRIBUTE(Axis, 1,
              int32_t, S, axis)

DEF_ATTRIBUTE(Reshape, 1,
              int32_t, V, shape)

DEF_ATTRIBUTE(Slice, 2,
              int32_t, V, begin,
              int32_t, V, size)

DEF_ATTRIBUTE(Tile, 1,
              int32_t, V, multiples)

DEF_ATTRIBUTE(Resize, 5,
              int32_t, V, output_size,
              int32_t, V, stride,
              int32_t, V, offset,
              int32_t, S, shift,
              ResizeMode, S, mode)

DEF_ATTRIBUTE(Clamp, 4,
              int32_t, S, min_int,
              int32_t, S, max_int,
              float, S, min_fp,
              float, S, max_fp)

DEF_ATTRIBUTE(Rescale, 7,
              int32_t, S, input_zp,
              int32_t, S, output_zp,
              int32_t, V, multiplier,
              int32_t, V, shift,
              bool, S, scale32,
              bool, S, double_round,
              bool, S, per_channel)

DEF_ATTRIBUTE(Mul, 1,
              int32_t, S, shift)

DEF_ATTRIBUTE(ArithmeticRightShift, 1,
              bool, S, round)

DEF_ATTRIBUTE(CondIf, 2,
              string, S, then_branch,
              string, S, else_branch)

DEF_ATTRIBUTE(WhileLoop, 2,
              string, S, cond_branch,
              string, S, body_branch)
