// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: xla/autotuning.proto
// Protobuf C++ Version: 6.31.1

#ifndef xla_2fautotuning_2eproto_2epb_2eh
#define xla_2fautotuning_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6031001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/protobuf/any.pb.h"
#include "google/protobuf/duration.pb.h"
#include "xla/tsl/protobuf/dnn.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_xla_2fautotuning_2eproto PROTOBUF_EXPORT

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct PROTOBUF_EXPORT TableStruct_xla_2fautotuning_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable descriptor_table_xla_2fautotuning_2eproto;
}  // extern "C"
namespace xla {
enum AutotuneResult_FailureKind : int;
PROTOBUF_EXPORT extern const uint32_t AutotuneResult_FailureKind_internal_data_[];
class AutotuneResult;
struct AutotuneResultDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResultDefaultTypeInternal _AutotuneResult_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_class_data_;
class AutotuneResult_BackendConfigKey;
struct AutotuneResult_BackendConfigKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_BackendConfigKeyDefaultTypeInternal _AutotuneResult_BackendConfigKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_BackendConfigKey_class_data_;
class AutotuneResult_ConvKey;
struct AutotuneResult_ConvKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_ConvKeyDefaultTypeInternal _AutotuneResult_ConvKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_ConvKey_class_data_;
class AutotuneResult_CudaConvPlanKey;
struct AutotuneResult_CudaConvPlanKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_CudaConvPlanKeyDefaultTypeInternal _AutotuneResult_CudaConvPlanKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_CudaConvPlanKey_class_data_;
class AutotuneResult_CustomKernelFusionKey;
struct AutotuneResult_CustomKernelFusionKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_CustomKernelFusionKeyDefaultTypeInternal _AutotuneResult_CustomKernelFusionKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_CustomKernelFusionKey_class_data_;
class AutotuneResult_FailureResult;
struct AutotuneResult_FailureResultDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_FailureResultDefaultTypeInternal _AutotuneResult_FailureResult_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_FailureResult_class_data_;
class AutotuneResult_GemmKey;
struct AutotuneResult_GemmKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_GemmKeyDefaultTypeInternal _AutotuneResult_GemmKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_GemmKey_class_data_;
class AutotuneResult_TritonGemmKey;
struct AutotuneResult_TritonGemmKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_TritonGemmKeyDefaultTypeInternal _AutotuneResult_TritonGemmKey_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_TritonGemmKey_class_data_;
class AutotuningLog;
struct AutotuningLogDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuningLogDefaultTypeInternal _AutotuningLog_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuningLog_class_data_;
class ComputeCapability;
struct ComputeCapabilityDefaultTypeInternal;
PROTOBUF_EXPORT extern ComputeCapabilityDefaultTypeInternal _ComputeCapability_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ComputeCapability_class_data_;
class CudnnVersion;
struct CudnnVersionDefaultTypeInternal;
PROTOBUF_EXPORT extern CudnnVersionDefaultTypeInternal _CudnnVersion_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CudnnVersion_class_data_;
class TritonGemmConfigsProto;
struct TritonGemmConfigsProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern TritonGemmConfigsProtoDefaultTypeInternal _TritonGemmConfigsProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull TritonGemmConfigsProto_class_data_;
}  // namespace xla
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::xla::AutotuneResult_FailureKind_internal_data_>
    internal::EnumTraitsImpl::value<::xla::AutotuneResult_FailureKind>;
}  // namespace protobuf
}  // namespace google

