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

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fautotuning_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fautotuning_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 5028003
#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/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 {
class AnyMetadata;
}  // 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[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_xla_2fautotuning_2eproto;
namespace xla {
class AutotuneResult;
struct AutotuneResultDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResultDefaultTypeInternal _AutotuneResult_default_instance_;
class AutotuneResult_ConvKey;
struct AutotuneResult_ConvKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_ConvKeyDefaultTypeInternal _AutotuneResult_ConvKey_default_instance_;
class AutotuneResult_CudaConvPlanKey;
struct AutotuneResult_CudaConvPlanKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_CudaConvPlanKeyDefaultTypeInternal _AutotuneResult_CudaConvPlanKey_default_instance_;
class AutotuneResult_CustomKernelFusionKey;
struct AutotuneResult_CustomKernelFusionKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_CustomKernelFusionKeyDefaultTypeInternal _AutotuneResult_CustomKernelFusionKey_default_instance_;
class AutotuneResult_FailureResult;
struct AutotuneResult_FailureResultDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_FailureResultDefaultTypeInternal _AutotuneResult_FailureResult_default_instance_;
class AutotuneResult_GemmKey;
struct AutotuneResult_GemmKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_GemmKeyDefaultTypeInternal _AutotuneResult_GemmKey_default_instance_;
class AutotuneResult_TritonGemmKey;
struct AutotuneResult_TritonGemmKeyDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuneResult_TritonGemmKeyDefaultTypeInternal _AutotuneResult_TritonGemmKey_default_instance_;
class AutotuningLog;
struct AutotuningLogDefaultTypeInternal;
PROTOBUF_EXPORT extern AutotuningLogDefaultTypeInternal _AutotuningLog_default_instance_;
class ComputeCapability;
struct ComputeCapabilityDefaultTypeInternal;
PROTOBUF_EXPORT extern ComputeCapabilityDefaultTypeInternal _ComputeCapability_default_instance_;
class CudnnVersion;
struct CudnnVersionDefaultTypeInternal;
PROTOBUF_EXPORT extern CudnnVersionDefaultTypeInternal _CudnnVersion_default_instance_;
}  // namespace xla
namespace google {
namespace protobuf {
}  // 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 bool AutotuneResult_FailureKind_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t AutotuneResult_FailureKind_internal_data_[];
constexpr AutotuneResult_FailureKind AutotuneResult_FailureKind_FailureKind_MIN = static_cast<AutotuneResult_FailureKind>(0);
constexpr AutotuneResult_FailureKind AutotuneResult_FailureKind_FailureKind_MAX = static_cast<AutotuneResult_FailureKind>(3);
constexpr int AutotuneResult_FailureKind_FailureKind_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CudnnVersion& default_instance() {
    return *internal_default_instance();
  }
  static inline const CudnnVersion* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CudnnVersion* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  CudnnVersion* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(CudnnVersion* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.CudnnVersion"; }

 protected:
  explicit CudnnVersion(::google::protobuf::Arena* arena);
  CudnnVersion(::google::protobuf::Arena* arena, const CudnnVersion& from);
  CudnnVersion(::google::protobuf::Arena* arena, CudnnVersion&& from) noexcept
      : CudnnVersion(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const CudnnVersion& from_msg);
    ::int32_t major_;
    ::int32_t minor_;
    ::int32_t patch_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ComputeCapability final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ComputeCapability) */ {
 public:
  inline ComputeCapability() : ComputeCapability(nullptr) {}
  ~ComputeCapability() PROTOBUF_FINAL;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ComputeCapability& default_instance() {
    return *internal_default_instance();
  }
  static inline const ComputeCapability* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ComputeCapability* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ComputeCapability* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ComputeCapability* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.ComputeCapability"; }

 protected:
  explicit ComputeCapability(::google::protobuf::Arena* arena);
  ComputeCapability(::google::protobuf::Arena* arena, const ComputeCapability& from);
  ComputeCapability(::google::protobuf::Arena* arena, ComputeCapability&& from) noexcept
      : ComputeCapability(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ComputeCapability& from_msg);
    ::int32_t major_;
    ::int32_t minor_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_TritonGemmKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const AutotuneResult_TritonGemmKey* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_TritonGemmKey* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutotuneResult_TritonGemmKey* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_TritonGemmKey* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.TritonGemmKey"; }

 protected:
  explicit AutotuneResult_TritonGemmKey(::google::protobuf::Arena* arena);
  AutotuneResult_TritonGemmKey(::google::protobuf::Arena* arena, const AutotuneResult_TritonGemmKey& from);
  AutotuneResult_TritonGemmKey(::google::protobuf::Arena* arena, AutotuneResult_TritonGemmKey&& from) noexcept
      : AutotuneResult_TritonGemmKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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,
  };
  // 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:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.TritonGemmKey)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 8, 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_TritonGemmKey& from_msg);
    ::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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_GemmKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const AutotuneResult_GemmKey* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_GemmKey* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutotuneResult_GemmKey* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_GemmKey* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.GemmKey"; }

