// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: xla/service/gpu/fusion_process_dump.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3021000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3021009 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.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/unknown_field_set.h>
#include "xla/stream_executor/device_description.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto {
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
namespace xla {
namespace gpu {
class FusionProcessDumpProto;
struct FusionProcessDumpProtoDefaultTypeInternal;
extern FusionProcessDumpProtoDefaultTypeInternal _FusionProcessDumpProto_default_instance_;
class FusionStep;
struct FusionStepDefaultTypeInternal;
extern FusionStepDefaultTypeInternal _FusionStep_default_instance_;
class FusionStep_Fusion;
struct FusionStep_FusionDefaultTypeInternal;
extern FusionStep_FusionDefaultTypeInternal _FusionStep_Fusion_default_instance_;
class FusionStep_ProducerIneligible;
struct FusionStep_ProducerIneligibleDefaultTypeInternal;
extern FusionStep_ProducerIneligibleDefaultTypeInternal _FusionStep_ProducerIneligible_default_instance_;
class FusionStep_UpdatePriority;
struct FusionStep_UpdatePriorityDefaultTypeInternal;
extern FusionStep_UpdatePriorityDefaultTypeInternal _FusionStep_UpdatePriority_default_instance_;
}  // namespace gpu
}  // namespace xla
PROTOBUF_NAMESPACE_OPEN
template<> ::xla::gpu::FusionProcessDumpProto* Arena::CreateMaybeMessage<::xla::gpu::FusionProcessDumpProto>(Arena*);
template<> ::xla::gpu::FusionStep* Arena::CreateMaybeMessage<::xla::gpu::FusionStep>(Arena*);
template<> ::xla::gpu::FusionStep_Fusion* Arena::CreateMaybeMessage<::xla::gpu::FusionStep_Fusion>(Arena*);
template<> ::xla::gpu::FusionStep_ProducerIneligible* Arena::CreateMaybeMessage<::xla::gpu::FusionStep_ProducerIneligible>(Arena*);
template<> ::xla::gpu::FusionStep_UpdatePriority* Arena::CreateMaybeMessage<::xla::gpu::FusionStep_UpdatePriority>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace xla {
namespace gpu {

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

class FusionStep_Fusion final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:xla.gpu.FusionStep.Fusion) */ {
 public:
  inline FusionStep_Fusion() : FusionStep_Fusion(nullptr) {}
  ~FusionStep_Fusion() override;
  explicit PROTOBUF_CONSTEXPR FusionStep_Fusion(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FusionStep_Fusion(const FusionStep_Fusion& from);
  FusionStep_Fusion(FusionStep_Fusion&& from) noexcept
    : FusionStep_Fusion() {
    *this = ::std::move(from);
  }

  inline FusionStep_Fusion& operator=(const FusionStep_Fusion& from) {
    CopyFrom(from);
    return *this;
  }
  inline FusionStep_Fusion& operator=(FusionStep_Fusion&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FusionStep_Fusion& default_instance() {
    return *internal_default_instance();
  }
  static inline const FusionStep_Fusion* internal_default_instance() {
    return reinterpret_cast<const FusionStep_Fusion*>(
               &_FusionStep_Fusion_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(FusionStep_Fusion& a, FusionStep_Fusion& b) {
    a.Swap(&b);
  }
  inline void Swap(FusionStep_Fusion* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FusionStep_Fusion* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  FusionStep_Fusion* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FusionStep_Fusion>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FusionStep_Fusion& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const FusionStep_Fusion& from) {
    FusionStep_Fusion::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FusionStep_Fusion* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "xla.gpu.FusionStep.Fusion";
  }
  protected:
  explicit FusionStep_Fusion(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFusionNameFieldNumber = 1,
    kProducerNameFieldNumber = 2,
    kConsumerNameFieldNumber = 3,
  };
  // string fusion_name = 1;
  void clear_fusion_name();
  const std::string& fusion_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_fusion_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_fusion_name();
  PROTOBUF_NODISCARD std::string* release_fusion_name();
  void set_allocated_fusion_name(std::string* fusion_name);
  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:

  // string producer_name = 2;
  void clear_producer_name();
  const std::string& producer_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_producer_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_producer_name();
  PROTOBUF_NODISCARD std::string* release_producer_name();
  void set_allocated_producer_name(std::string* producer_name);
  private:
  const std::string& _internal_producer_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_producer_name(const std::string& value);
  std::string* _internal_mutable_producer_name();
  public:

  // string consumer_name = 3;
  void clear_consumer_name();
  const std::string& consumer_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_consumer_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_consumer_name();
  PROTOBUF_NODISCARD std::string* release_consumer_name();
  void set_allocated_consumer_name(std::string* consumer_name);
  private:
  const std::string& _internal_consumer_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_consumer_name(const std::string& value);
  std::string* _internal_mutable_consumer_name();
  public:

  // @@protoc_insertion_point(class_scope:xla.gpu.FusionStep.Fusion)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fusion_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr producer_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr consumer_name_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
};
// -------------------------------------------------------------------

class FusionStep_UpdatePriority final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:xla.gpu.FusionStep.UpdatePriority) */ {
 public:
  inline FusionStep_UpdatePriority() : FusionStep_UpdatePriority(nullptr) {}
  ~FusionStep_UpdatePriority() override;
  explicit PROTOBUF_CONSTEXPR FusionStep_UpdatePriority(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FusionStep_UpdatePriority(const FusionStep_UpdatePriority& from);
  FusionStep_UpdatePriority(FusionStep_UpdatePriority&& from) noexcept
    : FusionStep_UpdatePriority() {
    *this = ::std::move(from);
  }

  inline FusionStep_UpdatePriority& operator=(const FusionStep_UpdatePriority& from) {
    CopyFrom(from);
    return *this;
  }
  inline FusionStep_UpdatePriority& operator=(FusionStep_UpdatePriority&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FusionStep_UpdatePriority& default_instance() {
    return *internal_default_instance();
  }
  static inline const FusionStep_UpdatePriority* internal_default_instance() {
    return reinterpret_cast<const FusionStep_UpdatePriority*>(
               &_FusionStep_UpdatePriority_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(FusionStep_UpdatePriority& a, FusionStep_UpdatePriority& b) {
    a.Swap(&b);
  }
  inline void Swap(FusionStep_UpdatePriority* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FusionStep_UpdatePriority* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  FusionStep_UpdatePriority* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FusionStep_UpdatePriority>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FusionStep_UpdatePriority& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const FusionStep_UpdatePriority& from) {
    FusionStep_UpdatePriority::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FusionStep_UpdatePriority* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "xla.gpu.FusionStep.UpdatePriority";
  }
  protected:
  explicit FusionStep_UpdatePriority(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kConsumerNamesFieldNumber = 2,
    kProducerNameFieldNumber = 1,
    kUsFusedFieldNumber = 3,
    kUsUnfusedFieldNumber = 4,
  };
  // repeated string consumer_names = 2;
  int consumer_names_size() const;
  private:
  int _internal_consumer_names_size() const;
  public:
  void clear_consumer_names();
  const std::string& consumer_names(int index) const;
  std::string* mutable_consumer_names(int index);
  void set_consumer_names(int index, const std::string& value);
  void set_consumer_names(int index, std::string&& value);
  void set_consumer_names(int index, const char* value);
  void set_consumer_names(int index, const char* value, size_t size);
  std::string* add_consumer_names();
  void add_consumer_names(const std::string& value);
  void add_consumer_names(std::string&& value);
  void add_consumer_names(const char* value);
  void add_consumer_names(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& consumer_names() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_consumer_names();
  private:
  const std::string& _internal_consumer_names(int index) const;
  std::string* _internal_add_consumer_names();
  public:

  // string producer_name = 1;
  void clear_producer_name();
  const std::string& producer_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_producer_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_producer_name();
  PROTOBUF_NODISCARD std::string* release_producer_name();
  void set_allocated_producer_name(std::string* producer_name);
  private:
  const std::string& _internal_producer_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_producer_name(const std::string& value);
  std::string* _internal_mutable_producer_name();
  public:

  // float us_fused = 3;
  void clear_us_fused();
  float us_fused() const;
  void set_us_fused(float value);
  private:
  float _internal_us_fused() const;
  void _internal_set_us_fused(float value);
  public:

  // float us_unfused = 4;
  void clear_us_unfused();
  float us_unfused() const;
  void set_us_unfused(float value);
  private:
  float _internal_us_unfused() const;
  void _internal_set_us_unfused(float value);
  public:

  // @@protoc_insertion_point(class_scope:xla.gpu.FusionStep.UpdatePriority)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> consumer_names_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr producer_name_;
    float us_fused_;
    float us_unfused_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
};
// -------------------------------------------------------------------

class FusionStep_ProducerIneligible final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:xla.gpu.FusionStep.ProducerIneligible) */ {
 public:
  inline FusionStep_ProducerIneligible() : FusionStep_ProducerIneligible(nullptr) {}
  ~FusionStep_ProducerIneligible() override;
  explicit PROTOBUF_CONSTEXPR FusionStep_ProducerIneligible(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FusionStep_ProducerIneligible(const FusionStep_ProducerIneligible& from);
  FusionStep_ProducerIneligible(FusionStep_ProducerIneligible&& from) noexcept
    : FusionStep_ProducerIneligible() {
    *this = ::std::move(from);
  }

  inline FusionStep_ProducerIneligible& operator=(const FusionStep_ProducerIneligible& from) {
    CopyFrom(from);
    return *this;
  }
  inline FusionStep_ProducerIneligible& operator=(FusionStep_ProducerIneligible&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FusionStep_ProducerIneligible& default_instance() {
    return *internal_default_instance();
  }
  static inline const FusionStep_ProducerIneligible* internal_default_instance() {
    return reinterpret_cast<const FusionStep_ProducerIneligible*>(
               &_FusionStep_ProducerIneligible_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(FusionStep_ProducerIneligible& a, FusionStep_ProducerIneligible& b) {
    a.Swap(&b);
  }
  inline void Swap(FusionStep_ProducerIneligible* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FusionStep_ProducerIneligible* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  FusionStep_ProducerIneligible* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FusionStep_ProducerIneligible>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FusionStep_ProducerIneligible& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const FusionStep_ProducerIneligible& from) {
    FusionStep_ProducerIneligible::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FusionStep_ProducerIneligible* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "xla.gpu.FusionStep.ProducerIneligible";
  }
  protected:
  explicit FusionStep_ProducerIneligible(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kProducerNameFieldNumber = 1,
    kReasonFieldNumber = 2,
  };
  // string producer_name = 1;
  void clear_producer_name();
  const std::string& producer_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_producer_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_producer_name();
  PROTOBUF_NODISCARD std::string* release_producer_name();
  void set_allocated_producer_name(std::string* producer_name);
  private:
  const std::string& _internal_producer_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_producer_name(const std::string& value);
  std::string* _internal_mutable_producer_name();
  public:

  // string reason = 2;
  void clear_reason();
  const std::string& reason() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_reason(ArgT0&& arg0, ArgT... args);
  std::string* mutable_reason();
  PROTOBUF_NODISCARD std::string* release_reason();
  void set_allocated_reason(std::string* reason);
  private:
  const std::string& _internal_reason() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_reason(const std::string& value);
  std::string* _internal_mutable_reason();
  public:

  // @@protoc_insertion_point(class_scope:xla.gpu.FusionStep.ProducerIneligible)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr producer_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
};
// -------------------------------------------------------------------

class FusionStep final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:xla.gpu.FusionStep) */ {
 public:
  inline FusionStep() : FusionStep(nullptr) {}
  ~FusionStep() override;
  explicit PROTOBUF_CONSTEXPR FusionStep(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FusionStep(const FusionStep& from);
  FusionStep(FusionStep&& from) noexcept
    : FusionStep() {
    *this = ::std::move(from);
  }

  inline FusionStep& operator=(const FusionStep& from) {
    CopyFrom(from);
    return *this;
  }
  inline FusionStep& operator=(FusionStep&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FusionStep& default_instance() {
    return *internal_default_instance();
  }
  enum StepCase {
    kFusion = 4,
    kProducerIneligible = 5,
    kUpdatePriority = 6,
    STEP_NOT_SET = 0,
  };

  static inline const FusionStep* internal_default_instance() {
    return reinterpret_cast<const FusionStep*>(
               &_FusionStep_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(FusionStep& a, FusionStep& b) {
    a.Swap(&b);
  }
  inline void Swap(FusionStep* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FusionStep* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  FusionStep* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FusionStep>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FusionStep& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const FusionStep& from) {
    FusionStep::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FusionStep* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "xla.gpu.FusionStep";
  }
  protected:
  explicit FusionStep(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef FusionStep_Fusion Fusion;
  typedef FusionStep_UpdatePriority UpdatePriority;
  typedef FusionStep_ProducerIneligible ProducerIneligible;

  // accessors -------------------------------------------------------

  enum : int {
    kFusionFieldNumber = 4,
    kProducerIneligibleFieldNumber = 5,
    kUpdatePriorityFieldNumber = 6,
  };
  // .xla.gpu.FusionStep.Fusion fusion = 4;
  bool has_fusion() const;
  private:
  bool _internal_has_fusion() const;
  public:
  void clear_fusion();
  const ::xla::gpu::FusionStep_Fusion& fusion() const;
  PROTOBUF_NODISCARD ::xla::gpu::FusionStep_Fusion* release_fusion();
  ::xla::gpu::FusionStep_Fusion* mutable_fusion();
  void set_allocated_fusion(::xla::gpu::FusionStep_Fusion* fusion);
  private:
  const ::xla::gpu::FusionStep_Fusion& _internal_fusion() const;
  ::xla::gpu::FusionStep_Fusion* _internal_mutable_fusion();
  public:
  void unsafe_arena_set_allocated_fusion(
      ::xla::gpu::FusionStep_Fusion* fusion);
  ::xla::gpu::FusionStep_Fusion* unsafe_arena_release_fusion();

  // .xla.gpu.FusionStep.ProducerIneligible producer_ineligible = 5;
  bool has_producer_ineligible() const;
  private:
  bool _internal_has_producer_ineligible() const;
  public:
  void clear_producer_ineligible();
  const ::xla::gpu::FusionStep_ProducerIneligible& producer_ineligible() const;
  PROTOBUF_NODISCARD ::xla::gpu::FusionStep_ProducerIneligible* release_producer_ineligible();
  ::xla::gpu::FusionStep_ProducerIneligible* mutable_producer_ineligible();
  void set_allocated_producer_ineligible(::xla::gpu::FusionStep_ProducerIneligible* producer_ineligible);
  private:
  const ::xla::gpu::FusionStep_ProducerIneligible& _internal_producer_ineligible() const;
  ::xla::gpu::FusionStep_ProducerIneligible* _internal_mutable_producer_ineligible();
  public:
  void unsafe_arena_set_allocated_producer_ineligible(
      ::xla::gpu::FusionStep_ProducerIneligible* producer_ineligible);
  ::xla::gpu::FusionStep_ProducerIneligible* unsafe_arena_release_producer_ineligible();

  // .xla.gpu.FusionStep.UpdatePriority update_priority = 6;
  bool has_update_priority() const;
  private:
  bool _internal_has_update_priority() const;
  public:
  void clear_update_priority();
  const ::xla::gpu::FusionStep_UpdatePriority& update_priority() const;
  PROTOBUF_NODISCARD ::xla::gpu::FusionStep_UpdatePriority* release_update_priority();
  ::xla::gpu::FusionStep_UpdatePriority* mutable_update_priority();
  void set_allocated_update_priority(::xla::gpu::FusionStep_UpdatePriority* update_priority);
  private:
  const ::xla::gpu::FusionStep_UpdatePriority& _internal_update_priority() const;
  ::xla::gpu::FusionStep_UpdatePriority* _internal_mutable_update_priority();
  public:
  void unsafe_arena_set_allocated_update_priority(
      ::xla::gpu::FusionStep_UpdatePriority* update_priority);
  ::xla::gpu::FusionStep_UpdatePriority* unsafe_arena_release_update_priority();

  void clear_step();
  StepCase step_case() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.FusionStep)
 private:
  class _Internal;
  void set_has_fusion();
  void set_has_producer_ineligible();
  void set_has_update_priority();

  inline bool has_step() const;
  inline void clear_has_step();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union StepUnion {
      constexpr StepUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::xla::gpu::FusionStep_Fusion* fusion_;
      ::xla::gpu::FusionStep_ProducerIneligible* producer_ineligible_;
      ::xla::gpu::FusionStep_UpdatePriority* update_priority_;
    } step_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
};
// -------------------------------------------------------------------

class FusionProcessDumpProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:xla.gpu.FusionProcessDumpProto) */ {
 public:
  inline FusionProcessDumpProto() : FusionProcessDumpProto(nullptr) {}
  ~FusionProcessDumpProto() override;
  explicit PROTOBUF_CONSTEXPR FusionProcessDumpProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FusionProcessDumpProto(const FusionProcessDumpProto& from);
  FusionProcessDumpProto(FusionProcessDumpProto&& from) noexcept
    : FusionProcessDumpProto() {
    *this = ::std::move(from);
  }

  inline FusionProcessDumpProto& operator=(const FusionProcessDumpProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline FusionProcessDumpProto& operator=(FusionProcessDumpProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FusionProcessDumpProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const FusionProcessDumpProto* internal_default_instance() {
    return reinterpret_cast<const FusionProcessDumpProto*>(
               &_FusionProcessDumpProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(FusionProcessDumpProto& a, FusionProcessDumpProto& b) {
    a.Swap(&b);
  }
  inline void Swap(FusionProcessDumpProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FusionProcessDumpProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  FusionProcessDumpProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FusionProcessDumpProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FusionProcessDumpProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const FusionProcessDumpProto& from) {
    FusionProcessDumpProto::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FusionProcessDumpProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "xla.gpu.FusionProcessDumpProto";
  }
  protected:
  explicit FusionProcessDumpProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFusionStepsFieldNumber = 1,
    kHloModuleBeforeFusionFieldNumber = 3,
    kGpuDeviceInfoFieldNumber = 2,
  };
  // repeated .xla.gpu.FusionStep fusion_steps = 1;
  int fusion_steps_size() const;
  private:
  int _internal_fusion_steps_size() const;
  public:
  void clear_fusion_steps();
  ::xla::gpu::FusionStep* mutable_fusion_steps(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::xla::gpu::FusionStep >*
      mutable_fusion_steps();
  private:
  const ::xla::gpu::FusionStep& _internal_fusion_steps(int index) const;
  ::xla::gpu::FusionStep* _internal_add_fusion_steps();
  public:
  const ::xla::gpu::FusionStep& fusion_steps(int index) const;
  ::xla::gpu::FusionStep* add_fusion_steps();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::xla::gpu::FusionStep >&
      fusion_steps() const;

  // string hlo_module_before_fusion = 3;
  void clear_hlo_module_before_fusion();
  const std::string& hlo_module_before_fusion() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_hlo_module_before_fusion(ArgT0&& arg0, ArgT... args);
  std::string* mutable_hlo_module_before_fusion();
  PROTOBUF_NODISCARD std::string* release_hlo_module_before_fusion();
  void set_allocated_hlo_module_before_fusion(std::string* hlo_module_before_fusion);
  private:
  const std::string& _internal_hlo_module_before_fusion() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_hlo_module_before_fusion(const std::string& value);
  std::string* _internal_mutable_hlo_module_before_fusion();
  public:

  // .stream_executor.GpuDeviceInfoProto gpu_device_info = 2;
  bool has_gpu_device_info() const;
  private:
  bool _internal_has_gpu_device_info() const;
  public:
  void clear_gpu_device_info();
  const ::stream_executor::GpuDeviceInfoProto& gpu_device_info() const;
  PROTOBUF_NODISCARD ::stream_executor::GpuDeviceInfoProto* release_gpu_device_info();
  ::stream_executor::GpuDeviceInfoProto* mutable_gpu_device_info();
  void set_allocated_gpu_device_info(::stream_executor::GpuDeviceInfoProto* gpu_device_info);
  private:
  const ::stream_executor::GpuDeviceInfoProto& _internal_gpu_device_info() const;
  ::stream_executor::GpuDeviceInfoProto* _internal_mutable_gpu_device_info();
  public:
  void unsafe_arena_set_allocated_gpu_device_info(
      ::stream_executor::GpuDeviceInfoProto* gpu_device_info);
  ::stream_executor::GpuDeviceInfoProto* unsafe_arena_release_gpu_device_info();

  // @@protoc_insertion_point(class_scope:xla.gpu.FusionProcessDumpProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::xla::gpu::FusionStep > fusion_steps_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr hlo_module_before_fusion_;
    ::stream_executor::GpuDeviceInfoProto* gpu_device_info_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto;
};
// ===================================================================


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

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

// string fusion_name = 1;
inline void FusionStep_Fusion::clear_fusion_name() {
  _impl_.fusion_name_.ClearToEmpty();
}
inline const std::string& FusionStep_Fusion::fusion_name() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.Fusion.fusion_name)
  return _internal_fusion_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_Fusion::set_fusion_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.fusion_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.Fusion.fusion_name)
}
inline std::string* FusionStep_Fusion::mutable_fusion_name() {
  std::string* _s = _internal_mutable_fusion_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.Fusion.fusion_name)
  return _s;
}
inline const std::string& FusionStep_Fusion::_internal_fusion_name() const {
  return _impl_.fusion_name_.Get();
}
inline void FusionStep_Fusion::_internal_set_fusion_name(const std::string& value) {
  
  _impl_.fusion_name_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::_internal_mutable_fusion_name() {
  
  return _impl_.fusion_name_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::release_fusion_name() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.Fusion.fusion_name)
  return _impl_.fusion_name_.Release();
}
inline void FusionStep_Fusion::set_allocated_fusion_name(std::string* fusion_name) {
  if (fusion_name != nullptr) {
    
  } else {
    
  }
  _impl_.fusion_name_.SetAllocated(fusion_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.fusion_name_.IsDefault()) {
    _impl_.fusion_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.Fusion.fusion_name)
}

// string producer_name = 2;
inline void FusionStep_Fusion::clear_producer_name() {
  _impl_.producer_name_.ClearToEmpty();
}
inline const std::string& FusionStep_Fusion::producer_name() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.Fusion.producer_name)
  return _internal_producer_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_Fusion::set_producer_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.producer_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.Fusion.producer_name)
}
inline std::string* FusionStep_Fusion::mutable_producer_name() {
  std::string* _s = _internal_mutable_producer_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.Fusion.producer_name)
  return _s;
}
inline const std::string& FusionStep_Fusion::_internal_producer_name() const {
  return _impl_.producer_name_.Get();
}
inline void FusionStep_Fusion::_internal_set_producer_name(const std::string& value) {
  
  _impl_.producer_name_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::_internal_mutable_producer_name() {
  
  return _impl_.producer_name_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::release_producer_name() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.Fusion.producer_name)
  return _impl_.producer_name_.Release();
}
inline void FusionStep_Fusion::set_allocated_producer_name(std::string* producer_name) {
  if (producer_name != nullptr) {
    
  } else {
    
  }
  _impl_.producer_name_.SetAllocated(producer_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.producer_name_.IsDefault()) {
    _impl_.producer_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.Fusion.producer_name)
}

// string consumer_name = 3;
inline void FusionStep_Fusion::clear_consumer_name() {
  _impl_.consumer_name_.ClearToEmpty();
}
inline const std::string& FusionStep_Fusion::consumer_name() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.Fusion.consumer_name)
  return _internal_consumer_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_Fusion::set_consumer_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.consumer_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.Fusion.consumer_name)
}
inline std::string* FusionStep_Fusion::mutable_consumer_name() {
  std::string* _s = _internal_mutable_consumer_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.Fusion.consumer_name)
  return _s;
}
inline const std::string& FusionStep_Fusion::_internal_consumer_name() const {
  return _impl_.consumer_name_.Get();
}
inline void FusionStep_Fusion::_internal_set_consumer_name(const std::string& value) {
  
  _impl_.consumer_name_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::_internal_mutable_consumer_name() {
  
  return _impl_.consumer_name_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_Fusion::release_consumer_name() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.Fusion.consumer_name)
  return _impl_.consumer_name_.Release();
}
inline void FusionStep_Fusion::set_allocated_consumer_name(std::string* consumer_name) {
  if (consumer_name != nullptr) {
    
  } else {
    
  }
  _impl_.consumer_name_.SetAllocated(consumer_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.consumer_name_.IsDefault()) {
    _impl_.consumer_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.Fusion.consumer_name)
}

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

// FusionStep_UpdatePriority

// string producer_name = 1;
inline void FusionStep_UpdatePriority::clear_producer_name() {
  _impl_.producer_name_.ClearToEmpty();
}
inline const std::string& FusionStep_UpdatePriority::producer_name() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.UpdatePriority.producer_name)
  return _internal_producer_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_UpdatePriority::set_producer_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.producer_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.UpdatePriority.producer_name)
}
inline std::string* FusionStep_UpdatePriority::mutable_producer_name() {
  std::string* _s = _internal_mutable_producer_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.UpdatePriority.producer_name)
  return _s;
}
inline const std::string& FusionStep_UpdatePriority::_internal_producer_name() const {
  return _impl_.producer_name_.Get();
}
inline void FusionStep_UpdatePriority::_internal_set_producer_name(const std::string& value) {
  
  _impl_.producer_name_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_UpdatePriority::_internal_mutable_producer_name() {
  
  return _impl_.producer_name_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_UpdatePriority::release_producer_name() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.UpdatePriority.producer_name)
  return _impl_.producer_name_.Release();
}
inline void FusionStep_UpdatePriority::set_allocated_producer_name(std::string* producer_name) {
  if (producer_name != nullptr) {
    
  } else {
    
  }
  _impl_.producer_name_.SetAllocated(producer_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.producer_name_.IsDefault()) {
    _impl_.producer_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.UpdatePriority.producer_name)
}

// repeated string consumer_names = 2;
inline int FusionStep_UpdatePriority::_internal_consumer_names_size() const {
  return _impl_.consumer_names_.size();
}
inline int FusionStep_UpdatePriority::consumer_names_size() const {
  return _internal_consumer_names_size();
}
inline void FusionStep_UpdatePriority::clear_consumer_names() {
  _impl_.consumer_names_.Clear();
}
inline std::string* FusionStep_UpdatePriority::add_consumer_names() {
  std::string* _s = _internal_add_consumer_names();
  // @@protoc_insertion_point(field_add_mutable:xla.gpu.FusionStep.UpdatePriority.consumer_names)
  return _s;
}
inline const std::string& FusionStep_UpdatePriority::_internal_consumer_names(int index) const {
  return _impl_.consumer_names_.Get(index);
}
inline const std::string& FusionStep_UpdatePriority::consumer_names(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.UpdatePriority.consumer_names)
  return _internal_consumer_names(index);
}
inline std::string* FusionStep_UpdatePriority::mutable_consumer_names(int index) {
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.UpdatePriority.consumer_names)
  return _impl_.consumer_names_.Mutable(index);
}
inline void FusionStep_UpdatePriority::set_consumer_names(int index, const std::string& value) {
  _impl_.consumer_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::set_consumer_names(int index, std::string&& value) {
  _impl_.consumer_names_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::set_consumer_names(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.consumer_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::set_consumer_names(int index, const char* value, size_t size) {
  _impl_.consumer_names_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline std::string* FusionStep_UpdatePriority::_internal_add_consumer_names() {
  return _impl_.consumer_names_.Add();
}
inline void FusionStep_UpdatePriority::add_consumer_names(const std::string& value) {
  _impl_.consumer_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::add_consumer_names(std::string&& value) {
  _impl_.consumer_names_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::add_consumer_names(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.consumer_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline void FusionStep_UpdatePriority::add_consumer_names(const char* value, size_t size) {
  _impl_.consumer_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:xla.gpu.FusionStep.UpdatePriority.consumer_names)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
FusionStep_UpdatePriority::consumer_names() const {
  // @@protoc_insertion_point(field_list:xla.gpu.FusionStep.UpdatePriority.consumer_names)
  return _impl_.consumer_names_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
FusionStep_UpdatePriority::mutable_consumer_names() {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.FusionStep.UpdatePriority.consumer_names)
  return &_impl_.consumer_names_;
}

// float us_fused = 3;
inline void FusionStep_UpdatePriority::clear_us_fused() {
  _impl_.us_fused_ = 0;
}
inline float FusionStep_UpdatePriority::_internal_us_fused() const {
  return _impl_.us_fused_;
}
inline float FusionStep_UpdatePriority::us_fused() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.UpdatePriority.us_fused)
  return _internal_us_fused();
}
inline void FusionStep_UpdatePriority::_internal_set_us_fused(float value) {
  
  _impl_.us_fused_ = value;
}
inline void FusionStep_UpdatePriority::set_us_fused(float value) {
  _internal_set_us_fused(value);
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.UpdatePriority.us_fused)
}

// float us_unfused = 4;
inline void FusionStep_UpdatePriority::clear_us_unfused() {
  _impl_.us_unfused_ = 0;
}
inline float FusionStep_UpdatePriority::_internal_us_unfused() const {
  return _impl_.us_unfused_;
}
inline float FusionStep_UpdatePriority::us_unfused() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.UpdatePriority.us_unfused)
  return _internal_us_unfused();
}
inline void FusionStep_UpdatePriority::_internal_set_us_unfused(float value) {
  
  _impl_.us_unfused_ = value;
}
inline void FusionStep_UpdatePriority::set_us_unfused(float value) {
  _internal_set_us_unfused(value);
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.UpdatePriority.us_unfused)
}

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

// FusionStep_ProducerIneligible

// string producer_name = 1;
inline void FusionStep_ProducerIneligible::clear_producer_name() {
  _impl_.producer_name_.ClearToEmpty();
}
inline const std::string& FusionStep_ProducerIneligible::producer_name() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.ProducerIneligible.producer_name)
  return _internal_producer_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_ProducerIneligible::set_producer_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.producer_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.ProducerIneligible.producer_name)
}
inline std::string* FusionStep_ProducerIneligible::mutable_producer_name() {
  std::string* _s = _internal_mutable_producer_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.ProducerIneligible.producer_name)
  return _s;
}
inline const std::string& FusionStep_ProducerIneligible::_internal_producer_name() const {
  return _impl_.producer_name_.Get();
}
inline void FusionStep_ProducerIneligible::_internal_set_producer_name(const std::string& value) {
  
  _impl_.producer_name_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_ProducerIneligible::_internal_mutable_producer_name() {
  
  return _impl_.producer_name_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_ProducerIneligible::release_producer_name() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.ProducerIneligible.producer_name)
  return _impl_.producer_name_.Release();
}
inline void FusionStep_ProducerIneligible::set_allocated_producer_name(std::string* producer_name) {
  if (producer_name != nullptr) {
    
  } else {
    
  }
  _impl_.producer_name_.SetAllocated(producer_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.producer_name_.IsDefault()) {
    _impl_.producer_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.ProducerIneligible.producer_name)
}