namespace xla {
enum AutotuneResult_FailureKind : int {
  AutotuneResult_FailureKind_UNKNOWN = 0,
  AutotuneResult_FailureKind_REDZONE_MODIFIED = 1,
  AutotuneResult_FailureKind_WRONG_RESULT = 2,
  AutotuneResult_FailureKind_DISQUALIFIED = 3,
  AutotuneResult_FailureKind_AutotuneResult_FailureKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  AutotuneResult_FailureKind_AutotuneResult_FailureKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t AutotuneResult_FailureKind_internal_data_[];
inline constexpr AutotuneResult_FailureKind AutotuneResult_FailureKind_FailureKind_MIN =
    static_cast<AutotuneResult_FailureKind>(0);
inline constexpr AutotuneResult_FailureKind AutotuneResult_FailureKind_FailureKind_MAX =
    static_cast<AutotuneResult_FailureKind>(3);
inline bool AutotuneResult_FailureKind_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int AutotuneResult_FailureKind_FailureKind_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL AutotuneResult_FailureKind_descriptor();
template <typename T>
const ::std::string& AutotuneResult_FailureKind_Name(T value) {
  static_assert(::std::is_same<T, AutotuneResult_FailureKind>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to FailureKind_Name().");
  return AutotuneResult_FailureKind_Name(static_cast<AutotuneResult_FailureKind>(value));
}
template <>
inline const ::std::string& AutotuneResult_FailureKind_Name(AutotuneResult_FailureKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<AutotuneResult_FailureKind_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool AutotuneResult_FailureKind_Parse(
    ::absl::string_view name, AutotuneResult_FailureKind* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<AutotuneResult_FailureKind>(AutotuneResult_FailureKind_descriptor(), name,
                                           value);
}

// ===================================================================


// -------------------------------------------------------------------

class PROTOBUF_EXPORT CudnnVersion final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.CudnnVersion) */ {
 public:
  inline CudnnVersion() : CudnnVersion(nullptr) {}
  ~CudnnVersion() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(CudnnVersion* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(CudnnVersion));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CudnnVersion(::google::protobuf::internal::ConstantInitialized);

  inline CudnnVersion(const CudnnVersion& from) : CudnnVersion(nullptr, from) {}
  inline CudnnVersion(CudnnVersion&& from) noexcept
      : CudnnVersion(nullptr, ::std::move(from)) {}
  inline CudnnVersion& operator=(const CudnnVersion& from) {
    CopyFrom(from);
    return *this;
  }
  inline CudnnVersion& operator=(CudnnVersion&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CudnnVersion& default_instance() {
    return *reinterpret_cast<const CudnnVersion*>(
        &_CudnnVersion_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(CudnnVersion& a, CudnnVersion& b) { a.Swap(&b); }
  inline void Swap(CudnnVersion* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CudnnVersion* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CudnnVersion* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CudnnVersion>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CudnnVersion& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CudnnVersion& from) { CudnnVersion::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(CudnnVersion* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.CudnnVersion"; }

 protected:
  explicit CudnnVersion(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CudnnVersion(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CudnnVersion& from);
  CudnnVersion(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CudnnVersion&& from) noexcept
      : CudnnVersion(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMajorFieldNumber = 1,
    kMinorFieldNumber = 2,
    kPatchFieldNumber = 3,
  };
  // int32 major = 1;
  void clear_major() ;
  ::int32_t major() const;
  void set_major(::int32_t value);

  private:
  ::int32_t _internal_major() const;
  void _internal_set_major(::int32_t value);

  public:
  // int32 minor = 2;
  void clear_minor() ;
  ::int32_t minor() const;
  void set_minor(::int32_t value);

  private:
  ::int32_t _internal_minor() const;
  void _internal_set_minor(::int32_t value);

  public:
  // int32 patch = 3;
  void clear_patch() ;
  ::int32_t patch() const;
  void set_patch(::int32_t value);

  private:
  ::int32_t _internal_patch() const;
  void _internal_set_patch(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.CudnnVersion)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CudnnVersion& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t major_;
    ::int32_t minor_;
    ::int32_t patch_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CudnnVersion_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ComputeCapability final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ComputeCapability) */ {
 public:
  inline ComputeCapability() : ComputeCapability(nullptr) {}
  ~ComputeCapability() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ComputeCapability* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ComputeCapability));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ComputeCapability(::google::protobuf::internal::ConstantInitialized);

  inline ComputeCapability(const ComputeCapability& from) : ComputeCapability(nullptr, from) {}
  inline ComputeCapability(ComputeCapability&& from) noexcept
      : ComputeCapability(nullptr, ::std::move(from)) {}
  inline ComputeCapability& operator=(const ComputeCapability& from) {
    CopyFrom(from);
    return *this;
  }
  inline ComputeCapability& operator=(ComputeCapability&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ComputeCapability& default_instance() {
    return *reinterpret_cast<const ComputeCapability*>(
        &_ComputeCapability_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ComputeCapability& a, ComputeCapability& b) { a.Swap(&b); }
  inline void Swap(ComputeCapability* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ComputeCapability* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ComputeCapability* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ComputeCapability>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ComputeCapability& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ComputeCapability& from) { ComputeCapability::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ComputeCapability* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ComputeCapability"; }

 protected:
  explicit ComputeCapability(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ComputeCapability(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ComputeCapability& from);
  ComputeCapability(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ComputeCapability&& from) noexcept
      : ComputeCapability(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMajorFieldNumber = 1,
    kMinorFieldNumber = 2,
  };
  // int32 major = 1;
  void clear_major() ;
  ::int32_t major() const;
  void set_major(::int32_t value);

  private:
  ::int32_t _internal_major() const;
  void _internal_set_major(::int32_t value);

  public:
  // int32 minor = 2;
  void clear_minor() ;
  ::int32_t minor() const;
  void set_minor(::int32_t value);

  private:
  ::int32_t _internal_minor() const;
  void _internal_set_minor(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ComputeCapability)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ComputeCapability& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t major_;
    ::int32_t minor_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ComputeCapability_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_TritonGemmKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.TritonGemmKey) */ {
 public:
  inline AutotuneResult_TritonGemmKey() : AutotuneResult_TritonGemmKey(nullptr) {}
  ~AutotuneResult_TritonGemmKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_TritonGemmKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_TritonGemmKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_TritonGemmKey(const AutotuneResult_TritonGemmKey& from) : AutotuneResult_TritonGemmKey(nullptr, from) {}
  inline AutotuneResult_TritonGemmKey(AutotuneResult_TritonGemmKey&& from) noexcept
      : AutotuneResult_TritonGemmKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_TritonGemmKey& operator=(const AutotuneResult_TritonGemmKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_TritonGemmKey& operator=(AutotuneResult_TritonGemmKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_TritonGemmKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_TritonGemmKey*>(
        &_AutotuneResult_TritonGemmKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(AutotuneResult_TritonGemmKey& a, AutotuneResult_TritonGemmKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_TritonGemmKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_TritonGemmKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_TritonGemmKey& from) { AutotuneResult_TritonGemmKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.TritonGemmKey"; }

 protected:
  explicit AutotuneResult_TritonGemmKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_TritonGemmKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_TritonGemmKey& from);
  AutotuneResult_TritonGemmKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_TritonGemmKey&& from) noexcept
      : AutotuneResult_TritonGemmKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBlockMFieldNumber = 1,
    kBlockNFieldNumber = 2,
    kBlockKFieldNumber = 3,
    kSplitKFieldNumber = 4,
    kNumStagesFieldNumber = 5,
    kNumWarpsFieldNumber = 6,
    kNumCtasFieldNumber = 7,
    kIsTmaAllowedFieldNumber = 8,
    kIsWarpSpecializationAllowedFieldNumber = 9,
  };
  // int64 block_m = 1;
  void clear_block_m() ;
  ::int64_t block_m() const;
  void set_block_m(::int64_t value);

  private:
  ::int64_t _internal_block_m() const;
  void _internal_set_block_m(::int64_t value);

  public:
  // int64 block_n = 2;
  void clear_block_n() ;
  ::int64_t block_n() const;
  void set_block_n(::int64_t value);

  private:
  ::int64_t _internal_block_n() const;
  void _internal_set_block_n(::int64_t value);

  public:
  // int64 block_k = 3;
  void clear_block_k() ;
  ::int64_t block_k() const;
  void set_block_k(::int64_t value);

  private:
  ::int64_t _internal_block_k() const;
  void _internal_set_block_k(::int64_t value);

  public:
  // int64 split_k = 4;
  void clear_split_k() ;
  ::int64_t split_k() const;
  void set_split_k(::int64_t value);

  private:
  ::int64_t _internal_split_k() const;
  void _internal_set_split_k(::int64_t value);

  public:
  // int64 num_stages = 5;
  void clear_num_stages() ;
  ::int64_t num_stages() const;
  void set_num_stages(::int64_t value);

  private:
  ::int64_t _internal_num_stages() const;
  void _internal_set_num_stages(::int64_t value);

  public:
  // int64 num_warps = 6;
  void clear_num_warps() ;
  ::int64_t num_warps() const;
  void set_num_warps(::int64_t value);

  private:
  ::int64_t _internal_num_warps() const;
  void _internal_set_num_warps(::int64_t value);

  public:
  // int64 num_ctas = 7;
  void clear_num_ctas() ;
  ::int64_t num_ctas() const;
  void set_num_ctas(::int64_t value);

  private:
  ::int64_t _internal_num_ctas() const;
  void _internal_set_num_ctas(::int64_t value);

  public:
  // bool is_tma_allowed = 8;
  void clear_is_tma_allowed() ;
  bool is_tma_allowed() const;
  void set_is_tma_allowed(bool value);

  private:
  bool _internal_is_tma_allowed() const;
  void _internal_set_is_tma_allowed(bool value);

  public:
  // bool is_warp_specialization_allowed = 9;
  void clear_is_warp_specialization_allowed() ;
  bool is_warp_specialization_allowed() const;
  void set_is_warp_specialization_allowed(bool value);

  private:
  bool _internal_is_warp_specialization_allowed() const;
  void _internal_set_is_warp_specialization_allowed(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.TritonGemmKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 9,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_TritonGemmKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t block_m_;
    ::int64_t block_n_;
    ::int64_t block_k_;
    ::int64_t split_k_;
    ::int64_t num_stages_;
    ::int64_t num_warps_;
    ::int64_t num_ctas_;
    bool is_tma_allowed_;
    bool is_warp_specialization_allowed_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_TritonGemmKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_GemmKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.GemmKey) */ {
 public:
  inline AutotuneResult_GemmKey() : AutotuneResult_GemmKey(nullptr) {}
  ~AutotuneResult_GemmKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_GemmKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_GemmKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_GemmKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_GemmKey(const AutotuneResult_GemmKey& from) : AutotuneResult_GemmKey(nullptr, from) {}
  inline AutotuneResult_GemmKey(AutotuneResult_GemmKey&& from) noexcept
      : AutotuneResult_GemmKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_GemmKey& operator=(const AutotuneResult_GemmKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_GemmKey& operator=(AutotuneResult_GemmKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_GemmKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_GemmKey*>(
        &_AutotuneResult_GemmKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(AutotuneResult_GemmKey& a, AutotuneResult_GemmKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_GemmKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_GemmKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_GemmKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_GemmKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_GemmKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_GemmKey& from) { AutotuneResult_GemmKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_GemmKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.GemmKey"; }

 protected:
  explicit AutotuneResult_GemmKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_GemmKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_GemmKey& from);
  AutotuneResult_GemmKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_GemmKey&& from) noexcept
      : AutotuneResult_GemmKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAlgorithmFieldNumber = 1,
    kAutotuneWorkspaceSizeFieldNumber = 2,
  };
  // int64 algorithm = 1;
  void clear_algorithm() ;
  ::int64_t algorithm() const;
  void set_algorithm(::int64_t value);

  private:
  ::int64_t _internal_algorithm() const;
  void _internal_set_algorithm(::int64_t value);

  public:
  // int64 autotune_workspace_size = 2;
  void clear_autotune_workspace_size() ;
  ::int64_t autotune_workspace_size() const;
  void set_autotune_workspace_size(::int64_t value);

  private:
  ::int64_t _internal_autotune_workspace_size() const;
  void _internal_set_autotune_workspace_size(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.GemmKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_GemmKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t algorithm_;
    ::int64_t autotune_workspace_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_GemmKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_CustomKernelFusionKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.CustomKernelFusionKey) */ {
 public:
  inline AutotuneResult_CustomKernelFusionKey() : AutotuneResult_CustomKernelFusionKey(nullptr) {}
  ~AutotuneResult_CustomKernelFusionKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_CustomKernelFusionKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_CustomKernelFusionKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_CustomKernelFusionKey(const AutotuneResult_CustomKernelFusionKey& from) : AutotuneResult_CustomKernelFusionKey(nullptr, from) {}
  inline AutotuneResult_CustomKernelFusionKey(AutotuneResult_CustomKernelFusionKey&& from) noexcept
      : AutotuneResult_CustomKernelFusionKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_CustomKernelFusionKey& operator=(const AutotuneResult_CustomKernelFusionKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_CustomKernelFusionKey& operator=(AutotuneResult_CustomKernelFusionKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_CustomKernelFusionKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_CustomKernelFusionKey*>(
        &_AutotuneResult_CustomKernelFusionKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(AutotuneResult_CustomKernelFusionKey& a, AutotuneResult_CustomKernelFusionKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_CustomKernelFusionKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_CustomKernelFusionKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_CustomKernelFusionKey& from) { AutotuneResult_CustomKernelFusionKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.CustomKernelFusionKey"; }

 protected:
  explicit AutotuneResult_CustomKernelFusionKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_CustomKernelFusionKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_CustomKernelFusionKey& from);
  AutotuneResult_CustomKernelFusionKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_CustomKernelFusionKey&& from) noexcept
      : AutotuneResult_CustomKernelFusionKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kKernelIndexFieldNumber = 1,
  };
  // int64 kernel_index = 1;
  void clear_kernel_index() ;
  ::int64_t kernel_index() const;
  void set_kernel_index(::int64_t value);

  private:
  ::int64_t _internal_kernel_index() const;
  void _internal_set_kernel_index(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.CustomKernelFusionKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_CustomKernelFusionKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t kernel_index_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_CustomKernelFusionKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_CudaConvPlanKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.CudaConvPlanKey) */ {
 public:
  inline AutotuneResult_CudaConvPlanKey() : AutotuneResult_CudaConvPlanKey(nullptr) {}
  ~AutotuneResult_CudaConvPlanKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_CudaConvPlanKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_CudaConvPlanKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_CudaConvPlanKey(const AutotuneResult_CudaConvPlanKey& from) : AutotuneResult_CudaConvPlanKey(nullptr, from) {}
  inline AutotuneResult_CudaConvPlanKey(AutotuneResult_CudaConvPlanKey&& from) noexcept
      : AutotuneResult_CudaConvPlanKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_CudaConvPlanKey& operator=(const AutotuneResult_CudaConvPlanKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_CudaConvPlanKey& operator=(AutotuneResult_CudaConvPlanKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_CudaConvPlanKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_CudaConvPlanKey*>(
        &_AutotuneResult_CudaConvPlanKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(AutotuneResult_CudaConvPlanKey& a, AutotuneResult_CudaConvPlanKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_CudaConvPlanKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_CudaConvPlanKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_CudaConvPlanKey& from) { AutotuneResult_CudaConvPlanKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.CudaConvPlanKey"; }

 protected:
  explicit AutotuneResult_CudaConvPlanKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_CudaConvPlanKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_CudaConvPlanKey& from);
  AutotuneResult_CudaConvPlanKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_CudaConvPlanKey&& from) noexcept
      : AutotuneResult_CudaConvPlanKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kExecPlanIdFieldNumber = 1,
  };
  // string exec_plan_id = 1;
  void clear_exec_plan_id() ;
  const ::std::string& exec_plan_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_exec_plan_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_exec_plan_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_exec_plan_id();
  void set_allocated_exec_plan_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_exec_plan_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_exec_plan_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_exec_plan_id();

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.CudaConvPlanKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 55,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_CudaConvPlanKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr exec_plan_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_CudaConvPlanKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_ConvKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.ConvKey) */ {
 public:
  inline AutotuneResult_ConvKey() : AutotuneResult_ConvKey(nullptr) {}
  ~AutotuneResult_ConvKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_ConvKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_ConvKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_ConvKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_ConvKey(const AutotuneResult_ConvKey& from) : AutotuneResult_ConvKey(nullptr, from) {}
  inline AutotuneResult_ConvKey(AutotuneResult_ConvKey&& from) noexcept
      : AutotuneResult_ConvKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_ConvKey& operator=(const AutotuneResult_ConvKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_ConvKey& operator=(AutotuneResult_ConvKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_ConvKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_ConvKey*>(
        &_AutotuneResult_ConvKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(AutotuneResult_ConvKey& a, AutotuneResult_ConvKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_ConvKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_ConvKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_ConvKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_ConvKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_ConvKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_ConvKey& from) { AutotuneResult_ConvKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_ConvKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.ConvKey"; }

 protected:
  explicit AutotuneResult_ConvKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_ConvKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_ConvKey& from);
  AutotuneResult_ConvKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_ConvKey&& from) noexcept
      : AutotuneResult_ConvKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAlgorithmFieldNumber = 1,
    kTensorOpsEnabledFieldNumber = 2,
  };
  // int64 algorithm = 1;
  void clear_algorithm() ;
  ::int64_t algorithm() const;
  void set_algorithm(::int64_t value);

  private:
  ::int64_t _internal_algorithm() const;
  void _internal_set_algorithm(::int64_t value);

  public:
  // bool tensor_ops_enabled = 2;
  void clear_tensor_ops_enabled() ;
  bool tensor_ops_enabled() const;
  void set_tensor_ops_enabled(bool value);

  private:
  bool _internal_tensor_ops_enabled() const;
  void _internal_set_tensor_ops_enabled(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.ConvKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_ConvKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t algorithm_;
    bool tensor_ops_enabled_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_ConvKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT TritonGemmConfigsProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.TritonGemmConfigsProto) */ {
 public:
  inline TritonGemmConfigsProto() : TritonGemmConfigsProto(nullptr) {}
  ~TritonGemmConfigsProto() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TritonGemmConfigsProto* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TritonGemmConfigsProto));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR TritonGemmConfigsProto(::google::protobuf::internal::ConstantInitialized);

  inline TritonGemmConfigsProto(const TritonGemmConfigsProto& from) : TritonGemmConfigsProto(nullptr, from) {}
  inline TritonGemmConfigsProto(TritonGemmConfigsProto&& from) noexcept
      : TritonGemmConfigsProto(nullptr, ::std::move(from)) {}
  inline TritonGemmConfigsProto& operator=(const TritonGemmConfigsProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TritonGemmConfigsProto& operator=(TritonGemmConfigsProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TritonGemmConfigsProto& default_instance() {
    return *reinterpret_cast<const TritonGemmConfigsProto*>(
        &_TritonGemmConfigsProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(TritonGemmConfigsProto& a, TritonGemmConfigsProto& b) { a.Swap(&b); }
  inline void Swap(TritonGemmConfigsProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TritonGemmConfigsProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TritonGemmConfigsProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TritonGemmConfigsProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TritonGemmConfigsProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TritonGemmConfigsProto& from) { TritonGemmConfigsProto::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TritonGemmConfigsProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.TritonGemmConfigsProto"; }

 protected:
  explicit TritonGemmConfigsProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TritonGemmConfigsProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TritonGemmConfigsProto& from);
  TritonGemmConfigsProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TritonGemmConfigsProto&& from) noexcept
      : TritonGemmConfigsProto(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kConfigFieldNumber = 1,
  };
  // repeated .xla.AutotuneResult.TritonGemmKey config = 1;
  int config_size() const;
  private:
  int _internal_config_size() const;

  public:
  void clear_config() ;
  ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL mutable_config(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>* PROTOBUF_NONNULL mutable_config();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>& _internal_config() const;
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>* PROTOBUF_NONNULL _internal_mutable_config();
  public:
  const ::xla::AutotuneResult_TritonGemmKey& config(int index) const;
  ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL add_config();
  const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>& config() const;
  // @@protoc_insertion_point(class_scope:xla.TritonGemmConfigsProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TritonGemmConfigsProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::AutotuneResult_TritonGemmKey > config_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull TritonGemmConfigsProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_BackendConfigKey final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.BackendConfigKey) */ {
 public:
  inline AutotuneResult_BackendConfigKey() : AutotuneResult_BackendConfigKey(nullptr) {}
  ~AutotuneResult_BackendConfigKey() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_BackendConfigKey));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_BackendConfigKey(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_BackendConfigKey(const AutotuneResult_BackendConfigKey& from) : AutotuneResult_BackendConfigKey(nullptr, from) {}
  inline AutotuneResult_BackendConfigKey(AutotuneResult_BackendConfigKey&& from) noexcept
      : AutotuneResult_BackendConfigKey(nullptr, ::std::move(from)) {}
  inline AutotuneResult_BackendConfigKey& operator=(const AutotuneResult_BackendConfigKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_BackendConfigKey& operator=(AutotuneResult_BackendConfigKey&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_BackendConfigKey& default_instance() {
    return *reinterpret_cast<const AutotuneResult_BackendConfigKey*>(
        &_AutotuneResult_BackendConfigKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(AutotuneResult_BackendConfigKey& a, AutotuneResult_BackendConfigKey& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_BackendConfigKey>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_BackendConfigKey& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_BackendConfigKey& from) { AutotuneResult_BackendConfigKey::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.BackendConfigKey"; }

 protected:
  explicit AutotuneResult_BackendConfigKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_BackendConfigKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_BackendConfigKey& from);
  AutotuneResult_BackendConfigKey(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_BackendConfigKey&& from) noexcept
      : AutotuneResult_BackendConfigKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kConfigFieldNumber = 2,
  };
  // string name = 1;
  void clear_name() ;
  const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // .google.protobuf.Any config = 2;
  bool has_config() const;
  void clear_config() ;
  const ::google::protobuf::Any& config() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_config();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_config();
  void set_allocated_config(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_config(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_config();

  private:
  const ::google::protobuf::Any& _internal_config() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_config();

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.BackendConfigKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 48,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_BackendConfigKey& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE config_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_BackendConfigKey_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult_FailureResult final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult.FailureResult) */ {
 public:
  inline AutotuneResult_FailureResult() : AutotuneResult_FailureResult(nullptr) {}
  ~AutotuneResult_FailureResult() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult_FailureResult* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult_FailureResult));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult_FailureResult(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult_FailureResult(const AutotuneResult_FailureResult& from) : AutotuneResult_FailureResult(nullptr, from) {}
  inline AutotuneResult_FailureResult(AutotuneResult_FailureResult&& from) noexcept
      : AutotuneResult_FailureResult(nullptr, ::std::move(from)) {}
  inline AutotuneResult_FailureResult& operator=(const AutotuneResult_FailureResult& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult_FailureResult& operator=(AutotuneResult_FailureResult&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_FailureResult& default_instance() {
    return *reinterpret_cast<const AutotuneResult_FailureResult*>(
        &_AutotuneResult_FailureResult_default_instance_);
  }
  enum KeyCase {
    kReferenceConv = 11,
    kReferenceGemm = 12,
    kReferenceCudaConvPlan = 14,
    kReferenceAlgorithm = 15,
    KEY_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(AutotuneResult_FailureResult& a, AutotuneResult_FailureResult& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult_FailureResult* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_FailureResult* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult_FailureResult* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult_FailureResult>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult_FailureResult& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult_FailureResult& from) { AutotuneResult_FailureResult::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult_FailureResult* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.FailureResult"; }

 protected:
  explicit AutotuneResult_FailureResult(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult_FailureResult(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult_FailureResult& from);
  AutotuneResult_FailureResult(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult_FailureResult&& from) noexcept
      : AutotuneResult_FailureResult(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMsgFieldNumber = 2,
    kBufferAddressFieldNumber = 13,
    kKindFieldNumber = 1,
    kReferenceConvFieldNumber = 11,
    kReferenceGemmFieldNumber = 12,
    kReferenceCudaConvPlanFieldNumber = 14,
    kReferenceAlgorithmFieldNumber = 15,
  };
  // string msg = 2;
  void clear_msg() ;
  const ::std::string& msg() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_msg(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_msg();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_msg();
  void set_allocated_msg(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_msg() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_msg(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_msg();

  public:
  // int64 buffer_address = 13;
  void clear_buffer_address() ;
  ::int64_t buffer_address() const;
  void set_buffer_address(::int64_t value);

  private:
  ::int64_t _internal_buffer_address() const;
  void _internal_set_buffer_address(::int64_t value);

  public:
  // .xla.AutotuneResult.FailureKind kind = 1;
  void clear_kind() ;
  ::xla::AutotuneResult_FailureKind kind() const;
  void set_kind(::xla::AutotuneResult_FailureKind value);

  private:
  ::xla::AutotuneResult_FailureKind _internal_kind() const;
  void _internal_set_kind(::xla::AutotuneResult_FailureKind value);

  public:
  // .xla.AutotuneResult.ConvKey reference_conv = 11;
  bool has_reference_conv() const;
  private:
  bool _internal_has_reference_conv() const;

  public:
  void clear_reference_conv() ;
  const ::xla::AutotuneResult_ConvKey& reference_conv() const;
  [[nodiscard]] ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE release_reference_conv();
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL mutable_reference_conv();
  void set_allocated_reference_conv(::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_reference_conv(::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE unsafe_arena_release_reference_conv();

  private:
  const ::xla::AutotuneResult_ConvKey& _internal_reference_conv() const;
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL _internal_mutable_reference_conv();

  public:
  // .xla.AutotuneResult.GemmKey reference_gemm = 12;
  bool has_reference_gemm() const;
  private:
  bool _internal_has_reference_gemm() const;

  public:
  void clear_reference_gemm() ;
  const ::xla::AutotuneResult_GemmKey& reference_gemm() const;
  [[nodiscard]] ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE release_reference_gemm();
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL mutable_reference_gemm();
  void set_allocated_reference_gemm(::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_reference_gemm(::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE unsafe_arena_release_reference_gemm();

  private:
  const ::xla::AutotuneResult_GemmKey& _internal_reference_gemm() const;
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL _internal_mutable_reference_gemm();

  public:
  // .xla.AutotuneResult.CudaConvPlanKey reference_cuda_conv_plan = 14;
  bool has_reference_cuda_conv_plan() const;
  private:
  bool _internal_has_reference_cuda_conv_plan() const;

  public:
  void clear_reference_cuda_conv_plan() ;
  const ::xla::AutotuneResult_CudaConvPlanKey& reference_cuda_conv_plan() const;
  [[nodiscard]] ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE release_reference_cuda_conv_plan();
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL mutable_reference_cuda_conv_plan();
  void set_allocated_reference_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_reference_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE unsafe_arena_release_reference_cuda_conv_plan();

  private:
  const ::xla::AutotuneResult_CudaConvPlanKey& _internal_reference_cuda_conv_plan() const;
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL _internal_mutable_reference_cuda_conv_plan();

  public:
  // .stream_executor.dnn.AlgorithmProto reference_algorithm = 15;
  bool has_reference_algorithm() const;
  private:
  bool _internal_has_reference_algorithm() const;

  public:
  void clear_reference_algorithm() ;
  const ::stream_executor::dnn::AlgorithmProto& reference_algorithm() const;
  [[nodiscard]] ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE release_reference_algorithm();
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL mutable_reference_algorithm();
  void set_allocated_reference_algorithm(::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_reference_algorithm(::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value);
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE unsafe_arena_release_reference_algorithm();

  private:
  const ::stream_executor::dnn::AlgorithmProto& _internal_reference_algorithm() const;
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL _internal_mutable_reference_algorithm();

  public:
  void clear_key();
  KeyCase key_case() const;
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.FailureResult)
 private:
  class _Internal;
  void set_has_reference_conv();
  void set_has_reference_gemm();
  void set_has_reference_cuda_conv_plan();
  void set_has_reference_algorithm();
  inline bool has_key() const;
  inline void clear_has_key();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 7,
                                   4, 44,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult_FailureResult& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr msg_;
    ::int64_t buffer_address_;
    int kind_;
    union KeyUnion {
      constexpr KeyUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE reference_conv_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE reference_gemm_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE reference_cuda_conv_plan_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE reference_algorithm_;
    } key_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_FailureResult_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult) */ {
 public:
  inline AutotuneResult() : AutotuneResult(nullptr) {}
  ~AutotuneResult() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuneResult* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuneResult));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuneResult(::google::protobuf::internal::ConstantInitialized);

  inline AutotuneResult(const AutotuneResult& from) : AutotuneResult(nullptr, from) {}
  inline AutotuneResult(AutotuneResult&& from) noexcept
      : AutotuneResult(nullptr, ::std::move(from)) {}
  inline AutotuneResult& operator=(const AutotuneResult& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuneResult& operator=(AutotuneResult&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult& default_instance() {
    return *reinterpret_cast<const AutotuneResult*>(
        &_AutotuneResult_default_instance_);
  }
  enum KeyCase {
    kConv = 5,
    kGemm = 6,
    kTriton = 17,
    kCudaConvPlan = 15,
    kCustomKernelFusion = 18,
    kAlgorithm = 16,
    kOther = 19,
    KEY_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(AutotuneResult& a, AutotuneResult& b) { a.Swap(&b); }
  inline void Swap(AutotuneResult* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuneResult* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuneResult>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuneResult& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuneResult& from) { AutotuneResult::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuneResult* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult"; }

 protected:
  explicit AutotuneResult(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuneResult(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuneResult& from);
  AutotuneResult(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuneResult&& from) noexcept
      : AutotuneResult(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using FailureResult = AutotuneResult_FailureResult;
  using ConvKey = AutotuneResult_ConvKey;
  using GemmKey = AutotuneResult_GemmKey;
  using CudaConvPlanKey = AutotuneResult_CudaConvPlanKey;
  using TritonGemmKey = AutotuneResult_TritonGemmKey;
  using CustomKernelFusionKey = AutotuneResult_CustomKernelFusionKey;
  using BackendConfigKey = AutotuneResult_BackendConfigKey;
  using FailureKind = AutotuneResult_FailureKind;
  static constexpr FailureKind UNKNOWN = AutotuneResult_FailureKind_UNKNOWN;
  static constexpr FailureKind REDZONE_MODIFIED = AutotuneResult_FailureKind_REDZONE_MODIFIED;
  static constexpr FailureKind WRONG_RESULT = AutotuneResult_FailureKind_WRONG_RESULT;
  static constexpr FailureKind DISQUALIFIED = AutotuneResult_FailureKind_DISQUALIFIED;
  static inline bool FailureKind_IsValid(int value) {
    return AutotuneResult_FailureKind_IsValid(value);
  }
  static constexpr FailureKind FailureKind_MIN = AutotuneResult_FailureKind_FailureKind_MIN;
  static constexpr FailureKind FailureKind_MAX = AutotuneResult_FailureKind_FailureKind_MAX;
  static constexpr int FailureKind_ARRAYSIZE = AutotuneResult_FailureKind_FailureKind_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL FailureKind_descriptor() {
    return AutotuneResult_FailureKind_descriptor();
  }
  template <typename T>
  static inline const ::std::string& FailureKind_Name(T value) {
    return AutotuneResult_FailureKind_Name(value);
  }
  static inline bool FailureKind_Parse(
      ::absl::string_view name, FailureKind* PROTOBUF_NONNULL value) {
    return AutotuneResult_FailureKind_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kFailureFieldNumber = 7,
    kRunTimeFieldNumber = 9,
    kScratchBytesFieldNumber = 8,
    kConvFieldNumber = 5,
    kGemmFieldNumber = 6,
    kTritonFieldNumber = 17,
    kCudaConvPlanFieldNumber = 15,
    kCustomKernelFusionFieldNumber = 18,
    kAlgorithmFieldNumber = 16,
    kOtherFieldNumber = 19,
  };
  // .xla.AutotuneResult.FailureResult failure = 7;
  bool has_failure() const;
  void clear_failure() ;
  const ::xla::AutotuneResult_FailureResult& failure() const;
  [[nodiscard]] ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE release_failure();
  ::xla::AutotuneResult_FailureResult* PROTOBUF_NONNULL mutable_failure();
  void set_allocated_failure(::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_failure(::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE unsafe_arena_release_failure();

  private:
  const ::xla::AutotuneResult_FailureResult& _internal_failure() const;
  ::xla::AutotuneResult_FailureResult* PROTOBUF_NONNULL _internal_mutable_failure();

  public:
  // .google.protobuf.Duration run_time = 9;
  bool has_run_time() const;
  void clear_run_time() ;
  const ::google::protobuf::Duration& run_time() const;
  [[nodiscard]] ::google::protobuf::Duration* PROTOBUF_NULLABLE release_run_time();
  ::google::protobuf::Duration* PROTOBUF_NONNULL mutable_run_time();
  void set_allocated_run_time(::google::protobuf::Duration* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_run_time(::google::protobuf::Duration* PROTOBUF_NULLABLE value);
  ::google::protobuf::Duration* PROTOBUF_NULLABLE unsafe_arena_release_run_time();

  private:
  const ::google::protobuf::Duration& _internal_run_time() const;
  ::google::protobuf::Duration* PROTOBUF_NONNULL _internal_mutable_run_time();

  public:
  // int64 scratch_bytes = 8;
  void clear_scratch_bytes() ;
  ::int64_t scratch_bytes() const;
  void set_scratch_bytes(::int64_t value);

  private:
  ::int64_t _internal_scratch_bytes() const;
  void _internal_set_scratch_bytes(::int64_t value);

  public:
  // .xla.AutotuneResult.ConvKey conv = 5;
  bool has_conv() const;
  private:
  bool _internal_has_conv() const;

  public:
  void clear_conv() ;
  const ::xla::AutotuneResult_ConvKey& conv() const;
  [[nodiscard]] ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE release_conv();
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL mutable_conv();
  void set_allocated_conv(::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_conv(::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE unsafe_arena_release_conv();

  private:
  const ::xla::AutotuneResult_ConvKey& _internal_conv() const;
  ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL _internal_mutable_conv();

  public:
  // .xla.AutotuneResult.GemmKey gemm = 6;
  bool has_gemm() const;
  private:
  bool _internal_has_gemm() const;

  public:
  void clear_gemm() ;
  const ::xla::AutotuneResult_GemmKey& gemm() const;
  [[nodiscard]] ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE release_gemm();
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL mutable_gemm();
  void set_allocated_gemm(::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_gemm(::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE unsafe_arena_release_gemm();

  private:
  const ::xla::AutotuneResult_GemmKey& _internal_gemm() const;
  ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL _internal_mutable_gemm();

  public:
  // .xla.AutotuneResult.TritonGemmKey triton = 17;
  bool has_triton() const;
  private:
  bool _internal_has_triton() const;

  public:
  void clear_triton() ;
  const ::xla::AutotuneResult_TritonGemmKey& triton() const;
  [[nodiscard]] ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE release_triton();
  ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL mutable_triton();
  void set_allocated_triton(::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_triton(::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE unsafe_arena_release_triton();

  private:
  const ::xla::AutotuneResult_TritonGemmKey& _internal_triton() const;
  ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL _internal_mutable_triton();

  public:
  // .xla.AutotuneResult.CudaConvPlanKey cuda_conv_plan = 15;
  bool has_cuda_conv_plan() const;
  private:
  bool _internal_has_cuda_conv_plan() const;

  public:
  void clear_cuda_conv_plan() ;
  const ::xla::AutotuneResult_CudaConvPlanKey& cuda_conv_plan() const;
  [[nodiscard]] ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE release_cuda_conv_plan();
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL mutable_cuda_conv_plan();
  void set_allocated_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE unsafe_arena_release_cuda_conv_plan();

  private:
  const ::xla::AutotuneResult_CudaConvPlanKey& _internal_cuda_conv_plan() const;
  ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL _internal_mutable_cuda_conv_plan();

  public:
  // .xla.AutotuneResult.CustomKernelFusionKey custom_kernel_fusion = 18;
  bool has_custom_kernel_fusion() const;
  private:
  bool _internal_has_custom_kernel_fusion() const;

  public:
  void clear_custom_kernel_fusion() ;
  const ::xla::AutotuneResult_CustomKernelFusionKey& custom_kernel_fusion() const;
  [[nodiscard]] ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE release_custom_kernel_fusion();
  ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL mutable_custom_kernel_fusion();
  void set_allocated_custom_kernel_fusion(::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_kernel_fusion(::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE unsafe_arena_release_custom_kernel_fusion();

  private:
  const ::xla::AutotuneResult_CustomKernelFusionKey& _internal_custom_kernel_fusion() const;
  ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL _internal_mutable_custom_kernel_fusion();

  public:
  // .stream_executor.dnn.AlgorithmProto algorithm = 16;
  bool has_algorithm() const;
  private:
  bool _internal_has_algorithm() const;

  public:
  void clear_algorithm() ;
  const ::stream_executor::dnn::AlgorithmProto& algorithm() const;
  [[nodiscard]] ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE release_algorithm();
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL mutable_algorithm();
  void set_allocated_algorithm(::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_algorithm(::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value);
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE unsafe_arena_release_algorithm();

  private:
  const ::stream_executor::dnn::AlgorithmProto& _internal_algorithm() const;
  ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL _internal_mutable_algorithm();

  public:
  // .xla.AutotuneResult.BackendConfigKey other = 19;
  bool has_other() const;
  private:
  bool _internal_has_other() const;

  public:
  void clear_other() ;
  const ::xla::AutotuneResult_BackendConfigKey& other() const;
  [[nodiscard]] ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE release_other();
  ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL mutable_other();
  void set_allocated_other(::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_other(::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE value);
  ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE unsafe_arena_release_other();

  private:
  const ::xla::AutotuneResult_BackendConfigKey& _internal_other() const;
  ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL _internal_mutable_other();

  public:
  void clear_key();
  KeyCase key_case() const;
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult)
 private:
  class _Internal;
  void set_has_conv();
  void set_has_gemm();
  void set_has_triton();
  void set_has_cuda_conv_plan();
  void set_has_custom_kernel_fusion();
  void set_has_algorithm();
  void set_has_other();
  inline bool has_key() const;
  inline void clear_has_key();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 10,
                                   9, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuneResult& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE failure_;
    ::google::protobuf::Duration* PROTOBUF_NULLABLE run_time_;
    ::int64_t scratch_bytes_;
    union KeyUnion {
      constexpr KeyUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE conv_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE gemm_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE triton_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE cuda_conv_plan_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE custom_kernel_fusion_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE algorithm_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE other_;
    } key_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuneResult_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuningLog final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuningLog) */ {
 public:
  inline AutotuningLog() : AutotuningLog(nullptr) {}
  ~AutotuningLog() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AutotuningLog* PROTOBUF_NONNULL msg, std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AutotuningLog));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AutotuningLog(::google::protobuf::internal::ConstantInitialized);

  inline AutotuningLog(const AutotuningLog& from) : AutotuningLog(nullptr, from) {}
  inline AutotuningLog(AutotuningLog&& from) noexcept
      : AutotuningLog(nullptr, ::std::move(from)) {}
  inline AutotuningLog& operator=(const AutotuningLog& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutotuningLog& operator=(AutotuningLog&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuningLog& default_instance() {
    return *reinterpret_cast<const AutotuningLog*>(
        &_AutotuningLog_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(AutotuningLog& a, AutotuningLog& b) { a.Swap(&b); }
  inline void Swap(AutotuningLog* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuningLog* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AutotuningLog* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AutotuningLog>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AutotuningLog& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AutotuningLog& from) { AutotuningLog::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AutotuningLog* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AutotuningLog"; }

 protected:
  explicit AutotuningLog(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutotuningLog(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutotuningLog& from);
  AutotuningLog(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutotuningLog&& from) noexcept
      : AutotuningLog(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kResultsFieldNumber = 2,
    kDevicePciBusIdFieldNumber = 5,
    kBlasVersionFieldNumber = 6,
    kFusionNameFieldNumber = 7,
    kSelectedBackendFieldNumber = 9,
    kInstrFieldNumber = 1,
    kCudnnVersionFieldNumber = 3,
    kComputeCapabilityFieldNumber = 4,
    kFusionCountFieldNumber = 8,
  };
  // repeated .xla.AutotuneResult results = 2;
  int results_size() const;
  private:
  int _internal_results_size() const;

  public:
  void clear_results() ;
  ::xla::AutotuneResult* PROTOBUF_NONNULL mutable_results(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* PROTOBUF_NONNULL mutable_results();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>& _internal_results() const;
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* PROTOBUF_NONNULL _internal_mutable_results();
  public:
  const ::xla::AutotuneResult& results(int index) const;
  ::xla::AutotuneResult* PROTOBUF_NONNULL add_results();
  const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>& results() const;
  // string device_pci_bus_id = 5;
  void clear_device_pci_bus_id() ;
  const ::std::string& device_pci_bus_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_device_pci_bus_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_device_pci_bus_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_device_pci_bus_id();
  void set_allocated_device_pci_bus_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_device_pci_bus_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_device_pci_bus_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_device_pci_bus_id();

  public:
  // string blas_version = 6;
  void clear_blas_version() ;
  const ::std::string& blas_version() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_blas_version(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_blas_version();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_blas_version();
  void set_allocated_blas_version(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_blas_version() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_blas_version(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_blas_version();

  public:
  // string fusion_name = 7;
  void clear_fusion_name() ;
  const ::std::string& fusion_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_fusion_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_fusion_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_fusion_name();
  void set_allocated_fusion_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_fusion_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_fusion_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_fusion_name();

  public:
  // string selected_backend = 9;
  void clear_selected_backend() ;
  const ::std::string& selected_backend() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_selected_backend(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_selected_backend();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_selected_backend();
  void set_allocated_selected_backend(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_selected_backend() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_selected_backend(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_selected_backend();

  public:
  // .google.protobuf.Any instr = 1;
  bool has_instr() const;
  void clear_instr() ;
  const ::google::protobuf::Any& instr() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_instr();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_instr();
  void set_allocated_instr(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_instr(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_instr();

  private:
  const ::google::protobuf::Any& _internal_instr() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_instr();

  public:
  // .xla.CudnnVersion cudnn_version = 3;
  bool has_cudnn_version() const;
  void clear_cudnn_version() ;
  const ::xla::CudnnVersion& cudnn_version() const;
  [[nodiscard]] ::xla::CudnnVersion* PROTOBUF_NULLABLE release_cudnn_version();
  ::xla::CudnnVersion* PROTOBUF_NONNULL mutable_cudnn_version();
  void set_allocated_cudnn_version(::xla::CudnnVersion* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cudnn_version(::xla::CudnnVersion* PROTOBUF_NULLABLE value);
  ::xla::CudnnVersion* PROTOBUF_NULLABLE unsafe_arena_release_cudnn_version();

  private:
  const ::xla::CudnnVersion& _internal_cudnn_version() const;
  ::xla::CudnnVersion* PROTOBUF_NONNULL _internal_mutable_cudnn_version();

  public:
  // .xla.ComputeCapability compute_capability = 4;
  bool has_compute_capability() const;
  void clear_compute_capability() ;
  const ::xla::ComputeCapability& compute_capability() const;
  [[nodiscard]] ::xla::ComputeCapability* PROTOBUF_NULLABLE release_compute_capability();
  ::xla::ComputeCapability* PROTOBUF_NONNULL mutable_compute_capability();
  void set_allocated_compute_capability(::xla::ComputeCapability* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_compute_capability(::xla::ComputeCapability* PROTOBUF_NULLABLE value);
  ::xla::ComputeCapability* PROTOBUF_NULLABLE unsafe_arena_release_compute_capability();

  private:
  const ::xla::ComputeCapability& _internal_compute_capability() const;
  ::xla::ComputeCapability* PROTOBUF_NONNULL _internal_mutable_compute_capability();

  public:
  // int64 fusion_count = 8;
  void clear_fusion_count() ;
  ::int64_t fusion_count() const;
  void set_fusion_count(::int64_t value);

  private:
  ::int64_t _internal_fusion_count() const;
  void _internal_set_fusion_count(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AutotuningLog)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 9,
                                   4, 90,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AutotuningLog& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::AutotuneResult > results_;
    ::google::protobuf::internal::ArenaStringPtr device_pci_bus_id_;
    ::google::protobuf::internal::ArenaStringPtr blas_version_;
    ::google::protobuf::internal::ArenaStringPtr fusion_name_;
    ::google::protobuf::internal::ArenaStringPtr selected_backend_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE instr_;
    ::xla::CudnnVersion* PROTOBUF_NULLABLE cudnn_version_;
    ::xla::ComputeCapability* PROTOBUF_NULLABLE compute_capability_;
    ::int64_t fusion_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AutotuningLog_class_data_;

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// CudnnVersion

// int32 major = 1;
inline void CudnnVersion::clear_major() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.major_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int32_t CudnnVersion::major() const {
  // @@protoc_insertion_point(field_get:xla.CudnnVersion.major)
  return _internal_major();
}
inline void CudnnVersion::set_major(::int32_t value) {
  _internal_set_major(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.CudnnVersion.major)
}
inline ::int32_t CudnnVersion::_internal_major() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.major_;
}
inline void CudnnVersion::_internal_set_major(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.major_ = value;
}

// int32 minor = 2;
inline void CudnnVersion::clear_minor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.minor_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int32_t CudnnVersion::minor() const {
  // @@protoc_insertion_point(field_get:xla.CudnnVersion.minor)
  return _internal_minor();
}
inline void CudnnVersion::set_minor(::int32_t value) {
  _internal_set_minor(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.CudnnVersion.minor)
}
inline ::int32_t CudnnVersion::_internal_minor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.minor_;
}
inline void CudnnVersion::_internal_set_minor(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.minor_ = value;
}

// int32 patch = 3;
inline void CudnnVersion::clear_patch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.patch_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int32_t CudnnVersion::patch() const {
  // @@protoc_insertion_point(field_get:xla.CudnnVersion.patch)
  return _internal_patch();
}
inline void CudnnVersion::set_patch(::int32_t value) {
  _internal_set_patch(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.CudnnVersion.patch)
}
inline ::int32_t CudnnVersion::_internal_patch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.patch_;
}
inline void CudnnVersion::_internal_set_patch(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.patch_ = value;
}

// -------------------------------------------------------------------

// ComputeCapability

// int32 major = 1;
inline void ComputeCapability::clear_major() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.major_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int32_t ComputeCapability::major() const {
  // @@protoc_insertion_point(field_get:xla.ComputeCapability.major)
  return _internal_major();
}
inline void ComputeCapability::set_major(::int32_t value) {
  _internal_set_major(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ComputeCapability.major)
}
inline ::int32_t ComputeCapability::_internal_major() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.major_;
}
inline void ComputeCapability::_internal_set_major(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.major_ = value;
}

// int32 minor = 2;
inline void ComputeCapability::clear_minor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.minor_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int32_t ComputeCapability::minor() const {
  // @@protoc_insertion_point(field_get:xla.ComputeCapability.minor)
  return _internal_minor();
}
inline void ComputeCapability::set_minor(::int32_t value) {
  _internal_set_minor(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ComputeCapability.minor)
}
inline ::int32_t ComputeCapability::_internal_minor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.minor_;
}
inline void ComputeCapability::_internal_set_minor(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.minor_ = value;
}

// -------------------------------------------------------------------

// AutotuneResult_FailureResult

// .xla.AutotuneResult.FailureKind kind = 1;
inline void AutotuneResult_FailureResult::clear_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::xla::AutotuneResult_FailureKind AutotuneResult_FailureResult::kind() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.kind)
  return _internal_kind();
}
inline void AutotuneResult_FailureResult::set_kind(::xla::AutotuneResult_FailureKind value) {
  _internal_set_kind(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.FailureResult.kind)
}
inline ::xla::AutotuneResult_FailureKind AutotuneResult_FailureResult::_internal_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::AutotuneResult_FailureKind>(_impl_.kind_);
}
inline void AutotuneResult_FailureResult::_internal_set_kind(::xla::AutotuneResult_FailureKind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = value;
}

// string msg = 2;
inline void AutotuneResult_FailureResult::clear_msg() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.msg_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& AutotuneResult_FailureResult::msg() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.msg)
  return _internal_msg();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuneResult_FailureResult::set_msg(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.msg_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.FailureResult.msg)
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_FailureResult::mutable_msg()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_msg();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.FailureResult.msg)
  return _s;
}
inline const ::std::string& AutotuneResult_FailureResult::_internal_msg() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.msg_.Get();
}
inline void AutotuneResult_FailureResult::_internal_set_msg(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.msg_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_FailureResult::_internal_mutable_msg() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.msg_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuneResult_FailureResult::release_msg() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.msg)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.msg_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.msg_.Set("", GetArena());
  }
  return released;
}
inline void AutotuneResult_FailureResult::set_allocated_msg(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.msg_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.msg_.IsDefault()) {
    _impl_.msg_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.FailureResult.msg)
}

// .xla.AutotuneResult.ConvKey reference_conv = 11;
inline bool AutotuneResult_FailureResult::has_reference_conv() const {
  return key_case() == kReferenceConv;
}
inline bool AutotuneResult_FailureResult::_internal_has_reference_conv() const {
  return key_case() == kReferenceConv;
}
inline void AutotuneResult_FailureResult::set_has_reference_conv() {
  _impl_._oneof_case_[0] = kReferenceConv;
}
inline void AutotuneResult_FailureResult::clear_reference_conv() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kReferenceConv) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.reference_conv_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.reference_conv_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::release_reference_conv() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_conv)
  if (key_case() == kReferenceConv) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.reference_conv_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.reference_conv_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_ConvKey& AutotuneResult_FailureResult::_internal_reference_conv() const {
  return key_case() == kReferenceConv ? *reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.reference_conv_) : reinterpret_cast<::xla::AutotuneResult_ConvKey&>(::xla::_AutotuneResult_ConvKey_default_instance_);
}
inline const ::xla::AutotuneResult_ConvKey& AutotuneResult_FailureResult::reference_conv() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.reference_conv)
  return _internal_reference_conv();
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::unsafe_arena_release_reference_conv() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.FailureResult.reference_conv)
  if (key_case() == kReferenceConv) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.reference_conv_);
    _impl_.key_.reference_conv_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult_FailureResult::unsafe_arena_set_allocated_reference_conv(
    ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_reference_conv();
    _impl_.key_.reference_conv_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_conv)
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::_internal_mutable_reference_conv() {
  if (key_case() != kReferenceConv) {
    clear_key();
    set_has_reference_conv();
    _impl_.key_.reference_conv_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_ConvKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.reference_conv_);
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::mutable_reference_conv()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_ConvKey* _msg = _internal_mutable_reference_conv();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.FailureResult.reference_conv)
  return _msg;
}

// .xla.AutotuneResult.GemmKey reference_gemm = 12;
inline bool AutotuneResult_FailureResult::has_reference_gemm() const {
  return key_case() == kReferenceGemm;
}
inline bool AutotuneResult_FailureResult::_internal_has_reference_gemm() const {
  return key_case() == kReferenceGemm;
}
inline void AutotuneResult_FailureResult::set_has_reference_gemm() {
  _impl_._oneof_case_[0] = kReferenceGemm;
}
inline void AutotuneResult_FailureResult::clear_reference_gemm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kReferenceGemm) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.reference_gemm_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.reference_gemm_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::release_reference_gemm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_gemm)
  if (key_case() == kReferenceGemm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.reference_gemm_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.reference_gemm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_GemmKey& AutotuneResult_FailureResult::_internal_reference_gemm() const {
  return key_case() == kReferenceGemm ? *reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.reference_gemm_) : reinterpret_cast<::xla::AutotuneResult_GemmKey&>(::xla::_AutotuneResult_GemmKey_default_instance_);
}
inline const ::xla::AutotuneResult_GemmKey& AutotuneResult_FailureResult::reference_gemm() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.reference_gemm)
  return _internal_reference_gemm();
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::unsafe_arena_release_reference_gemm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.FailureResult.reference_gemm)
  if (key_case() == kReferenceGemm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.reference_gemm_);
    _impl_.key_.reference_gemm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult_FailureResult::unsafe_arena_set_allocated_reference_gemm(
    ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_reference_gemm();
    _impl_.key_.reference_gemm_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_gemm)
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::_internal_mutable_reference_gemm() {
  if (key_case() != kReferenceGemm) {
    clear_key();
    set_has_reference_gemm();
    _impl_.key_.reference_gemm_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_GemmKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.reference_gemm_);
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::mutable_reference_gemm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_GemmKey* _msg = _internal_mutable_reference_gemm();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.FailureResult.reference_gemm)
  return _msg;
}

// .xla.AutotuneResult.CudaConvPlanKey reference_cuda_conv_plan = 14;
inline bool AutotuneResult_FailureResult::has_reference_cuda_conv_plan() const {
  return key_case() == kReferenceCudaConvPlan;
}
inline bool AutotuneResult_FailureResult::_internal_has_reference_cuda_conv_plan() const {
  return key_case() == kReferenceCudaConvPlan;
}
inline void AutotuneResult_FailureResult::set_has_reference_cuda_conv_plan() {
  _impl_._oneof_case_[0] = kReferenceCudaConvPlan;
}
inline void AutotuneResult_FailureResult::clear_reference_cuda_conv_plan() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kReferenceCudaConvPlan) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.reference_cuda_conv_plan_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.reference_cuda_conv_plan_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::release_reference_cuda_conv_plan() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
  if (key_case() == kReferenceCudaConvPlan) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.reference_cuda_conv_plan_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.reference_cuda_conv_plan_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_CudaConvPlanKey& AutotuneResult_FailureResult::_internal_reference_cuda_conv_plan() const {
  return key_case() == kReferenceCudaConvPlan ? *reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.reference_cuda_conv_plan_) : reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey&>(::xla::_AutotuneResult_CudaConvPlanKey_default_instance_);
}
inline const ::xla::AutotuneResult_CudaConvPlanKey& AutotuneResult_FailureResult::reference_cuda_conv_plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
  return _internal_reference_cuda_conv_plan();
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE AutotuneResult_FailureResult::unsafe_arena_release_reference_cuda_conv_plan() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
  if (key_case() == kReferenceCudaConvPlan) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.reference_cuda_conv_plan_);
    _impl_.key_.reference_cuda_conv_plan_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult_FailureResult::unsafe_arena_set_allocated_reference_cuda_conv_plan(
    ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_reference_cuda_conv_plan();
    _impl_.key_.reference_cuda_conv_plan_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::_internal_mutable_reference_cuda_conv_plan() {
  if (key_case() != kReferenceCudaConvPlan) {
    clear_key();
    set_has_reference_cuda_conv_plan();
    _impl_.key_.reference_cuda_conv_plan_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CudaConvPlanKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.reference_cuda_conv_plan_);
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL AutotuneResult_FailureResult::mutable_reference_cuda_conv_plan()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_CudaConvPlanKey* _msg = _internal_mutable_reference_cuda_conv_plan();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
  return _msg;
}

// .stream_executor.dnn.AlgorithmProto reference_algorithm = 15;
inline bool AutotuneResult_FailureResult::has_reference_algorithm() const {
  return key_case() == kReferenceAlgorithm;
}
inline bool AutotuneResult_FailureResult::_internal_has_reference_algorithm() const {
  return key_case() == kReferenceAlgorithm;
}
inline void AutotuneResult_FailureResult::set_has_reference_algorithm() {
  _impl_._oneof_case_[0] = kReferenceAlgorithm;
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE AutotuneResult_FailureResult::release_reference_algorithm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_algorithm)
  if (key_case() == kReferenceAlgorithm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.reference_algorithm_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.reference_algorithm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::stream_executor::dnn::AlgorithmProto& AutotuneResult_FailureResult::_internal_reference_algorithm() const {
  return key_case() == kReferenceAlgorithm ? *reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.reference_algorithm_) : reinterpret_cast<::stream_executor::dnn::AlgorithmProto&>(::stream_executor::dnn::_AlgorithmProto_default_instance_);
}
inline const ::stream_executor::dnn::AlgorithmProto& AutotuneResult_FailureResult::reference_algorithm() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.reference_algorithm)
  return _internal_reference_algorithm();
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE AutotuneResult_FailureResult::unsafe_arena_release_reference_algorithm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.FailureResult.reference_algorithm)
  if (key_case() == kReferenceAlgorithm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.reference_algorithm_);
    _impl_.key_.reference_algorithm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult_FailureResult::unsafe_arena_set_allocated_reference_algorithm(
    ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_reference_algorithm();
    _impl_.key_.reference_algorithm_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_algorithm)
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL AutotuneResult_FailureResult::_internal_mutable_reference_algorithm() {
  if (key_case() != kReferenceAlgorithm) {
    clear_key();
    set_has_reference_algorithm();
    _impl_.key_.reference_algorithm_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::stream_executor::dnn::AlgorithmProto>(GetArena()));
  }
  return reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.reference_algorithm_);
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL AutotuneResult_FailureResult::mutable_reference_algorithm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::stream_executor::dnn::AlgorithmProto* _msg = _internal_mutable_reference_algorithm();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.FailureResult.reference_algorithm)
  return _msg;
}

// int64 buffer_address = 13;
inline void AutotuneResult_FailureResult::clear_buffer_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_address_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t AutotuneResult_FailureResult::buffer_address() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.FailureResult.buffer_address)
  return _internal_buffer_address();
}
inline void AutotuneResult_FailureResult::set_buffer_address(::int64_t value) {
  _internal_set_buffer_address(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.FailureResult.buffer_address)
}
inline ::int64_t AutotuneResult_FailureResult::_internal_buffer_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffer_address_;
}
inline void AutotuneResult_FailureResult::_internal_set_buffer_address(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_address_ = value;
}

inline bool AutotuneResult_FailureResult::has_key() const {
  return key_case() != KEY_NOT_SET;
}
inline void AutotuneResult_FailureResult::clear_has_key() {
  _impl_._oneof_case_[0] = KEY_NOT_SET;
}
inline AutotuneResult_FailureResult::KeyCase AutotuneResult_FailureResult::key_case() const {
  return AutotuneResult_FailureResult::KeyCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// AutotuneResult_ConvKey

// int64 algorithm = 1;
inline void AutotuneResult_ConvKey::clear_algorithm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t AutotuneResult_ConvKey::algorithm() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.ConvKey.algorithm)
  return _internal_algorithm();
}
inline void AutotuneResult_ConvKey::set_algorithm(::int64_t value) {
  _internal_set_algorithm(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.ConvKey.algorithm)
}
inline ::int64_t AutotuneResult_ConvKey::_internal_algorithm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.algorithm_;
}
inline void AutotuneResult_ConvKey::_internal_set_algorithm(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = value;
}

// bool tensor_ops_enabled = 2;
inline void AutotuneResult_ConvKey::clear_tensor_ops_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tensor_ops_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline bool AutotuneResult_ConvKey::tensor_ops_enabled() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.ConvKey.tensor_ops_enabled)
  return _internal_tensor_ops_enabled();
}
inline void AutotuneResult_ConvKey::set_tensor_ops_enabled(bool value) {
  _internal_set_tensor_ops_enabled(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.ConvKey.tensor_ops_enabled)
}
inline bool AutotuneResult_ConvKey::_internal_tensor_ops_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tensor_ops_enabled_;
}
inline void AutotuneResult_ConvKey::_internal_set_tensor_ops_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tensor_ops_enabled_ = value;
}

// -------------------------------------------------------------------

// AutotuneResult_GemmKey

// int64 algorithm = 1;
inline void AutotuneResult_GemmKey::clear_algorithm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t AutotuneResult_GemmKey::algorithm() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.GemmKey.algorithm)
  return _internal_algorithm();
}
inline void AutotuneResult_GemmKey::set_algorithm(::int64_t value) {
  _internal_set_algorithm(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.GemmKey.algorithm)
}
inline ::int64_t AutotuneResult_GemmKey::_internal_algorithm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.algorithm_;
}
inline void AutotuneResult_GemmKey::_internal_set_algorithm(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = value;
}

// int64 autotune_workspace_size = 2;
inline void AutotuneResult_GemmKey::clear_autotune_workspace_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.autotune_workspace_size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t AutotuneResult_GemmKey::autotune_workspace_size() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.GemmKey.autotune_workspace_size)
  return _internal_autotune_workspace_size();
}
inline void AutotuneResult_GemmKey::set_autotune_workspace_size(::int64_t value) {
  _internal_set_autotune_workspace_size(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.GemmKey.autotune_workspace_size)
}
inline ::int64_t AutotuneResult_GemmKey::_internal_autotune_workspace_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.autotune_workspace_size_;
}
inline void AutotuneResult_GemmKey::_internal_set_autotune_workspace_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.autotune_workspace_size_ = value;
}

// -------------------------------------------------------------------

// AutotuneResult_CudaConvPlanKey

// string exec_plan_id = 1;
inline void AutotuneResult_CudaConvPlanKey::clear_exec_plan_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exec_plan_id_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& AutotuneResult_CudaConvPlanKey::exec_plan_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
  return _internal_exec_plan_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuneResult_CudaConvPlanKey::set_exec_plan_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.exec_plan_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_CudaConvPlanKey::mutable_exec_plan_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_exec_plan_id();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
  return _s;
}
inline const ::std::string& AutotuneResult_CudaConvPlanKey::_internal_exec_plan_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.exec_plan_id_.Get();
}
inline void AutotuneResult_CudaConvPlanKey::_internal_set_exec_plan_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.exec_plan_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_CudaConvPlanKey::_internal_mutable_exec_plan_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.exec_plan_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuneResult_CudaConvPlanKey::release_exec_plan_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.exec_plan_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.exec_plan_id_.Set("", GetArena());
  }
  return released;
}
inline void AutotuneResult_CudaConvPlanKey::set_allocated_exec_plan_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.exec_plan_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.exec_plan_id_.IsDefault()) {
    _impl_.exec_plan_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
}

// -------------------------------------------------------------------

// AutotuneResult_TritonGemmKey

// int64 block_m = 1;
inline void AutotuneResult_TritonGemmKey::clear_block_m() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_m_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::block_m() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.block_m)
  return _internal_block_m();
}
inline void AutotuneResult_TritonGemmKey::set_block_m(::int64_t value) {
  _internal_set_block_m(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.block_m)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_block_m() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.block_m_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_block_m(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_m_ = value;
}

// int64 block_n = 2;
inline void AutotuneResult_TritonGemmKey::clear_block_n() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_n_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::block_n() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.block_n)
  return _internal_block_n();
}
inline void AutotuneResult_TritonGemmKey::set_block_n(::int64_t value) {
  _internal_set_block_n(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.block_n)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_block_n() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.block_n_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_block_n(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_n_ = value;
}

// int64 block_k = 3;
inline void AutotuneResult_TritonGemmKey::clear_block_k() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_k_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::block_k() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.block_k)
  return _internal_block_k();
}
inline void AutotuneResult_TritonGemmKey::set_block_k(::int64_t value) {
  _internal_set_block_k(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.block_k)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_block_k() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.block_k_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_block_k(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_k_ = value;
}

// int64 split_k = 4;
inline void AutotuneResult_TritonGemmKey::clear_split_k() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.split_k_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::split_k() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.split_k)
  return _internal_split_k();
}
inline void AutotuneResult_TritonGemmKey::set_split_k(::int64_t value) {
  _internal_set_split_k(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.split_k)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_split_k() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.split_k_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_split_k(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.split_k_ = value;
}

// int64 num_stages = 5;
inline void AutotuneResult_TritonGemmKey::clear_num_stages() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_stages_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::num_stages() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.num_stages)
  return _internal_num_stages();
}
inline void AutotuneResult_TritonGemmKey::set_num_stages(::int64_t value) {
  _internal_set_num_stages(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.num_stages)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_num_stages() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_stages_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_num_stages(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_stages_ = value;
}

// int64 num_warps = 6;
inline void AutotuneResult_TritonGemmKey::clear_num_warps() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_warps_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::num_warps() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.num_warps)
  return _internal_num_warps();
}
inline void AutotuneResult_TritonGemmKey::set_num_warps(::int64_t value) {
  _internal_set_num_warps(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.num_warps)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_num_warps() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_warps_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_num_warps(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_warps_ = value;
}

// int64 num_ctas = 7;
inline void AutotuneResult_TritonGemmKey::clear_num_ctas() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_ctas_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline ::int64_t AutotuneResult_TritonGemmKey::num_ctas() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.num_ctas)
  return _internal_num_ctas();
}
inline void AutotuneResult_TritonGemmKey::set_num_ctas(::int64_t value) {
  _internal_set_num_ctas(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.num_ctas)
}
inline ::int64_t AutotuneResult_TritonGemmKey::_internal_num_ctas() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_ctas_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_num_ctas(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_ctas_ = value;
}

// bool is_tma_allowed = 8;
inline void AutotuneResult_TritonGemmKey::clear_is_tma_allowed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_tma_allowed_ = false;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline bool AutotuneResult_TritonGemmKey::is_tma_allowed() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.is_tma_allowed)
  return _internal_is_tma_allowed();
}
inline void AutotuneResult_TritonGemmKey::set_is_tma_allowed(bool value) {
  _internal_set_is_tma_allowed(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.is_tma_allowed)
}
inline bool AutotuneResult_TritonGemmKey::_internal_is_tma_allowed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_tma_allowed_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_is_tma_allowed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_tma_allowed_ = value;
}

// bool is_warp_specialization_allowed = 9;
inline void AutotuneResult_TritonGemmKey::clear_is_warp_specialization_allowed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_warp_specialization_allowed_ = false;
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline bool AutotuneResult_TritonGemmKey::is_warp_specialization_allowed() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.TritonGemmKey.is_warp_specialization_allowed)
  return _internal_is_warp_specialization_allowed();
}
inline void AutotuneResult_TritonGemmKey::set_is_warp_specialization_allowed(bool value) {
  _internal_set_is_warp_specialization_allowed(value);
  _impl_._has_bits_[0] |= 0x00000100u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.TritonGemmKey.is_warp_specialization_allowed)
}
inline bool AutotuneResult_TritonGemmKey::_internal_is_warp_specialization_allowed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_warp_specialization_allowed_;
}
inline void AutotuneResult_TritonGemmKey::_internal_set_is_warp_specialization_allowed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_warp_specialization_allowed_ = value;
}

