| // Broadcasting utilities for working with TensorBase | |
| namespace at { | |
| namespace internal { | |
| TORCH_API TensorBase expand_slow_path(const TensorBase& self, IntArrayRef size); | |
| } // namespace internal | |
| inline c10::MaybeOwned<TensorBase> expand_size( | |
| const TensorBase& self, | |
| IntArrayRef size) { | |
| if (size.equals(self.sizes())) { | |
| return c10::MaybeOwned<TensorBase>::borrowed(self); | |
| } | |
| return c10::MaybeOwned<TensorBase>::owned( | |
| at::internal::expand_slow_path(self, size)); | |
| } | |
| c10::MaybeOwned<TensorBase> expand_size(TensorBase&& self, IntArrayRef size) = | |
| delete; | |
| inline c10::MaybeOwned<TensorBase> expand_inplace( | |
| const TensorBase& tensor, | |
| const TensorBase& to_expand) { | |
| return expand_size(to_expand, tensor.sizes()); | |
| } | |
| c10::MaybeOwned<TensorBase> expand_inplace( | |
| const TensorBase& tensor, | |
| TensorBase&& to_expand) = delete; | |
| } // namespace at | |