// string reason = 2;
inline void FusionStep_ProducerIneligible::clear_reason() {
  _impl_.reason_.ClearToEmpty();
}
inline const std::string& FusionStep_ProducerIneligible::reason() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.ProducerIneligible.reason)
  return _internal_reason();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionStep_ProducerIneligible::set_reason(ArgT0&& arg0, ArgT... args) {
 
 _impl_.reason_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionStep.ProducerIneligible.reason)
}
inline std::string* FusionStep_ProducerIneligible::mutable_reason() {
  std::string* _s = _internal_mutable_reason();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.ProducerIneligible.reason)
  return _s;
}
inline const std::string& FusionStep_ProducerIneligible::_internal_reason() const {
  return _impl_.reason_.Get();
}
inline void FusionStep_ProducerIneligible::_internal_set_reason(const std::string& value) {
  
  _impl_.reason_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionStep_ProducerIneligible::_internal_mutable_reason() {
  
  return _impl_.reason_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionStep_ProducerIneligible::release_reason() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.ProducerIneligible.reason)
  return _impl_.reason_.Release();
}
inline void FusionStep_ProducerIneligible::set_allocated_reason(std::string* reason) {
  if (reason != nullptr) {
    
  } else {
    
  }
  _impl_.reason_.SetAllocated(reason, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.reason_.IsDefault()) {
    _impl_.reason_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionStep.ProducerIneligible.reason)
}

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