// -------------------------------------------------------------------

// AutotuneResult_CustomKernelFusionKey

// int64 kernel_index = 1;
inline void AutotuneResult_CustomKernelFusionKey::clear_kernel_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_index_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t AutotuneResult_CustomKernelFusionKey::kernel_index() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.CustomKernelFusionKey.kernel_index)
  return _internal_kernel_index();
}
inline void AutotuneResult_CustomKernelFusionKey::set_kernel_index(::int64_t value) {
  _internal_set_kernel_index(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.CustomKernelFusionKey.kernel_index)
}
inline ::int64_t AutotuneResult_CustomKernelFusionKey::_internal_kernel_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_index_;
}
inline void AutotuneResult_CustomKernelFusionKey::_internal_set_kernel_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_index_ = value;
}

// -------------------------------------------------------------------

// AutotuneResult_BackendConfigKey

// string name = 1;
inline void AutotuneResult_BackendConfigKey::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& AutotuneResult_BackendConfigKey::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.BackendConfigKey.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuneResult_BackendConfigKey::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.BackendConfigKey.name)
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_BackendConfigKey::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.BackendConfigKey.name)
  return _s;
}
inline const ::std::string& AutotuneResult_BackendConfigKey::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void AutotuneResult_BackendConfigKey::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuneResult_BackendConfigKey::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuneResult_BackendConfigKey::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.BackendConfigKey.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void AutotuneResult_BackendConfigKey::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.BackendConfigKey.name)
}