 protected:
  explicit AutotuneResult_GemmKey(::google::protobuf::Arena* arena);
  AutotuneResult_GemmKey(::google::protobuf::Arena* arena, const AutotuneResult_GemmKey& from);
  AutotuneResult_GemmKey(::google::protobuf::Arena* arena, AutotuneResult_GemmKey&& from) noexcept
      : AutotuneResult_GemmKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

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

  // accessors -------------------------------------------------------
  enum : int {
    kAlgorithmFieldNumber = 1,
  };
  // 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:
  // @@protoc_insertion_point(class_scope:xla.AutotuneResult.GemmKey)
 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_GemmKey& from_msg);
    ::int64_t algorithm_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_CustomKernelFusionKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const AutotuneResult_CustomKernelFusionKey* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_CustomKernelFusionKey* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutotuneResult_CustomKernelFusionKey* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_CustomKernelFusionKey* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.CustomKernelFusionKey"; }

 protected:
  explicit AutotuneResult_CustomKernelFusionKey(::google::protobuf::Arena* arena);
  AutotuneResult_CustomKernelFusionKey(::google::protobuf::Arena* arena, const AutotuneResult_CustomKernelFusionKey& from);
  AutotuneResult_CustomKernelFusionKey(::google::protobuf::Arena* arena, AutotuneResult_CustomKernelFusionKey&& from) noexcept
      : AutotuneResult_CustomKernelFusionKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_CustomKernelFusionKey& from_msg);
    ::int64_t kernel_index_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_CudaConvPlanKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const AutotuneResult_CudaConvPlanKey* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_CudaConvPlanKey* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutotuneResult_CudaConvPlanKey* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_CudaConvPlanKey* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.CudaConvPlanKey"; }

 protected:
  explicit AutotuneResult_CudaConvPlanKey(::google::protobuf::Arena* arena);
  AutotuneResult_CudaConvPlanKey(::google::protobuf::Arena* arena, const AutotuneResult_CudaConvPlanKey& from);
  AutotuneResult_CudaConvPlanKey(::google::protobuf::Arena* arena, AutotuneResult_CudaConvPlanKey&& from) noexcept
      : AutotuneResult_CudaConvPlanKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* mutable_exec_plan_id();
  PROTOBUF_NODISCARD std::string* release_exec_plan_id();
  void set_allocated_exec_plan_id(std::string* value);

  private:
  const std::string& _internal_exec_plan_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_exec_plan_id(
      const std::string& value);
  std::string* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_CudaConvPlanKey& from_msg);
    ::google::protobuf::internal::ArenaStringPtr exec_plan_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AutotuneResult_ConvKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const AutotuneResult_ConvKey* internal_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* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AutotuneResult_ConvKey* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutotuneResult_ConvKey* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_ConvKey* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.ConvKey"; }

 protected:
  explicit AutotuneResult_ConvKey(::google::protobuf::Arena* arena);
  AutotuneResult_ConvKey(::google::protobuf::Arena* arena, const AutotuneResult_ConvKey& from);
  AutotuneResult_ConvKey(::google::protobuf::Arena* arena, AutotuneResult_ConvKey&& from) noexcept
      : AutotuneResult_ConvKey(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_ConvKey& from_msg);
    ::int64_t algorithm_;
    bool tensor_ops_enabled_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

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

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

  AutotuneResult_FailureResult* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult_FailureResult* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult.FailureResult"; }

 protected:
  explicit AutotuneResult_FailureResult(::google::protobuf::Arena* arena);
  AutotuneResult_FailureResult(::google::protobuf::Arena* arena, const AutotuneResult_FailureResult& from);
  AutotuneResult_FailureResult(::google::protobuf::Arena* arena, AutotuneResult_FailureResult&& from) noexcept
      : AutotuneResult_FailureResult(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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* mutable_msg();
  PROTOBUF_NODISCARD std::string* release_msg();
  void set_allocated_msg(std::string* value);

  private:
  const std::string& _internal_msg() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_msg(
      const std::string& value);
  std::string* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_ConvKey* release_reference_conv();
  ::xla::AutotuneResult_ConvKey* mutable_reference_conv();
  void set_allocated_reference_conv(::xla::AutotuneResult_ConvKey* value);
  void unsafe_arena_set_allocated_reference_conv(::xla::AutotuneResult_ConvKey* value);
  ::xla::AutotuneResult_ConvKey* unsafe_arena_release_reference_conv();

  private:
  const ::xla::AutotuneResult_ConvKey& _internal_reference_conv() const;
  ::xla::AutotuneResult_ConvKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_GemmKey* release_reference_gemm();
  ::xla::AutotuneResult_GemmKey* mutable_reference_gemm();
  void set_allocated_reference_gemm(::xla::AutotuneResult_GemmKey* value);
  void unsafe_arena_set_allocated_reference_gemm(::xla::AutotuneResult_GemmKey* value);
  ::xla::AutotuneResult_GemmKey* unsafe_arena_release_reference_gemm();

  private:
  const ::xla::AutotuneResult_GemmKey& _internal_reference_gemm() const;
  ::xla::AutotuneResult_GemmKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_CudaConvPlanKey* release_reference_cuda_conv_plan();
  ::xla::AutotuneResult_CudaConvPlanKey* mutable_reference_cuda_conv_plan();
  void set_allocated_reference_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* value);
  void unsafe_arena_set_allocated_reference_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* value);
  ::xla::AutotuneResult_CudaConvPlanKey* unsafe_arena_release_reference_cuda_conv_plan();

  private:
  const ::xla::AutotuneResult_CudaConvPlanKey& _internal_reference_cuda_conv_plan() const;
  ::xla::AutotuneResult_CudaConvPlanKey* _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;
  PROTOBUF_NODISCARD ::stream_executor::dnn::AlgorithmProto* release_reference_algorithm();
  ::stream_executor::dnn::AlgorithmProto* mutable_reference_algorithm();
  void set_allocated_reference_algorithm(::stream_executor::dnn::AlgorithmProto* value);
  void unsafe_arena_set_allocated_reference_algorithm(::stream_executor::dnn::AlgorithmProto* value);
  ::stream_executor::dnn::AlgorithmProto* unsafe_arena_release_reference_algorithm();

  private:
  const ::stream_executor::dnn::AlgorithmProto& _internal_reference_algorithm() const;
  ::stream_executor::dnn::AlgorithmProto* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult_FailureResult& from_msg);
    ::google::protobuf::internal::ArenaStringPtr msg_;
    ::int64_t buffer_address_;
    int kind_;
    union KeyUnion {
      constexpr KeyUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::xla::AutotuneResult_ConvKey* reference_conv_;
      ::xla::AutotuneResult_GemmKey* reference_gemm_;
      ::xla::AutotuneResult_CudaConvPlanKey* reference_cuda_conv_plan_;
      ::stream_executor::dnn::AlgorithmProto* reference_algorithm_;
    } key_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuneResult final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuneResult) */ {
 public:
  inline AutotuneResult() : AutotuneResult(nullptr) {}
  ~AutotuneResult() PROTOBUF_FINAL;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

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

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

  AutotuneResult* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuneResult* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuneResult"; }

 protected:
  explicit AutotuneResult(::google::protobuf::Arena* arena);
  AutotuneResult(::google::protobuf::Arena* arena, const AutotuneResult& from);
  AutotuneResult(::google::protobuf::Arena* arena, AutotuneResult&& from) noexcept
      : AutotuneResult(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::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 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* 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* 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,
  };
  // .xla.AutotuneResult.FailureResult failure = 7;
  bool has_failure() const;
  void clear_failure() ;
  const ::xla::AutotuneResult_FailureResult& failure() const;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_FailureResult* release_failure();
  ::xla::AutotuneResult_FailureResult* mutable_failure();
  void set_allocated_failure(::xla::AutotuneResult_FailureResult* value);
  void unsafe_arena_set_allocated_failure(::xla::AutotuneResult_FailureResult* value);
  ::xla::AutotuneResult_FailureResult* unsafe_arena_release_failure();

  private:
  const ::xla::AutotuneResult_FailureResult& _internal_failure() const;
  ::xla::AutotuneResult_FailureResult* _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;
  PROTOBUF_NODISCARD ::google::protobuf::Duration* release_run_time();
  ::google::protobuf::Duration* mutable_run_time();
  void set_allocated_run_time(::google::protobuf::Duration* value);
  void unsafe_arena_set_allocated_run_time(::google::protobuf::Duration* value);
  ::google::protobuf::Duration* unsafe_arena_release_run_time();

  private:
  const ::google::protobuf::Duration& _internal_run_time() const;
  ::google::protobuf::Duration* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_ConvKey* release_conv();
  ::xla::AutotuneResult_ConvKey* mutable_conv();
  void set_allocated_conv(::xla::AutotuneResult_ConvKey* value);
  void unsafe_arena_set_allocated_conv(::xla::AutotuneResult_ConvKey* value);
  ::xla::AutotuneResult_ConvKey* unsafe_arena_release_conv();

  private:
  const ::xla::AutotuneResult_ConvKey& _internal_conv() const;
  ::xla::AutotuneResult_ConvKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_GemmKey* release_gemm();
  ::xla::AutotuneResult_GemmKey* mutable_gemm();
  void set_allocated_gemm(::xla::AutotuneResult_GemmKey* value);
  void unsafe_arena_set_allocated_gemm(::xla::AutotuneResult_GemmKey* value);
  ::xla::AutotuneResult_GemmKey* unsafe_arena_release_gemm();

  private:
  const ::xla::AutotuneResult_GemmKey& _internal_gemm() const;
  ::xla::AutotuneResult_GemmKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_TritonGemmKey* release_triton();
  ::xla::AutotuneResult_TritonGemmKey* mutable_triton();
  void set_allocated_triton(::xla::AutotuneResult_TritonGemmKey* value);
  void unsafe_arena_set_allocated_triton(::xla::AutotuneResult_TritonGemmKey* value);
  ::xla::AutotuneResult_TritonGemmKey* unsafe_arena_release_triton();

  private:
  const ::xla::AutotuneResult_TritonGemmKey& _internal_triton() const;
  ::xla::AutotuneResult_TritonGemmKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_CudaConvPlanKey* release_cuda_conv_plan();
  ::xla::AutotuneResult_CudaConvPlanKey* mutable_cuda_conv_plan();
  void set_allocated_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* value);
  void unsafe_arena_set_allocated_cuda_conv_plan(::xla::AutotuneResult_CudaConvPlanKey* value);
  ::xla::AutotuneResult_CudaConvPlanKey* unsafe_arena_release_cuda_conv_plan();

  private:
  const ::xla::AutotuneResult_CudaConvPlanKey& _internal_cuda_conv_plan() const;
  ::xla::AutotuneResult_CudaConvPlanKey* _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;
  PROTOBUF_NODISCARD ::xla::AutotuneResult_CustomKernelFusionKey* release_custom_kernel_fusion();
  ::xla::AutotuneResult_CustomKernelFusionKey* mutable_custom_kernel_fusion();
  void set_allocated_custom_kernel_fusion(::xla::AutotuneResult_CustomKernelFusionKey* value);
  void unsafe_arena_set_allocated_custom_kernel_fusion(::xla::AutotuneResult_CustomKernelFusionKey* value);
  ::xla::AutotuneResult_CustomKernelFusionKey* unsafe_arena_release_custom_kernel_fusion();

  private:
  const ::xla::AutotuneResult_CustomKernelFusionKey& _internal_custom_kernel_fusion() const;
  ::xla::AutotuneResult_CustomKernelFusionKey* _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;
  PROTOBUF_NODISCARD ::stream_executor::dnn::AlgorithmProto* release_algorithm();
  ::stream_executor::dnn::AlgorithmProto* mutable_algorithm();
  void set_allocated_algorithm(::stream_executor::dnn::AlgorithmProto* value);
  void unsafe_arena_set_allocated_algorithm(::stream_executor::dnn::AlgorithmProto* value);
  ::stream_executor::dnn::AlgorithmProto* unsafe_arena_release_algorithm();

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

  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();
  inline bool has_key() const;
  inline void clear_has_key();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 9, 8,
      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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuneResult& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::AutotuneResult_FailureResult* failure_;
    ::google::protobuf::Duration* run_time_;
    ::int64_t scratch_bytes_;
    union KeyUnion {
      constexpr KeyUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::xla::AutotuneResult_ConvKey* conv_;
      ::xla::AutotuneResult_GemmKey* gemm_;
      ::xla::AutotuneResult_TritonGemmKey* triton_;
      ::xla::AutotuneResult_CudaConvPlanKey* cuda_conv_plan_;
      ::xla::AutotuneResult_CustomKernelFusionKey* custom_kernel_fusion_;
      ::stream_executor::dnn::AlgorithmProto* algorithm_;
    } key_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AutotuningLog final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.AutotuningLog) */ {
 public:
  inline AutotuningLog() : AutotuningLog(nullptr) {}
  ~AutotuningLog() PROTOBUF_FINAL;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      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* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

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

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

  AutotuningLog* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    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* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(AutotuningLog* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.AutotuningLog"; }

 protected:
  explicit AutotuningLog(::google::protobuf::Arena* arena);
  AutotuningLog(::google::protobuf::Arena* arena, const AutotuningLog& from);
  AutotuningLog(::google::protobuf::Arena* arena, AutotuningLog&& from) noexcept
      : AutotuningLog(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

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

  // accessors -------------------------------------------------------
  enum : int {
    kResultsFieldNumber = 2,
    kDevicePciBusIdFieldNumber = 5,
    kBlasVersionFieldNumber = 6,
    kFusionNameFieldNumber = 7,
    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* mutable_results(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* mutable_results();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>& _internal_results() const;
  ::google::protobuf::RepeatedPtrField<::xla::AutotuneResult>* _internal_mutable_results();
  public:
  const ::xla::AutotuneResult& results(int index) const;
  ::xla::AutotuneResult* 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* mutable_device_pci_bus_id();
  PROTOBUF_NODISCARD std::string* release_device_pci_bus_id();
  void set_allocated_device_pci_bus_id(std::string* value);

  private:
  const std::string& _internal_device_pci_bus_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_device_pci_bus_id(
      const std::string& value);
  std::string* _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* mutable_blas_version();
  PROTOBUF_NODISCARD std::string* release_blas_version();
  void set_allocated_blas_version(std::string* value);

  private:
  const std::string& _internal_blas_version() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_blas_version(
      const std::string& value);
  std::string* _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* mutable_fusion_name();
  PROTOBUF_NODISCARD std::string* release_fusion_name();
  void set_allocated_fusion_name(std::string* value);

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

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

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

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

  private:
  const ::xla::CudnnVersion& _internal_cudnn_version() const;
  ::xla::CudnnVersion* _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;
  PROTOBUF_NODISCARD ::xla::ComputeCapability* release_compute_capability();
  ::xla::ComputeCapability* mutable_compute_capability();
  void set_allocated_compute_capability(::xla::ComputeCapability* value);
  void unsafe_arena_set_allocated_compute_capability(::xla::ComputeCapability* value);
  ::xla::ComputeCapability* unsafe_arena_release_compute_capability();

  private:
  const ::xla::ComputeCapability& _internal_compute_capability() const;
  ::xla::ComputeCapability* _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<
      3, 8, 4,
      74, 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const AutotuningLog& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::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::Any* instr_;
    ::xla::CudnnVersion* cudnn_version_;
    ::xla::ComputeCapability* compute_capability_;
    ::int64_t fusion_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fautotuning_2eproto;
};

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




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


#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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void AutotuneResult_FailureResult::set_msg(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.msg_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuneResult.FailureResult.msg)
}
inline std::string* 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_.msg_.Set(value, GetArena());
}
inline std::string* AutotuneResult_FailureResult::_internal_mutable_msg() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.msg_.Mutable( GetArena());
}
inline std::string* AutotuneResult_FailureResult::release_msg() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.msg)
  return _impl_.msg_.Release();
}
inline void AutotuneResult_FailureResult::set_allocated_msg(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.msg_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.msg_.IsDefault()) {
          _impl_.msg_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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* AutotuneResult_FailureResult::release_reference_conv() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_conv)
  if (key_case() == kReferenceConv) {
    clear_has_key();
    auto* temp = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_conv)
}
inline ::xla::AutotuneResult_ConvKey* AutotuneResult_FailureResult::_internal_mutable_reference_conv() {
  if (key_case() != kReferenceConv) {
    clear_key();
    set_has_reference_conv();
    _impl_.key_.reference_conv_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_ConvKey>(GetArena());
  }
  return _impl_.key_.reference_conv_;
}
inline ::xla::AutotuneResult_ConvKey* 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* AutotuneResult_FailureResult::release_reference_gemm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_gemm)
  if (key_case() == kReferenceGemm) {
    clear_has_key();
    auto* temp = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_gemm)
}
inline ::xla::AutotuneResult_GemmKey* AutotuneResult_FailureResult::_internal_mutable_reference_gemm() {
  if (key_case() != kReferenceGemm) {
    clear_key();
    set_has_reference_gemm();
    _impl_.key_.reference_gemm_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_GemmKey>(GetArena());
  }
  return _impl_.key_.reference_gemm_;
}
inline ::xla::AutotuneResult_GemmKey* 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* 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 = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_cuda_conv_plan)
}
inline ::xla::AutotuneResult_CudaConvPlanKey* 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_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CudaConvPlanKey>(GetArena());
  }
  return _impl_.key_.reference_cuda_conv_plan_;
}
inline ::xla::AutotuneResult_CudaConvPlanKey* 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* AutotuneResult_FailureResult::release_reference_algorithm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.FailureResult.reference_algorithm)
  if (key_case() == kReferenceAlgorithm) {
    clear_has_key();
    auto* temp = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.FailureResult.reference_algorithm)
}
inline ::stream_executor::dnn::AlgorithmProto* AutotuneResult_FailureResult::_internal_mutable_reference_algorithm() {
  if (key_case() != kReferenceAlgorithm) {
    clear_key();
    set_has_reference_algorithm();
    _impl_.key_.reference_algorithm_ =
        ::google::protobuf::Message::DefaultConstruct<::stream_executor::dnn::AlgorithmProto>(GetArena());
  }
  return _impl_.key_.reference_algorithm_;
}
inline ::stream_executor::dnn::AlgorithmProto* 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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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};
}
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);
  // @@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;
}

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