// FusionStep

// .xla.gpu.FusionStep.Fusion fusion = 4;
inline bool FusionStep::_internal_has_fusion() const {
  return step_case() == kFusion;
}
inline bool FusionStep::has_fusion() const {
  return _internal_has_fusion();
}
inline void FusionStep::set_has_fusion() {
  _impl_._oneof_case_[0] = kFusion;
}
inline void FusionStep::clear_fusion() {
  if (_internal_has_fusion()) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.step_.fusion_;
    }
    clear_has_step();
  }
}
inline ::xla::gpu::FusionStep_Fusion* FusionStep::release_fusion() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.fusion)
  if (_internal_has_fusion()) {
    clear_has_step();
    ::xla::gpu::FusionStep_Fusion* temp = _impl_.step_.fusion_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.step_.fusion_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::FusionStep_Fusion& FusionStep::_internal_fusion() const {
  return _internal_has_fusion()
      ? *_impl_.step_.fusion_
      : reinterpret_cast< ::xla::gpu::FusionStep_Fusion&>(::xla::gpu::_FusionStep_Fusion_default_instance_);
}
inline const ::xla::gpu::FusionStep_Fusion& FusionStep::fusion() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.fusion)
  return _internal_fusion();
}
inline ::xla::gpu::FusionStep_Fusion* FusionStep::unsafe_arena_release_fusion() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.FusionStep.fusion)
  if (_internal_has_fusion()) {
    clear_has_step();
    ::xla::gpu::FusionStep_Fusion* temp = _impl_.step_.fusion_;
    _impl_.step_.fusion_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void FusionStep::unsafe_arena_set_allocated_fusion(::xla::gpu::FusionStep_Fusion* fusion) {
  clear_step();
  if (fusion) {
    set_has_fusion();
    _impl_.step_.fusion_ = fusion;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FusionStep.fusion)
}
inline ::xla::gpu::FusionStep_Fusion* FusionStep::_internal_mutable_fusion() {
  if (!_internal_has_fusion()) {
    clear_step();
    set_has_fusion();
    _impl_.step_.fusion_ = CreateMaybeMessage< ::xla::gpu::FusionStep_Fusion >(GetArenaForAllocation());
  }
  return _impl_.step_.fusion_;
}
inline ::xla::gpu::FusionStep_Fusion* FusionStep::mutable_fusion() {
  ::xla::gpu::FusionStep_Fusion* _msg = _internal_mutable_fusion();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.fusion)
  return _msg;
}