// .google.protobuf.Any config = 2;
inline bool AutotuneResult_BackendConfigKey::has_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.config_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& AutotuneResult_BackendConfigKey::_internal_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.config_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Any&>(::google::protobuf::_Any_default_instance_);
}
inline const ::google::protobuf::Any& AutotuneResult_BackendConfigKey::config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.BackendConfigKey.config)
  return _internal_config();
}
inline void AutotuneResult_BackendConfigKey::unsafe_arena_set_allocated_config(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.config_);
  }
  _impl_.config_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.BackendConfigKey.config)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE AutotuneResult_BackendConfigKey::release_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Any* released = _impl_.config_;
  _impl_.config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE AutotuneResult_BackendConfigKey::unsafe_arena_release_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.BackendConfigKey.config)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Any* temp = _impl_.config_;
  _impl_.config_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AutotuneResult_BackendConfigKey::_internal_mutable_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.config_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.config_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AutotuneResult_BackendConfigKey::mutable_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::google::protobuf::Any* _msg = _internal_mutable_config();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.BackendConfigKey.config)
  return _msg;
}
inline void AutotuneResult_BackendConfigKey::set_allocated_config(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.config_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.config_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.BackendConfigKey.config)
}

// -------------------------------------------------------------------

// AutotuneResult

// int64 scratch_bytes = 8;
inline void AutotuneResult::clear_scratch_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scratch_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t AutotuneResult::scratch_bytes() const {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.scratch_bytes)
  return _internal_scratch_bytes();
}
inline void AutotuneResult::set_scratch_bytes(::int64_t value) {
  _internal_set_scratch_bytes(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.scratch_bytes)
}
inline ::int64_t AutotuneResult::_internal_scratch_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.scratch_bytes_;
}
inline void AutotuneResult::_internal_set_scratch_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scratch_bytes_ = value;
}