// 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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void AutotuneResult_CudaConvPlanKey::set_exec_plan_id(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _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* 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_.exec_plan_id_.Set(value, GetArena());
}
inline std::string* AutotuneResult_CudaConvPlanKey::_internal_mutable_exec_plan_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.exec_plan_id_.Mutable( GetArena());
}
inline std::string* AutotuneResult_CudaConvPlanKey::release_exec_plan_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.CudaConvPlanKey.exec_plan_id)
  return _impl_.exec_plan_id_.Release();
}
inline void AutotuneResult_CudaConvPlanKey::set_allocated_exec_plan_id(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exec_plan_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.exec_plan_id_.IsDefault()) {
          _impl_.exec_plan_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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;
}

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

// AutotuneResult_CustomKernelFusionKey

// int64 kernel_index = 1;
inline void AutotuneResult_CustomKernelFusionKey::clear_kernel_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_index_ = ::int64_t{0};
}
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);
  // @@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

// int64 scratch_bytes = 8;
inline void AutotuneResult::clear_scratch_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scratch_bytes_ = ::int64_t{0};
}
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);
  // @@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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Duration* 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* 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* 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* 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::MessageLite*>(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* 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* AutotuneResult::release_failure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::AutotuneResult_FailureResult* released = _impl_.failure_;
  _impl_.failure_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::AutotuneResult_FailureResult* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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* AutotuneResult::release_conv() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.conv)
  if (key_case() == kConv) {
    clear_has_key();
    auto* temp = _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 ? *_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* AutotuneResult::unsafe_arena_release_conv() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.conv)
  if (key_case() == kConv) {
    clear_has_key();
    auto* temp = _impl_.key_.conv_;
    _impl_.key_.conv_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_conv(::xla::AutotuneResult_ConvKey* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.conv)
}
inline ::xla::AutotuneResult_ConvKey* AutotuneResult::_internal_mutable_conv() {
  if (key_case() != kConv) {
    clear_key();
    set_has_conv();
    _impl_.key_.conv_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_ConvKey>(GetArena());
  }
  return _impl_.key_.conv_;
}
inline ::xla::AutotuneResult_ConvKey* 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* AutotuneResult::release_gemm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.gemm)
  if (key_case() == kGemm) {
    clear_has_key();
    auto* temp = _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 ? *_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* AutotuneResult::unsafe_arena_release_gemm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.gemm)
  if (key_case() == kGemm) {
    clear_has_key();
    auto* temp = _impl_.key_.gemm_;
    _impl_.key_.gemm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_gemm(::xla::AutotuneResult_GemmKey* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.gemm)
}
inline ::xla::AutotuneResult_GemmKey* AutotuneResult::_internal_mutable_gemm() {
  if (key_case() != kGemm) {
    clear_key();
    set_has_gemm();
    _impl_.key_.gemm_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_GemmKey>(GetArena());
  }
  return _impl_.key_.gemm_;
}
inline ::xla::AutotuneResult_GemmKey* 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* AutotuneResult::release_triton() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.triton)
  if (key_case() == kTriton) {
    clear_has_key();
    auto* temp = _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 ? *_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* AutotuneResult::unsafe_arena_release_triton() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.triton)
  if (key_case() == kTriton) {
    clear_has_key();
    auto* temp = _impl_.key_.triton_;
    _impl_.key_.triton_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_triton(::xla::AutotuneResult_TritonGemmKey* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.triton)
}
inline ::xla::AutotuneResult_TritonGemmKey* AutotuneResult::_internal_mutable_triton() {
  if (key_case() != kTriton) {
    clear_key();
    set_has_triton();
    _impl_.key_.triton_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_TritonGemmKey>(GetArena());
  }
  return _impl_.key_.triton_;
}
inline ::xla::AutotuneResult_TritonGemmKey* 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* AutotuneResult::release_cuda_conv_plan() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.cuda_conv_plan)
  if (key_case() == kCudaConvPlan) {
    clear_has_key();
    auto* temp = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.cuda_conv_plan)
}
inline ::xla::AutotuneResult_CudaConvPlanKey* AutotuneResult::_internal_mutable_cuda_conv_plan() {
  if (key_case() != kCudaConvPlan) {
    clear_key();
    set_has_cuda_conv_plan();
    _impl_.key_.cuda_conv_plan_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CudaConvPlanKey>(GetArena());
  }
  return _impl_.key_.cuda_conv_plan_;
}
inline ::xla::AutotuneResult_CudaConvPlanKey* 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* AutotuneResult::release_custom_kernel_fusion() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.custom_kernel_fusion)
  if (key_case() == kCustomKernelFusion) {
    clear_has_key();
    auto* temp = _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 ? *_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* 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 = _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* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.custom_kernel_fusion)
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* AutotuneResult::_internal_mutable_custom_kernel_fusion() {
  if (key_case() != kCustomKernelFusion) {
    clear_key();
    set_has_custom_kernel_fusion();
    _impl_.key_.custom_kernel_fusion_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::AutotuneResult_CustomKernelFusionKey>(GetArena());
  }
  return _impl_.key_.custom_kernel_fusion_;
}
inline ::xla::AutotuneResult_CustomKernelFusionKey* 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* AutotuneResult::release_algorithm() {
  // @@protoc_insertion_point(field_release:xla.AutotuneResult.algorithm)
  if (key_case() == kAlgorithm) {
    clear_has_key();
    auto* temp = _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 ? *_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* AutotuneResult::unsafe_arena_release_algorithm() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.AutotuneResult.algorithm)
  if (key_case() == kAlgorithm) {
    clear_has_key();
    auto* temp = _impl_.key_.algorithm_;
    _impl_.key_.algorithm_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AutotuneResult::unsafe_arena_set_allocated_algorithm(::stream_executor::dnn::AlgorithmProto* 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_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuneResult.algorithm)
}
inline ::stream_executor::dnn::AlgorithmProto* AutotuneResult::_internal_mutable_algorithm() {
  if (key_case() != kAlgorithm) {
    clear_key();
    set_has_algorithm();
    _impl_.key_.algorithm_ =
        ::google::protobuf::Message::DefaultConstruct<::stream_executor::dnn::AlgorithmProto>(GetArena());
  }
  return _impl_.key_.algorithm_;
}
inline ::stream_executor::dnn::AlgorithmProto* 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;
}

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]);
}
// -------------------------------------------------------------------