// .xla.gpu.FusionStep.ProducerIneligible producer_ineligible = 5;
inline bool FusionStep::_internal_has_producer_ineligible() const {
  return step_case() == kProducerIneligible;
}
inline bool FusionStep::has_producer_ineligible() const {
  return _internal_has_producer_ineligible();
}
inline void FusionStep::set_has_producer_ineligible() {
  _impl_._oneof_case_[0] = kProducerIneligible;
}
inline void FusionStep::clear_producer_ineligible() {
  if (_internal_has_producer_ineligible()) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.step_.producer_ineligible_;
    }
    clear_has_step();
  }
}
inline ::xla::gpu::FusionStep_ProducerIneligible* FusionStep::release_producer_ineligible() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.producer_ineligible)
  if (_internal_has_producer_ineligible()) {
    clear_has_step();
    ::xla::gpu::FusionStep_ProducerIneligible* temp = _impl_.step_.producer_ineligible_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.step_.producer_ineligible_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::FusionStep_ProducerIneligible& FusionStep::_internal_producer_ineligible() const {
  return _internal_has_producer_ineligible()
      ? *_impl_.step_.producer_ineligible_
      : reinterpret_cast< ::xla::gpu::FusionStep_ProducerIneligible&>(::xla::gpu::_FusionStep_ProducerIneligible_default_instance_);
}
inline const ::xla::gpu::FusionStep_ProducerIneligible& FusionStep::producer_ineligible() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.producer_ineligible)
  return _internal_producer_ineligible();
}
inline ::xla::gpu::FusionStep_ProducerIneligible* FusionStep::unsafe_arena_release_producer_ineligible() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.FusionStep.producer_ineligible)
  if (_internal_has_producer_ineligible()) {
    clear_has_step();
    ::xla::gpu::FusionStep_ProducerIneligible* temp = _impl_.step_.producer_ineligible_;
    _impl_.step_.producer_ineligible_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void FusionStep::unsafe_arena_set_allocated_producer_ineligible(::xla::gpu::FusionStep_ProducerIneligible* producer_ineligible) {
  clear_step();
  if (producer_ineligible) {
    set_has_producer_ineligible();
    _impl_.step_.producer_ineligible_ = producer_ineligible;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FusionStep.producer_ineligible)
}
inline ::xla::gpu::FusionStep_ProducerIneligible* FusionStep::_internal_mutable_producer_ineligible() {
  if (!_internal_has_producer_ineligible()) {
    clear_step();
    set_has_producer_ineligible();
    _impl_.step_.producer_ineligible_ = CreateMaybeMessage< ::xla::gpu::FusionStep_ProducerIneligible >(GetArenaForAllocation());
  }
  return _impl_.step_.producer_ineligible_;
}
inline ::xla::gpu::FusionStep_ProducerIneligible* FusionStep::mutable_producer_ineligible() {
  ::xla::gpu::FusionStep_ProducerIneligible* _msg = _internal_mutable_producer_ineligible();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.producer_ineligible)
  return _msg;
}