// .google.protobuf.Duration run_time = 9;
inline bool AutotuneResult::has_run_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.run_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Duration& AutotuneResult::_internal_run_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Duration* p = _impl_.run_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Duration&>(::google::protobuf::_Duration_default_instance_);
}
inline const ::google::protobuf::Duration& AutotuneResult::run_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.run_time)
  return _internal_run_time();
}
inline void AutotuneResult::unsafe_arena_set_allocated_run_time(
    ::google::protobuf::Duration* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.run_time_);
  }
  _impl_.run_time_ = reinterpret_cast<::google::protobuf::Duration*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.run_time)
}
inline ::google::protobuf::Duration* PROTOBUF_NULLABLE AutotuneResult::release_run_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Duration* released = _impl_.run_time_;
  _impl_.run_time_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Duration* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_run_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.run_time)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Duration* temp = _impl_.run_time_;
  _impl_.run_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Duration* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_run_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.run_time_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Duration>(GetArena());
    _impl_.run_time_ = reinterpret_cast<::google::protobuf::Duration*>(p);
  }
  return _impl_.run_time_;
}
inline ::google::protobuf::Duration* PROTOBUF_NONNULL AutotuneResult::mutable_run_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::google::protobuf::Duration* _msg = _internal_mutable_run_time();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.run_time)
  return _msg;
}
inline void AutotuneResult::set_allocated_run_time(::google::protobuf::Duration* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.run_time_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.run_time_ = reinterpret_cast<::google::protobuf::Duration*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.run_time)
}

