#
# Copyright (c) 2021 Intel Corporation
#
# 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.

---
-
  version:
    name: 'default'

  precisions: &default_precisions
    names: int8, uint8, fp32
    valid_mixed_precisions: []

  ops:
    int8: &ops_default_s8 ['Conv2d', 'Conv3d', 'BatchNorm2d', 'BatchNorm3d', 'Linear', 'ReLU', 'ConvReLU2d',
           'ConvReLU3d', 'LinearReLU', 'ConvBn2d', 'ConvBnReLU2d', 'ConvSumReLU2d', 'ConvSumReLU3d']
    uint8: *ops_default_s8
    fp32: ['*'] # '*' means all op types
  
  capabilities: &default_capabilities
    int8: &cap_default_s8 {
          'Convolution': &cap_s8_default_Conv2d {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        },
                    },
          'Linear': *cap_s8_default_Conv2d,
          'default': {
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          }
    uint8: *cap_default_s8

  patterns:
    fp32: &ref_default_fp32 [ #TODO Add more patterns here to demonstrate our concept the results external engine should return.
        'Conv2d + BN2d',
        'Conv3d + BN3d',
        'Conv2d + BN2d + ReLU',
        'Conv3d + BN3d + ReLU',
        'Conv2d + Relu',
        'Conv3d + Relu',
        'Conv2d + Sum + ReLU',
        'Conv3d + Sum + ReLU',
        'Linear + ReLU',
        ]
    int8: *ref_default_fp32
    uint8: *ref_default_fp32