// .xla.gpu.FusionStep.UpdatePriority update_priority = 6;
inline bool FusionStep::_internal_has_update_priority() const {
  return step_case() == kUpdatePriority;
}
inline bool FusionStep::has_update_priority() const {
  return _internal_has_update_priority();
}
inline void FusionStep::set_has_update_priority() {
  _impl_._oneof_case_[0] = kUpdatePriority;
}
inline void FusionStep::clear_update_priority() {
  if (_internal_has_update_priority()) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.step_.update_priority_;
    }
    clear_has_step();
  }
}
inline ::xla::gpu::FusionStep_UpdatePriority* FusionStep::release_update_priority() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionStep.update_priority)
  if (_internal_has_update_priority()) {
    clear_has_step();
    ::xla::gpu::FusionStep_UpdatePriority* temp = _impl_.step_.update_priority_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.step_.update_priority_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::FusionStep_UpdatePriority& FusionStep::_internal_update_priority() const {
  return _internal_has_update_priority()
      ? *_impl_.step_.update_priority_
      : reinterpret_cast< ::xla::gpu::FusionStep_UpdatePriority&>(::xla::gpu::_FusionStep_UpdatePriority_default_instance_);
}
inline const ::xla::gpu::FusionStep_UpdatePriority& FusionStep::update_priority() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionStep.update_priority)
  return _internal_update_priority();
}
inline ::xla::gpu::FusionStep_UpdatePriority* FusionStep::unsafe_arena_release_update_priority() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.FusionStep.update_priority)
  if (_internal_has_update_priority()) {
    clear_has_step();
    ::xla::gpu::FusionStep_UpdatePriority* temp = _impl_.step_.update_priority_;
    _impl_.step_.update_priority_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void FusionStep::unsafe_arena_set_allocated_update_priority(::xla::gpu::FusionStep_UpdatePriority* update_priority) {
  clear_step();
  if (update_priority) {
    set_has_update_priority();
    _impl_.step_.update_priority_ = update_priority;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FusionStep.update_priority)
}
inline ::xla::gpu::FusionStep_UpdatePriority* FusionStep::_internal_mutable_update_priority() {
  if (!_internal_has_update_priority()) {
    clear_step();
    set_has_update_priority();
    _impl_.step_.update_priority_ = CreateMaybeMessage< ::xla::gpu::FusionStep_UpdatePriority >(GetArenaForAllocation());
  }
  return _impl_.step_.update_priority_;
}
inline ::xla::gpu::FusionStep_UpdatePriority* FusionStep::mutable_update_priority() {
  ::xla::gpu::FusionStep_UpdatePriority* _msg = _internal_mutable_update_priority();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionStep.update_priority)
  return _msg;
}