// .xla.AutotuneResult.FailureResult failure = 7;
inline bool AutotuneResult::has_failure() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.failure_ != nullptr);
  return value;
}
inline void AutotuneResult::clear_failure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.failure_ != nullptr) _impl_.failure_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::AutotuneResult_FailureResult& AutotuneResult::_internal_failure() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::AutotuneResult_FailureResult* p = _impl_.failure_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::AutotuneResult_FailureResult&>(::xla::_AutotuneResult_FailureResult_default_instance_);
}
inline const ::xla::AutotuneResult_FailureResult& AutotuneResult::failure() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.failure)
  return _internal_failure();
}
inline void AutotuneResult::unsafe_arena_set_allocated_failure(
    ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.failure_);
  }
  _impl_.failure_ = reinterpret_cast<::xla::AutotuneResult_FailureResult*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.failure)
}
inline ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE AutotuneResult::release_failure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::AutotuneResult_FailureResult* released = _impl_.failure_;
  _impl_.failure_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_failure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.failure)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::AutotuneResult_FailureResult* temp = _impl_.failure_;
  _impl_.failure_ = nullptr;
  return temp;
}
inline ::xla::AutotuneResult_FailureResult* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_failure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.failure_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_FailureResult>(GetArena());
    _impl_.failure_ = reinterpret_cast<::xla::AutotuneResult_FailureResult*>(p);
  }
  return _impl_.failure_;
}
inline ::xla::AutotuneResult_FailureResult* PROTOBUF_NONNULL AutotuneResult::mutable_failure()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::AutotuneResult_FailureResult* _msg = _internal_mutable_failure();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.failure)
  return _msg;
}
inline void AutotuneResult::set_allocated_failure(::xla::AutotuneResult_FailureResult* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.failure_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.failure_ = reinterpret_cast<::xla::AutotuneResult_FailureResult*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuneResult.failure)
}

