#
# 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_s8_default ['Conv2d', 'Linear', 'Add', 'QuantStub', 'ConvReLU2d',
                           'LinearReLU', 'ConvBn2d', 'ConvBnReLU2d']
    uint8: *ops_s8_default
    fp32: ['*'] # '*' means all op types
  
  capabilities: &default_capabilities
    int8: &cap_s8_default {
          'Conv1d': &cap_s8_default_Conv1d {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32', 'int8'],
                        'scheme': ['sym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        },
                    },
          'Linear': *cap_s8_default_Conv1d,
          'Conv2d': *cap_s8_default_Conv1d,
          'Conv3d': *cap_s8_default_Conv1d,
          'default': {
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          }
    uint8: *cap_s8_default

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