binary_op_scalar:
  parameter_names_with_default_values:
    OPERATOR: X + Y
    INPLACE: false
  generate_variant_forall:
    INPLACE:
      - VALUE: false
        SUFFIX: ""
      - VALUE: true
        SUFFIX: inplace
  shader_variants:
    - NAME: add_scalar
      OPERATOR: X + Y
    - NAME: mul_scalar
      OPERATOR: X * Y
    - NAME: pow_tensor_scalar
      OPERATOR: pow (X, Y)
    - NAME: floor_mul_scalar
      OPERATOR: floor(X * Y)

binary_op_tensor:
  parameter_names_with_default_values:
    IS_DIV: false
    OPERATOR: X + A * Y
    INPLACE: false
  generate_variant_forall:
    INPLACE:
      - VALUE: false
        SUFFIX: ""
      - VALUE: true
        SUFFIX: inplace
  shader_variants:
    - NAME: add
      OPERATOR: X + A * Y
    - NAME: sub
      OPERATOR: X - A * Y
    - NAME: mul
      OPERATOR: X * Y
    - NAME: div
      IS_DIV: true
      OPERATOR: X / Y
    - NAME: pow
      OPERATOR: pow(X, Y)
    - NAME: floor_divide
      IS_DIV: true
      OPERATOR: floor(X / Y)

conv2d_dw_output_tile:
  parameter_names_with_default_values:
    OUTPUT_TILE_SIZE: !!python/tuple [1, 1]
  shader_variants:
    - NAME: conv2d_dw_output_tile_3x3
      OUTPUT_TILE_SIZE: !!python/tuple [3, 3]
    - NAME: conv2d_dw_output_tile_5x5
      OUTPUT_TILE_SIZE: !!python/tuple [5, 5]

conv2d_pw:
  parameter_names_with_default_values:
    OUTPUT_TILE_SIZE: !!python/tuple [1, 1]
    REGISTER_FOR: null
  shader_variants:
    - NAME: conv2d_pw_output_tile_1x1
      OUTPUT_TILE_SIZE: !!python/tuple [1, 1]
    - NAME: conv2d_pw_output_tile_2x2
      OUTPUT_TILE_SIZE: !!python/tuple [2, 2]
      REGISTER_FOR: !!python/tuple ["conv2d_pw", ["catchall"]]

unary_op:
  parameter_names_with_default_values:
    OPERATOR: exp(X)
    INPLACE: false
  generate_variant_forall:
    INPLACE:
      - VALUE: false
        SUFFIX: ""
      - VALUE: true
        SUFFIX: inplace
  shader_variants:
    - NAME: exp
      OPERATOR: exp(X)
    - NAME: sqrt
      OPERATOR: sqrt(X)
    - NAME: log
      OPERATOR: log(X)