// .xla.AutotuneResult.ConvKey conv = 5;
inline bool AutotuneResult::has_conv() const {
  return key_case() == kConv;
}
inline bool AutotuneResult::_internal_has_conv() const {
  return key_case() == kConv;
}
inline void AutotuneResult::set_has_conv() {
  _impl_._oneof_case_[0] = kConv;
}
inline void AutotuneResult::clear_conv() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kConv) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.conv_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.conv_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE AutotuneResult::release_conv() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.conv)
  if (key_case() == kConv) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.conv_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.conv_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_ConvKey& AutotuneResult::_internal_conv() const {
  return key_case() == kConv ? *reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.conv_) : reinterpret_cast<::xla::AutotuneResult_ConvKey&>(::xla::_AutotuneResult_ConvKey_default_instance_);
}
inline const ::xla::AutotuneResult_ConvKey& AutotuneResult::conv() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.conv)
  return _internal_conv();
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_conv() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.conv)
  if (key_case() == kConv) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.conv_);
    _impl_.key_.conv_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_conv(
    ::xla::AutotuneResult_ConvKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_conv();
    _impl_.key_.conv_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.conv)
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_conv() {
  if (key_case() != kConv) {
    clear_key();
    set_has_conv();
    _impl_.key_.conv_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_ConvKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_ConvKey*>(_impl_.key_.conv_);
}
inline ::xla::AutotuneResult_ConvKey* PROTOBUF_NONNULL AutotuneResult::mutable_conv()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_ConvKey* _msg = _internal_mutable_conv();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.conv)
  return _msg;
}

// .xla.AutotuneResult.GemmKey gemm = 6;
inline bool AutotuneResult::has_gemm() const {
  return key_case() == kGemm;
}
inline bool AutotuneResult::_internal_has_gemm() const {
  return key_case() == kGemm;
}
inline void AutotuneResult::set_has_gemm() {
  _impl_._oneof_case_[0] = kGemm;
}
inline void AutotuneResult::clear_gemm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kGemm) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.gemm_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.gemm_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE AutotuneResult::release_gemm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.gemm)
  if (key_case() == kGemm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.gemm_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.gemm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_GemmKey& AutotuneResult::_internal_gemm() const {
  return key_case() == kGemm ? *reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.gemm_) : reinterpret_cast<::xla::AutotuneResult_GemmKey&>(::xla::_AutotuneResult_GemmKey_default_instance_);
}
inline const ::xla::AutotuneResult_GemmKey& AutotuneResult::gemm() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.gemm)
  return _internal_gemm();
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_gemm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.gemm)
  if (key_case() == kGemm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.gemm_);
    _impl_.key_.gemm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_gemm(
    ::xla::AutotuneResult_GemmKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_gemm();
    _impl_.key_.gemm_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.gemm)
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_gemm() {
  if (key_case() != kGemm) {
    clear_key();
    set_has_gemm();
    _impl_.key_.gemm_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_GemmKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_GemmKey*>(_impl_.key_.gemm_);
}
inline ::xla::AutotuneResult_GemmKey* PROTOBUF_NONNULL AutotuneResult::mutable_gemm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_GemmKey* _msg = _internal_mutable_gemm();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.gemm)
  return _msg;
}

// .xla.AutotuneResult.TritonGemmKey triton = 17;
inline bool AutotuneResult::has_triton() const {
  return key_case() == kTriton;
}
inline bool AutotuneResult::_internal_has_triton() const {
  return key_case() == kTriton;
}
inline void AutotuneResult::set_has_triton() {
  _impl_._oneof_case_[0] = kTriton;
}
inline void AutotuneResult::clear_triton() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kTriton) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.triton_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.triton_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE AutotuneResult::release_triton() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.triton)
  if (key_case() == kTriton) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_TritonGemmKey*>(_impl_.key_.triton_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.triton_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_TritonGemmKey& AutotuneResult::_internal_triton() const {
  return key_case() == kTriton ? *reinterpret_cast<::xla::AutotuneResult_TritonGemmKey*>(_impl_.key_.triton_) : reinterpret_cast<::xla::AutotuneResult_TritonGemmKey&>(::xla::_AutotuneResult_TritonGemmKey_default_instance_);
}
inline const ::xla::AutotuneResult_TritonGemmKey& AutotuneResult::triton() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.triton)
  return _internal_triton();
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_triton() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.triton)
  if (key_case() == kTriton) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_TritonGemmKey*>(_impl_.key_.triton_);
    _impl_.key_.triton_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_triton(
    ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_triton();
    _impl_.key_.triton_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.triton)
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_triton() {
  if (key_case() != kTriton) {
    clear_key();
    set_has_triton();
    _impl_.key_.triton_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_TritonGemmKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_TritonGemmKey*>(_impl_.key_.triton_);
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL AutotuneResult::mutable_triton()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_TritonGemmKey* _msg = _internal_mutable_triton();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.triton)
  return _msg;
}

// .xla.AutotuneResult.CudaConvPlanKey cuda_conv_plan = 15;
inline bool AutotuneResult::has_cuda_conv_plan() const {
  return key_case() == kCudaConvPlan;
}
inline bool AutotuneResult::_internal_has_cuda_conv_plan() const {
  return key_case() == kCudaConvPlan;
}
inline void AutotuneResult::set_has_cuda_conv_plan() {
  _impl_._oneof_case_[0] = kCudaConvPlan;
}
inline void AutotuneResult::clear_cuda_conv_plan() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kCudaConvPlan) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.cuda_conv_plan_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.cuda_conv_plan_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE AutotuneResult::release_cuda_conv_plan() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.cuda_conv_plan)
  if (key_case() == kCudaConvPlan) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.cuda_conv_plan_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.cuda_conv_plan_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_CudaConvPlanKey& AutotuneResult::_internal_cuda_conv_plan() const {
  return key_case() == kCudaConvPlan ? *reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.cuda_conv_plan_) : reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey&>(::xla::_AutotuneResult_CudaConvPlanKey_default_instance_);
}
inline const ::xla::AutotuneResult_CudaConvPlanKey& AutotuneResult::cuda_conv_plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.cuda_conv_plan)
  return _internal_cuda_conv_plan();
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_cuda_conv_plan() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.cuda_conv_plan)
  if (key_case() == kCudaConvPlan) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.cuda_conv_plan_);
    _impl_.key_.cuda_conv_plan_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_cuda_conv_plan(
    ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_cuda_conv_plan();
    _impl_.key_.cuda_conv_plan_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.cuda_conv_plan)
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_cuda_conv_plan() {
  if (key_case() != kCudaConvPlan) {
    clear_key();
    set_has_cuda_conv_plan();
    _impl_.key_.cuda_conv_plan_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CudaConvPlanKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_CudaConvPlanKey*>(_impl_.key_.cuda_conv_plan_);
}
inline ::xla::AutotuneResult_CudaConvPlanKey* PROTOBUF_NONNULL AutotuneResult::mutable_cuda_conv_plan()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_CudaConvPlanKey* _msg = _internal_mutable_cuda_conv_plan();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.cuda_conv_plan)
  return _msg;
}

// .xla.AutotuneResult.CustomKernelFusionKey custom_kernel_fusion = 18;
inline bool AutotuneResult::has_custom_kernel_fusion() const {
  return key_case() == kCustomKernelFusion;
}
inline bool AutotuneResult::_internal_has_custom_kernel_fusion() const {
  return key_case() == kCustomKernelFusion;
}
inline void AutotuneResult::set_has_custom_kernel_fusion() {
  _impl_._oneof_case_[0] = kCustomKernelFusion;
}
inline void AutotuneResult::clear_custom_kernel_fusion() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kCustomKernelFusion) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.custom_kernel_fusion_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.custom_kernel_fusion_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE AutotuneResult::release_custom_kernel_fusion() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.custom_kernel_fusion)
  if (key_case() == kCustomKernelFusion) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CustomKernelFusionKey*>(_impl_.key_.custom_kernel_fusion_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.custom_kernel_fusion_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_CustomKernelFusionKey& AutotuneResult::_internal_custom_kernel_fusion() const {
  return key_case() == kCustomKernelFusion ? *reinterpret_cast<::xla::AutotuneResult_CustomKernelFusionKey*>(_impl_.key_.custom_kernel_fusion_) : reinterpret_cast<::xla::AutotuneResult_CustomKernelFusionKey&>(::xla::_AutotuneResult_CustomKernelFusionKey_default_instance_);
}
inline const ::xla::AutotuneResult_CustomKernelFusionKey& AutotuneResult::custom_kernel_fusion() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.custom_kernel_fusion)
  return _internal_custom_kernel_fusion();
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_custom_kernel_fusion() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.custom_kernel_fusion)
  if (key_case() == kCustomKernelFusion) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_CustomKernelFusionKey*>(_impl_.key_.custom_kernel_fusion_);
    _impl_.key_.custom_kernel_fusion_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_custom_kernel_fusion(
    ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_custom_kernel_fusion();
    _impl_.key_.custom_kernel_fusion_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.custom_kernel_fusion)
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_custom_kernel_fusion() {
  if (key_case() != kCustomKernelFusion) {
    clear_key();
    set_has_custom_kernel_fusion();
    _impl_.key_.custom_kernel_fusion_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CustomKernelFusionKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_CustomKernelFusionKey*>(_impl_.key_.custom_kernel_fusion_);
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* PROTOBUF_NONNULL AutotuneResult::mutable_custom_kernel_fusion()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_CustomKernelFusionKey* _msg = _internal_mutable_custom_kernel_fusion();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.custom_kernel_fusion)
  return _msg;
}

// .stream_executor.dnn.AlgorithmProto algorithm = 16;
inline bool AutotuneResult::has_algorithm() const {
  return key_case() == kAlgorithm;
}
inline bool AutotuneResult::_internal_has_algorithm() const {
  return key_case() == kAlgorithm;
}
inline void AutotuneResult::set_has_algorithm() {
  _impl_._oneof_case_[0] = kAlgorithm;
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE AutotuneResult::release_algorithm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.algorithm)
  if (key_case() == kAlgorithm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.algorithm_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.algorithm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::stream_executor::dnn::AlgorithmProto& AutotuneResult::_internal_algorithm() const {
  return key_case() == kAlgorithm ? *reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.algorithm_) : reinterpret_cast<::stream_executor::dnn::AlgorithmProto&>(::stream_executor::dnn::_AlgorithmProto_default_instance_);
}
inline const ::stream_executor::dnn::AlgorithmProto& AutotuneResult::algorithm() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.algorithm)
  return _internal_algorithm();
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_algorithm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.algorithm)
  if (key_case() == kAlgorithm) {
    clear_has_key();
    auto* temp = reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.algorithm_);
    _impl_.key_.algorithm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_algorithm(
    ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_algorithm();
    _impl_.key_.algorithm_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.algorithm)
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_algorithm() {
  if (key_case() != kAlgorithm) {
    clear_key();
    set_has_algorithm();
    _impl_.key_.algorithm_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::stream_executor::dnn::AlgorithmProto>(GetArena()));
  }
  return reinterpret_cast<::stream_executor::dnn::AlgorithmProto*>(_impl_.key_.algorithm_);
}
inline ::stream_executor::dnn::AlgorithmProto* PROTOBUF_NONNULL AutotuneResult::mutable_algorithm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::stream_executor::dnn::AlgorithmProto* _msg = _internal_mutable_algorithm();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.algorithm)
  return _msg;
}

// .xla.AutotuneResult.BackendConfigKey other = 19;
inline bool AutotuneResult::has_other() const {
  return key_case() == kOther;
}
inline bool AutotuneResult::_internal_has_other() const {
  return key_case() == kOther;
}
inline void AutotuneResult::set_has_other() {
  _impl_._oneof_case_[0] = kOther;
}
inline void AutotuneResult::clear_other() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (key_case() == kOther) {
    if (GetArena() == nullptr) {
      delete _impl_.key_.other_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.key_.other_);
    }
    clear_has_key();
  }
}
inline ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE AutotuneResult::release_other() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.other)
  if (key_case() == kOther) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_BackendConfigKey*>(_impl_.key_.other_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.key_.other_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::AutotuneResult_BackendConfigKey& AutotuneResult::_internal_other() const {
  return key_case() == kOther ? *reinterpret_cast<::xla::AutotuneResult_BackendConfigKey*>(_impl_.key_.other_) : reinterpret_cast<::xla::AutotuneResult_BackendConfigKey&>(::xla::_AutotuneResult_BackendConfigKey_default_instance_);
}
inline const ::xla::AutotuneResult_BackendConfigKey& AutotuneResult::other() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuneResult.other)
  return _internal_other();
}
inline ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE AutotuneResult::unsafe_arena_release_other() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.other)
  if (key_case() == kOther) {
    clear_has_key();
    auto* temp = reinterpret_cast<::xla::AutotuneResult_BackendConfigKey*>(_impl_.key_.other_);
    _impl_.key_.other_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_other(
    ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_key();
  if (value) {
    set_has_other();
    _impl_.key_.other_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.other)
}
inline ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL AutotuneResult::_internal_mutable_other() {
  if (key_case() != kOther) {
    clear_key();
    set_has_other();
    _impl_.key_.other_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_BackendConfigKey>(GetArena()));
  }
  return reinterpret_cast<::xla::AutotuneResult_BackendConfigKey*>(_impl_.key_.other_);
}
inline ::xla::AutotuneResult_BackendConfigKey* PROTOBUF_NONNULL AutotuneResult::mutable_other()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::AutotuneResult_BackendConfigKey* _msg = _internal_mutable_other();
  // @@protoc_insertion_point(field_mutable:xla.AutotuneResult.other)
  return _msg;
}

