#if !defined(TORCH_STABLE_ONLY) && !defined(TORCH_TARGET_VERSION)
#pragma once

// @generated by torchgen/gen.py from NativeFunction.h

#include <c10/core/Scalar.h>
#include <c10/core/Storage.h>
#include <c10/core/TensorOptions.h>
#include <c10/util/Deprecated.h>
#include <optional>
#include <c10/core/QScheme.h>
#include <ATen/core/Reduction.h>
#include <ATen/core/Tensor.h>
#include <tuple>
#include <vector>
#include <ATen/ops/_scaled_mm_v2_meta.h>

namespace at {
namespace native {
struct TORCH_API structured__scaled_mm_cpu_v2_out : public at::meta::structured__scaled_mm_v2 {
void impl(const at::Tensor & self, const at::Tensor & mat2, const at::ITensorListRef & scale_a, at::IntArrayRef recipe_a, at::IntArrayRef swizzle_a, const at::ITensorListRef & scale_b, at::IntArrayRef recipe_b, at::IntArrayRef swizzle_b, at::OptionalTensorRef bias, ::std::optional<at::ScalarType> out_dtype, at::IntArrayRef contraction_dim, bool use_fast_accum, const at::Tensor & out);
};
struct TORCH_API structured__scaled_mm_cuda_v2_out : public at::meta::structured__scaled_mm_v2 {
void impl(const at::Tensor & self, const at::Tensor & mat2, const at::ITensorListRef & scale_a, at::IntArrayRef recipe_a, at::IntArrayRef swizzle_a, const at::ITensorListRef & scale_b, at::IntArrayRef recipe_b, at::IntArrayRef swizzle_b, at::OptionalTensorRef bias, ::std::optional<at::ScalarType> out_dtype, at::IntArrayRef contraction_dim, bool use_fast_accum, const at::Tensor & out);
};
} // namespace native
} // namespace at

#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)