inline bool FusionStep::has_step() const {
  return step_case() != STEP_NOT_SET;
}
inline void FusionStep::clear_has_step() {
  _impl_._oneof_case_[0] = STEP_NOT_SET;
}
inline FusionStep::StepCase FusionStep::step_case() const {
  return FusionStep::StepCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// FusionProcessDumpProto

// repeated .xla.gpu.FusionStep fusion_steps = 1;
inline int FusionProcessDumpProto::_internal_fusion_steps_size() const {
  return _impl_.fusion_steps_.size();
}
inline int FusionProcessDumpProto::fusion_steps_size() const {
  return _internal_fusion_steps_size();
}
inline void FusionProcessDumpProto::clear_fusion_steps() {
  _impl_.fusion_steps_.Clear();
}
inline ::xla::gpu::FusionStep* FusionProcessDumpProto::mutable_fusion_steps(int index) {
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionProcessDumpProto.fusion_steps)
  return _impl_.fusion_steps_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::xla::gpu::FusionStep >*
FusionProcessDumpProto::mutable_fusion_steps() {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.FusionProcessDumpProto.fusion_steps)
  return &_impl_.fusion_steps_;
}
inline const ::xla::gpu::FusionStep& FusionProcessDumpProto::_internal_fusion_steps(int index) const {
  return _impl_.fusion_steps_.Get(index);
}
inline const ::xla::gpu::FusionStep& FusionProcessDumpProto::fusion_steps(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionProcessDumpProto.fusion_steps)
  return _internal_fusion_steps(index);
}
inline ::xla::gpu::FusionStep* FusionProcessDumpProto::_internal_add_fusion_steps() {
  return _impl_.fusion_steps_.Add();
}
inline ::xla::gpu::FusionStep* FusionProcessDumpProto::add_fusion_steps() {
  ::xla::gpu::FusionStep* _add = _internal_add_fusion_steps();
  // @@protoc_insertion_point(field_add:xla.gpu.FusionProcessDumpProto.fusion_steps)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::xla::gpu::FusionStep >&
FusionProcessDumpProto::fusion_steps() const {
  // @@protoc_insertion_point(field_list:xla.gpu.FusionProcessDumpProto.fusion_steps)
  return _impl_.fusion_steps_;
}

// .stream_executor.GpuDeviceInfoProto gpu_device_info = 2;
inline bool FusionProcessDumpProto::_internal_has_gpu_device_info() const {
  return this != internal_default_instance() && _impl_.gpu_device_info_ != nullptr;
}
inline bool FusionProcessDumpProto::has_gpu_device_info() const {
  return _internal_has_gpu_device_info();
}
inline const ::stream_executor::GpuDeviceInfoProto& FusionProcessDumpProto::_internal_gpu_device_info() const {
  const ::stream_executor::GpuDeviceInfoProto* p = _impl_.gpu_device_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::stream_executor::GpuDeviceInfoProto&>(
      ::stream_executor::_GpuDeviceInfoProto_default_instance_);
}
inline const ::stream_executor::GpuDeviceInfoProto& FusionProcessDumpProto::gpu_device_info() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionProcessDumpProto.gpu_device_info)
  return _internal_gpu_device_info();
}
inline void FusionProcessDumpProto::unsafe_arena_set_allocated_gpu_device_info(
    ::stream_executor::GpuDeviceInfoProto* gpu_device_info) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.gpu_device_info_);
  }
  _impl_.gpu_device_info_ = gpu_device_info;
  if (gpu_device_info) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FusionProcessDumpProto.gpu_device_info)
}
inline ::stream_executor::GpuDeviceInfoProto* FusionProcessDumpProto::release_gpu_device_info() {
  
  ::stream_executor::GpuDeviceInfoProto* temp = _impl_.gpu_device_info_;
  _impl_.gpu_device_info_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::stream_executor::GpuDeviceInfoProto* FusionProcessDumpProto::unsafe_arena_release_gpu_device_info() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionProcessDumpProto.gpu_device_info)
  
  ::stream_executor::GpuDeviceInfoProto* temp = _impl_.gpu_device_info_;
  _impl_.gpu_device_info_ = nullptr;
  return temp;
}
inline ::stream_executor::GpuDeviceInfoProto* FusionProcessDumpProto::_internal_mutable_gpu_device_info() {
  
  if (_impl_.gpu_device_info_ == nullptr) {
    auto* p = CreateMaybeMessage<::stream_executor::GpuDeviceInfoProto>(GetArenaForAllocation());
    _impl_.gpu_device_info_ = p;
  }
  return _impl_.gpu_device_info_;
}
inline ::stream_executor::GpuDeviceInfoProto* FusionProcessDumpProto::mutable_gpu_device_info() {
  ::stream_executor::GpuDeviceInfoProto* _msg = _internal_mutable_gpu_device_info();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionProcessDumpProto.gpu_device_info)
  return _msg;
}
inline void FusionProcessDumpProto::set_allocated_gpu_device_info(::stream_executor::GpuDeviceInfoProto* gpu_device_info) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.gpu_device_info_);
  }
  if (gpu_device_info) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gpu_device_info));
    if (message_arena != submessage_arena) {
      gpu_device_info = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, gpu_device_info, submessage_arena);
    }
    
  } else {
    
  }
  _impl_.gpu_device_info_ = gpu_device_info;
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionProcessDumpProto.gpu_device_info)
}