inline bool AutotuneResult::has_key() const {
  return key_case() != KEY_NOT_SET;
}
inline void AutotuneResult::clear_has_key() {
  _impl_._oneof_case_[0] = KEY_NOT_SET;
}
inline AutotuneResult::KeyCase AutotuneResult::key_case() const {
  return AutotuneResult::KeyCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// TritonGemmConfigsProto

// repeated .xla.AutotuneResult.TritonGemmKey config = 1;
inline int TritonGemmConfigsProto::_internal_config_size() const {
  return _internal_config().size();
}
inline int TritonGemmConfigsProto::config_size() const {
  return _internal_config_size();
}
inline void TritonGemmConfigsProto::clear_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.config_.Clear();
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL TritonGemmConfigsProto::mutable_config(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.TritonGemmConfigsProto.config)
  return _internal_mutable_config()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>* PROTOBUF_NONNULL TritonGemmConfigsProto::mutable_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.TritonGemmConfigsProto.config)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_config();
}
inline const ::xla::AutotuneResult_TritonGemmKey& TritonGemmConfigsProto::config(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.TritonGemmConfigsProto.config)
  return _internal_config().Get(index);
}
inline ::xla::AutotuneResult_TritonGemmKey* PROTOBUF_NONNULL TritonGemmConfigsProto::add_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AutotuneResult_TritonGemmKey* _add = _internal_mutable_config()->Add();
  // @@protoc_insertion_point(field_add:xla.TritonGemmConfigsProto.config)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>& TritonGemmConfigsProto::config() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.TritonGemmConfigsProto.config)
  return _internal_config();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>&
TritonGemmConfigsProto::_internal_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.config_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult_TritonGemmKey>* PROTOBUF_NONNULL
TritonGemmConfigsProto::_internal_mutable_config() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.config_;
}

// -------------------------------------------------------------------

// AutotuningLog

// .google.protobuf.Any instr = 1;
inline bool AutotuningLog::has_instr() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.instr_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& AutotuningLog::_internal_instr() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.instr_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Any&>(::google::protobuf::_Any_default_instance_);
}
inline const ::google::protobuf::Any& AutotuningLog::instr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.instr)
  return _internal_instr();
}
inline void AutotuningLog::unsafe_arena_set_allocated_instr(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.instr_);
  }
  _impl_.instr_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.instr)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE AutotuningLog::release_instr() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::google::protobuf::Any* released = _impl_.instr_;
  _impl_.instr_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE AutotuningLog::unsafe_arena_release_instr() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.instr)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::google::protobuf::Any* temp = _impl_.instr_;
  _impl_.instr_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_instr() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.instr_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.instr_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.instr_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AutotuningLog::mutable_instr()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::google::protobuf::Any* _msg = _internal_mutable_instr();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.instr)
  return _msg;
}
inline void AutotuningLog::set_allocated_instr(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.instr_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _impl_.instr_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.instr)
}

// repeated .xla.AutotuneResult results = 2;
inline int AutotuningLog::_internal_results_size() const {
  return _internal_results().size();
}
inline int AutotuningLog::results_size() const {
  return _internal_results_size();
}
inline void AutotuningLog::clear_results() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.results_.Clear();
}
inline ::xla::AutotuneResult* PROTOBUF_NONNULL AutotuningLog::mutable_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.results)
  return _internal_mutable_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* PROTOBUF_NONNULL AutotuningLog::mutable_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.AutotuningLog.results)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_results();
}
inline const ::xla::AutotuneResult& AutotuningLog::results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.results)
  return _internal_results().Get(index);
}
inline ::xla::AutotuneResult* PROTOBUF_NONNULL AutotuningLog::add_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AutotuneResult* _add = _internal_mutable_results()->Add();
  // @@protoc_insertion_point(field_add:xla.AutotuningLog.results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>& AutotuningLog::results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.AutotuningLog.results)
  return _internal_results();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>&
AutotuningLog::_internal_results() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.results_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* PROTOBUF_NONNULL
AutotuningLog::_internal_mutable_results() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.results_;
}

// .xla.CudnnVersion cudnn_version = 3;
inline bool AutotuningLog::has_cudnn_version() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.cudnn_version_ != nullptr);
  return value;
}
inline void AutotuningLog::clear_cudnn_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cudnn_version_ != nullptr) _impl_.cudnn_version_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const ::xla::CudnnVersion& AutotuningLog::_internal_cudnn_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::CudnnVersion* p = _impl_.cudnn_version_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::CudnnVersion&>(::xla::_CudnnVersion_default_instance_);
}
inline const ::xla::CudnnVersion& AutotuningLog::cudnn_version() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.cudnn_version)
  return _internal_cudnn_version();
}
inline void AutotuningLog::unsafe_arena_set_allocated_cudnn_version(
    ::xla::CudnnVersion* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cudnn_version_);
  }
  _impl_.cudnn_version_ = reinterpret_cast<::xla::CudnnVersion*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.cudnn_version)
}
inline ::xla::CudnnVersion* PROTOBUF_NULLABLE AutotuningLog::release_cudnn_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::CudnnVersion* released = _impl_.cudnn_version_;
  _impl_.cudnn_version_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::CudnnVersion* PROTOBUF_NULLABLE AutotuningLog::unsafe_arena_release_cudnn_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.cudnn_version)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::CudnnVersion* temp = _impl_.cudnn_version_;
  _impl_.cudnn_version_ = nullptr;
  return temp;
}
inline ::xla::CudnnVersion* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_cudnn_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cudnn_version_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::CudnnVersion>(GetArena());
    _impl_.cudnn_version_ = reinterpret_cast<::xla::CudnnVersion*>(p);
  }
  return _impl_.cudnn_version_;
}
inline ::xla::CudnnVersion* PROTOBUF_NONNULL AutotuningLog::mutable_cudnn_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::CudnnVersion* _msg = _internal_mutable_cudnn_version();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.cudnn_version)
  return _msg;
}
inline void AutotuningLog::set_allocated_cudnn_version(::xla::CudnnVersion* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cudnn_version_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }

  _impl_.cudnn_version_ = reinterpret_cast<::xla::CudnnVersion*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.cudnn_version)
}

// .xla.ComputeCapability compute_capability = 4;
inline bool AutotuningLog::has_compute_capability() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.compute_capability_ != nullptr);
  return value;
}
inline void AutotuningLog::clear_compute_capability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.compute_capability_ != nullptr) _impl_.compute_capability_->Clear();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline const ::xla::ComputeCapability& AutotuningLog::_internal_compute_capability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ComputeCapability* p = _impl_.compute_capability_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ComputeCapability&>(::xla::_ComputeCapability_default_instance_);
}
inline const ::xla::ComputeCapability& AutotuningLog::compute_capability() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.compute_capability)
  return _internal_compute_capability();
}
inline void AutotuningLog::unsafe_arena_set_allocated_compute_capability(
    ::xla::ComputeCapability* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.compute_capability_);
  }
  _impl_.compute_capability_ = reinterpret_cast<::xla::ComputeCapability*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.compute_capability)
}
inline ::xla::ComputeCapability* PROTOBUF_NULLABLE AutotuningLog::release_compute_capability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::ComputeCapability* released = _impl_.compute_capability_;
  _impl_.compute_capability_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ComputeCapability* PROTOBUF_NULLABLE AutotuningLog::unsafe_arena_release_compute_capability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.compute_capability)

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::ComputeCapability* temp = _impl_.compute_capability_;
  _impl_.compute_capability_ = nullptr;
  return temp;
}
inline ::xla::ComputeCapability* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_compute_capability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.compute_capability_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ComputeCapability>(GetArena());
    _impl_.compute_capability_ = reinterpret_cast<::xla::ComputeCapability*>(p);
  }
  return _impl_.compute_capability_;
}
inline ::xla::ComputeCapability* PROTOBUF_NONNULL AutotuningLog::mutable_compute_capability()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::xla::ComputeCapability* _msg = _internal_mutable_compute_capability();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.compute_capability)
  return _msg;
}
inline void AutotuningLog::set_allocated_compute_capability(::xla::ComputeCapability* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.compute_capability_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }

  _impl_.compute_capability_ = reinterpret_cast<::xla::ComputeCapability*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.compute_capability)
}

// string device_pci_bus_id = 5;
inline void AutotuningLog::clear_device_pci_bus_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_pci_bus_id_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& AutotuningLog::device_pci_bus_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.device_pci_bus_id)
  return _internal_device_pci_bus_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_device_pci_bus_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.device_pci_bus_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.device_pci_bus_id)
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::mutable_device_pci_bus_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_device_pci_bus_id();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.device_pci_bus_id)
  return _s;
}
inline const ::std::string& AutotuningLog::_internal_device_pci_bus_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_pci_bus_id_.Get();
}
inline void AutotuningLog::_internal_set_device_pci_bus_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.device_pci_bus_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_device_pci_bus_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.device_pci_bus_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuningLog::release_device_pci_bus_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.device_pci_bus_id)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.device_pci_bus_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.device_pci_bus_id_.Set("", GetArena());
  }
  return released;
}
inline void AutotuningLog::set_allocated_device_pci_bus_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.device_pci_bus_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.device_pci_bus_id_.IsDefault()) {
    _impl_.device_pci_bus_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.device_pci_bus_id)
}

// string blas_version = 6;
inline void AutotuningLog::clear_blas_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.blas_version_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::std::string& AutotuningLog::blas_version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.blas_version)
  return _internal_blas_version();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_blas_version(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.blas_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.blas_version)
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::mutable_blas_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_blas_version();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.blas_version)
  return _s;
}
inline const ::std::string& AutotuningLog::_internal_blas_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.blas_version_.Get();
}
inline void AutotuningLog::_internal_set_blas_version(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.blas_version_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_blas_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.blas_version_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuningLog::release_blas_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.blas_version)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.blas_version_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.blas_version_.Set("", GetArena());
  }
  return released;
}
inline void AutotuningLog::set_allocated_blas_version(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.blas_version_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.blas_version_.IsDefault()) {
    _impl_.blas_version_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.blas_version)
}

// string fusion_name = 7;
inline void AutotuningLog::clear_fusion_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::std::string& AutotuningLog::fusion_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.fusion_name)
  return _internal_fusion_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_fusion_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.fusion_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.fusion_name)
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::mutable_fusion_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_fusion_name();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.fusion_name)
  return _s;
}
inline const ::std::string& AutotuningLog::_internal_fusion_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fusion_name_.Get();
}
inline void AutotuningLog::_internal_set_fusion_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.fusion_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_fusion_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.fusion_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuningLog::release_fusion_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.fusion_name)
  if ((_impl_._has_bits_[0] & 0x00000004u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* released = _impl_.fusion_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.fusion_name_.Set("", GetArena());
  }
  return released;
}
inline void AutotuningLog::set_allocated_fusion_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  _impl_.fusion_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.fusion_name_.IsDefault()) {
    _impl_.fusion_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.fusion_name)
}

// int64 fusion_count = 8;
inline void AutotuningLog::clear_fusion_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_count_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline ::int64_t AutotuningLog::fusion_count() const {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.fusion_count)
  return _internal_fusion_count();
}
inline void AutotuningLog::set_fusion_count(::int64_t value) {
  _internal_set_fusion_count(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.fusion_count)
}
inline ::int64_t AutotuningLog::_internal_fusion_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fusion_count_;
}
inline void AutotuningLog::_internal_set_fusion_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_count_ = value;
}

// string selected_backend = 9;
inline void AutotuningLog::clear_selected_backend() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.selected_backend_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const ::std::string& AutotuningLog::selected_backend() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AutotuningLog.selected_backend)
  return _internal_selected_backend();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_selected_backend(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.selected_backend_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.selected_backend)
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::mutable_selected_backend()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_selected_backend();
  // @@protoc_insertion_point(field_mutable:xla.AutotuningLog.selected_backend)
  return _s;
}
inline const ::std::string& AutotuningLog::_internal_selected_backend() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.selected_backend_.Get();
}
inline void AutotuningLog::_internal_set_selected_backend(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.selected_backend_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AutotuningLog::_internal_mutable_selected_backend() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  return _impl_.selected_backend_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AutotuningLog::release_selected_backend() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.selected_backend)
  if ((_impl_._has_bits_[0] & 0x00000008u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000008u;
  auto* released = _impl_.selected_backend_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.selected_backend_.Set("", GetArena());
  }
  return released;
}
inline void AutotuningLog::set_allocated_selected_backend(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  _impl_.selected_backend_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.selected_backend_.IsDefault()) {
    _impl_.selected_backend_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.AutotuningLog.selected_backend)
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace xla


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::xla::AutotuneResult_FailureKind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::AutotuneResult_FailureKind>() {
  return ::xla::AutotuneResult_FailureKind_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // xla_2fautotuning_2eproto_2epb_2eh
