#pragma once // @generated by torchgen/gen.py from FunctionalInverses.h #include namespace at { namespace functionalization { enum class InverseReturnMode { /// Specifies that functional inverses should always return a view. AlwaysView, /// Specifies that functional inverses should always return a non-view / copy. NeverView, /// Specifies that functional inverses should return a view unless a (copying) scatter /// inverse exists, in which case that will be used instead. /// This avoids as_strided() calls that can be difficult for subclasses to handle. ViewOrScatterInverse, }; struct FunctionalInverses { static at::Tensor _fw_primal_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t level); static at::Tensor _make_dual_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, const at::Tensor & tangent, int64_t level); static at::Tensor view_as_real_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor view_as_complex_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor _conj_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor _neg_view_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor as_strided_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional storage_offset); static at::Tensor _sparse_broadcast_to_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, at::IntArrayRef size); static at::Tensor diagonal_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t offset, int64_t dim1, int64_t dim2); static at::Tensor expand_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, c10::SymIntArrayRef size, bool implicit); static at::Tensor permute_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, at::IntArrayRef dims); static at::Tensor _reshape_alias_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, c10::SymIntArrayRef size, c10::SymIntArrayRef stride); static at::Tensor select_int_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dim, c10::SymInt index); static at::Tensor detach_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor slice_Tensor_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dim, ::std::optional start, ::std::optional end, c10::SymInt step); static at::Tensor slice_inverse_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, const at::Tensor & src, int64_t dim, ::std::optional start, ::std::optional end, c10::SymInt step); static at::Tensor split_Tensor_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t mutated_view_idx, c10::SymInt split_size, int64_t dim); static at::Tensor split_with_sizes_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t mutated_view_idx, c10::SymIntArrayRef split_sizes, int64_t dim); static at::Tensor squeeze_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor squeeze_dim_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dim); static at::Tensor squeeze_dims_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, at::IntArrayRef dim); static at::Tensor t_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor transpose_int_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dim0, int64_t dim1); static at::Tensor _nested_view_from_buffer_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, const at::Tensor & nested_size, const at::Tensor & nested_strides, const at::Tensor & offsets); static at::Tensor _nested_view_from_jagged_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, const at::Tensor & offsets, const at::Tensor & dummy, const ::std::optional & lengths, int64_t ragged_idx, const ::std::optional & min_seqlen, const ::std::optional & max_seqlen); static at::Tensor _nested_get_values_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor unsqueeze_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dim); static at::Tensor _indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor _values_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor values_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor crow_indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor col_indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor ccol_indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor row_indices_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor unbind_int_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t mutated_view_idx, int64_t dim); static at::Tensor lift_fresh_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor view_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, c10::SymIntArrayRef size); static at::Tensor view_dtype_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, at::ScalarType dtype); static at::Tensor unfold_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode, int64_t dimension, int64_t size, int64_t step); static at::Tensor alias_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); static at::Tensor _test_autograd_multiple_dispatch_view_inverse(const at::Tensor & base, const at::Tensor & mutated_view, at::functionalization::InverseReturnMode inverse_return_mode); // NB: These are not generated! They're manually implemented in the template. // TODO: Change codegen to generate these. See the following link: // https://github.com/pytorch/pytorch/blob/main/torchgen/model.py#L2583-L2585 static at::Tensor chunk_inverse(const at::Tensor & base, const at::Tensor & mutated_view, InverseReturnMode inverse_return_mode, int64_t mutated_view_idx, int chunks, int dim); static at::Tensor narrow_inverse(const at::Tensor & base, const at::Tensor & mutated_view, InverseReturnMode inverse_return_mode, int dim, c10::SymInt start, c10::SymInt length); }; } }