#if !defined(TORCH_STABLE_ONLY) && !defined(TORCH_TARGET_VERSION) #pragma once #include namespace at::functorch { // This is the interpreter that handles the functionalize() transform. // See NOTE: [functorch interpreter stack] for more details. struct FunctionalizeInterpreterPtr { explicit FunctionalizeInterpreterPtr(const Interpreter* base): base_(base) { TORCH_INTERNAL_ASSERT(base->key() == TransformType::Functionalize); } TransformType key() const { return base_->key(); } int64_t level() const { return base_->level(); } void processImpl(const c10::OperatorHandle& op, torch::jit::Stack* stack); void sendToNextInterpreterImpl(const c10::OperatorHandle& op, torch::jit::Stack* stack, bool grad_special_case); bool functionalizeAddBackViews() const { return std::get(base_->meta()).functionalizeAddBackViews_; } private: const Interpreter* base_; }; } // namespace at::functorch #else #error "This file should not be included when either TORCH_STABLE_ONLY or TORCH_TARGET_VERSION is defined." #endif // !defined(TORCH_STABLE_ONLY) && !defined(TORCH_TARGET_VERSION)