// AutotuningLog

// .google.protobuf.Any instr = 1;
inline bool AutotuningLog::has_instr() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 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* 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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.instr)
}
inline ::google::protobuf::Any* AutotuningLog::release_instr() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Any* temp = _impl_.instr_;
  _impl_.instr_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* 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* AutotuningLog::mutable_instr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::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* 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::MessageLite*>(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_.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* 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>* 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* 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>*
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] & 0x00000002u) != 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] &= ~0x00000002u;
}
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* 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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.cudnn_version)
}
inline ::xla::CudnnVersion* AutotuningLog::release_cudnn_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::CudnnVersion* temp = _impl_.cudnn_version_;
  _impl_.cudnn_version_ = nullptr;
  return temp;
}
inline ::xla::CudnnVersion* 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* AutotuningLog::mutable_cudnn_version() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _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] & 0x00000004u) != 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] &= ~0x00000004u;
}
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* 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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AutotuningLog.compute_capability)
}
inline ::xla::ComputeCapability* AutotuningLog::release_compute_capability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ComputeCapability* temp = _impl_.compute_capability_;
  _impl_.compute_capability_ = nullptr;
  return temp;
}
inline ::xla::ComputeCapability* 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* AutotuningLog::mutable_compute_capability() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_device_pci_bus_id(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _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* 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_.device_pci_bus_id_.Set(value, GetArena());
}
inline std::string* AutotuningLog::_internal_mutable_device_pci_bus_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.device_pci_bus_id_.Mutable( GetArena());
}
inline std::string* AutotuningLog::release_device_pci_bus_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.device_pci_bus_id)
  return _impl_.device_pci_bus_id_.Release();
}
inline void AutotuningLog::set_allocated_device_pci_bus_id(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_pci_bus_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.device_pci_bus_id_.IsDefault()) {
          _impl_.device_pci_bus_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_blas_version(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.blas_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.blas_version)
}
inline std::string* 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_.blas_version_.Set(value, GetArena());
}
inline std::string* AutotuningLog::_internal_mutable_blas_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.blas_version_.Mutable( GetArena());
}
inline std::string* AutotuningLog::release_blas_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.blas_version)
  return _impl_.blas_version_.Release();
}
inline void AutotuningLog::set_allocated_blas_version(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.blas_version_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.blas_version_.IsDefault()) {
          _impl_.blas_version_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void AutotuningLog::set_fusion_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.AutotuningLog.fusion_name)
}
inline std::string* 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_.fusion_name_.Set(value, GetArena());
}
inline std::string* AutotuningLog::_internal_mutable_fusion_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.fusion_name_.Mutable( GetArena());
}
inline std::string* AutotuningLog::release_fusion_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AutotuningLog.fusion_name)
  return _impl_.fusion_name_.Release();
}
inline void AutotuningLog::set_allocated_fusion_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.fusion_name_.IsDefault()) {
          _impl_.fusion_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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};
}
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);
  // @@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;
}

#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* 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  // GOOGLE_PROTOBUF_INCLUDED_xla_2fautotuning_2eproto_2epb_2eh