// string hlo_module_before_fusion = 3;
inline void FusionProcessDumpProto::clear_hlo_module_before_fusion() {
  _impl_.hlo_module_before_fusion_.ClearToEmpty();
}
inline const std::string& FusionProcessDumpProto::hlo_module_before_fusion() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FusionProcessDumpProto.hlo_module_before_fusion)
  return _internal_hlo_module_before_fusion();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FusionProcessDumpProto::set_hlo_module_before_fusion(ArgT0&& arg0, ArgT... args) {
 
 _impl_.hlo_module_before_fusion_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:xla.gpu.FusionProcessDumpProto.hlo_module_before_fusion)
}
inline std::string* FusionProcessDumpProto::mutable_hlo_module_before_fusion() {
  std::string* _s = _internal_mutable_hlo_module_before_fusion();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FusionProcessDumpProto.hlo_module_before_fusion)
  return _s;
}
inline const std::string& FusionProcessDumpProto::_internal_hlo_module_before_fusion() const {
  return _impl_.hlo_module_before_fusion_.Get();
}
inline void FusionProcessDumpProto::_internal_set_hlo_module_before_fusion(const std::string& value) {
  
  _impl_.hlo_module_before_fusion_.Set(value, GetArenaForAllocation());
}
inline std::string* FusionProcessDumpProto::_internal_mutable_hlo_module_before_fusion() {
  
  return _impl_.hlo_module_before_fusion_.Mutable(GetArenaForAllocation());
}
inline std::string* FusionProcessDumpProto::release_hlo_module_before_fusion() {
  // @@protoc_insertion_point(field_release:xla.gpu.FusionProcessDumpProto.hlo_module_before_fusion)
  return _impl_.hlo_module_before_fusion_.Release();
}
inline void FusionProcessDumpProto::set_allocated_hlo_module_before_fusion(std::string* hlo_module_before_fusion) {
  if (hlo_module_before_fusion != nullptr) {
    
  } else {
    
  }
  _impl_.hlo_module_before_fusion_.SetAllocated(hlo_module_before_fusion, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.hlo_module_before_fusion_.IsDefault()) {
    _impl_.hlo_module_before_fusion_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FusionProcessDumpProto.hlo_module_before_fusion)
}

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace gpu
}  // namespace xla

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fgpu_2ffusion_5fprocess_5fdump_2eproto
