# This yaml file contains all the possible tags that can be defined in `tags` in `native_functions.yaml`

- tag: inplace_view
  desc: |
          This tag indicates if an operator *only* modifies the tensor metadata
- tag: view_copy
  desc: |
          This tag indicates operators that are *_copy* variants
          of view/aliasing operators. If an operator has a view_copy tag,
          then it should have the name {op}_copy, where {op} is a view operator.
- tag: dynamic_output_shape
  desc: |
          This tag indicates if an operator's output's shape depends on input Tensor
          data.
- tag: data_dependent_output
  desc: |
          Operator has a non-Tensor output whose value is dependent on the data
          of Tensor inputs.  Among other things, this implies that this operator
          cannot be run with meta tensor (since data is not available), nor
          can it be symbolically traced.
- tag: generated
  desc: |
          This tag indicates that the operator doesn't have an explicit entry in
          native_functions.yaml, and instead was generated automatically by the codegen.
- tag: nondeterministic_seeded
  desc: |
          This tag indicates if an operator is nondeterministically seeded
          (i.e., is random) such that the operator intentionally produces
          different results when run twice on the same inputs, but this randomness
          is controlled by a Generator which, if reseeded would give you the
          same result.
- tag: nondeterministic_bitwise
  desc: |
          This tag indicates if an operator doesn't guarantee bitwise equivalence
          across different runs of an operator with identical inputs.

# NOTE [Core ATen Ops]
- tag: core
  desc: |
          Core aten ops is a subset of aten ops that remains after aten-to-aten decomposition and
          functionalization pass. Core aten ops are fully functional and adhere to single static
          assignment (SSA): this implies there will be no `inplace` or `_out` variants in this opset.
          This opset is designed to serve as the functional IR to interface with compiler backends.
          In contrast to primTorch, core aten opset doesn't decompose ops into explicit
          type promotion and broadcasting ops.
          Core aten ops is also effectively the opset produced by torchdynamo.export(aten_graph=True),
          and thus can be used as an opset for export purpose.
- tag: pointwise
  desc: |
          Pointwise operators are operators where each element of the output is computed only by accessing
          the corresponding element of all the broadcasted inputs. The output shape will be the broadcasted
          shape of the inputs.
