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

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fhlo_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fhlo_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/map.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field_inl.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/protobuf/any.pb.h"
#include "xla/service/metrics.pb.h"
#include "xla/xla_data.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fservice_2fhlo_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_2fservice_2fhlo_2eproto {
  static const ::uint32_t offsets[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_xla_2fservice_2fhlo_2eproto;
namespace xla {
class BufferAllocationProto;
struct BufferAllocationProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAllocationProtoDefaultTypeInternal _BufferAllocationProto_default_instance_;
class BufferAllocationProto_Assigned;
struct BufferAllocationProto_AssignedDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAllocationProto_AssignedDefaultTypeInternal _BufferAllocationProto_Assigned_default_instance_;
class BufferAssignmentProto;
struct BufferAssignmentProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAssignmentProtoDefaultTypeInternal _BufferAssignmentProto_default_instance_;
class BufferAssignmentProto_BufferAlias;
struct BufferAssignmentProto_BufferAliasDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAssignmentProto_BufferAliasDefaultTypeInternal _BufferAssignmentProto_BufferAlias_default_instance_;
class CrossProgramPrefetch;
struct CrossProgramPrefetchDefaultTypeInternal;
PROTOBUF_EXPORT extern CrossProgramPrefetchDefaultTypeInternal _CrossProgramPrefetch_default_instance_;
class HeapSimulatorTrace;
struct HeapSimulatorTraceDefaultTypeInternal;
PROTOBUF_EXPORT extern HeapSimulatorTraceDefaultTypeInternal _HeapSimulatorTrace_default_instance_;
class HeapSimulatorTrace_Event;
struct HeapSimulatorTrace_EventDefaultTypeInternal;
PROTOBUF_EXPORT extern HeapSimulatorTrace_EventDefaultTypeInternal _HeapSimulatorTrace_Event_default_instance_;
class HloBufferDonorProto;
struct HloBufferDonorProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloBufferDonorProtoDefaultTypeInternal _HloBufferDonorProto_default_instance_;
class HloBufferDonorProto_BufferDonorEntryProto;
struct HloBufferDonorProto_BufferDonorEntryProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloBufferDonorProto_BufferDonorEntryProtoDefaultTypeInternal _HloBufferDonorProto_BufferDonorEntryProto_default_instance_;
class HloComputationProto;
struct HloComputationProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloComputationProtoDefaultTypeInternal _HloComputationProto_default_instance_;
class HloInputOutputAliasProto;
struct HloInputOutputAliasProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputOutputAliasProtoDefaultTypeInternal _HloInputOutputAliasProto_default_instance_;
class HloInputOutputAliasProto_AliasEntryProto;
struct HloInputOutputAliasProto_AliasEntryProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputOutputAliasProto_AliasEntryProtoDefaultTypeInternal _HloInputOutputAliasProto_AliasEntryProto_default_instance_;
class HloInputs;
struct HloInputsDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputsDefaultTypeInternal _HloInputs_default_instance_;
class HloInputs_LiteralDescriptor;
struct HloInputs_LiteralDescriptorDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputs_LiteralDescriptorDefaultTypeInternal _HloInputs_LiteralDescriptor_default_instance_;
class HloInstructionProto;
struct HloInstructionProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInstructionProtoDefaultTypeInternal _HloInstructionProto_default_instance_;
class HloInstructionProto_SliceDimensions;
struct HloInstructionProto_SliceDimensionsDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInstructionProto_SliceDimensionsDefaultTypeInternal _HloInstructionProto_SliceDimensions_default_instance_;
class HloModuleGroupProto;
struct HloModuleGroupProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleGroupProtoDefaultTypeInternal _HloModuleGroupProto_default_instance_;
class HloModuleMetadataProto;
struct HloModuleMetadataProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleMetadataProtoDefaultTypeInternal _HloModuleMetadataProto_default_instance_;
class HloModuleProto;
struct HloModuleProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleProtoDefaultTypeInternal _HloModuleProto_default_instance_;
class HloModuleProto_ProfileInfo;
struct HloModuleProto_ProfileInfoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleProto_ProfileInfoDefaultTypeInternal _HloModuleProto_ProfileInfo_default_instance_;
class HloPassMetadata;
struct HloPassMetadataDefaultTypeInternal;
PROTOBUF_EXPORT extern HloPassMetadataDefaultTypeInternal _HloPassMetadata_default_instance_;
class HloProto;
struct HloProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloProtoDefaultTypeInternal _HloProto_default_instance_;
class HloScheduleProto;
struct HloScheduleProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProtoDefaultTypeInternal _HloScheduleProto_default_instance_;
class HloScheduleProto_InstructionSequence;
struct HloScheduleProto_InstructionSequenceDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProto_InstructionSequenceDefaultTypeInternal _HloScheduleProto_InstructionSequence_default_instance_;
class HloScheduleProto_SequencesEntry_DoNotUse;
struct HloScheduleProto_SequencesEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProto_SequencesEntry_DoNotUseDefaultTypeInternal _HloScheduleProto_SequencesEntry_DoNotUse_default_instance_;
class HloSnapshot;
struct HloSnapshotDefaultTypeInternal;
PROTOBUF_EXPORT extern HloSnapshotDefaultTypeInternal _HloSnapshot_default_instance_;
class HloUnoptimizedSnapshot;
struct HloUnoptimizedSnapshotDefaultTypeInternal;
PROTOBUF_EXPORT extern HloUnoptimizedSnapshotDefaultTypeInternal _HloUnoptimizedSnapshot_default_instance_;
class LogicalBufferProto;
struct LogicalBufferProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LogicalBufferProtoDefaultTypeInternal _LogicalBufferProto_default_instance_;
class LogicalBufferProto_Location;
struct LogicalBufferProto_LocationDefaultTypeInternal;
PROTOBUF_EXPORT extern LogicalBufferProto_LocationDefaultTypeInternal _LogicalBufferProto_Location_default_instance_;
class OriginalValueRecoveryTableProto;
struct OriginalValueRecoveryTableProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueRecoveryTableProtoDefaultTypeInternal _OriginalValueRecoveryTableProto_default_instance_;
class OriginalValueRecoveryTableProto_Entry;
struct OriginalValueRecoveryTableProto_EntryDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueRecoveryTableProto_EntryDefaultTypeInternal _OriginalValueRecoveryTableProto_Entry_default_instance_;
class StackFrameIndexProto;
struct StackFrameIndexProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProtoDefaultTypeInternal _StackFrameIndexProto_default_instance_;
class StackFrameIndexProto_FileLocation;
struct StackFrameIndexProto_FileLocationDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProto_FileLocationDefaultTypeInternal _StackFrameIndexProto_FileLocation_default_instance_;
class StackFrameIndexProto_StackFrame;
struct StackFrameIndexProto_StackFrameDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProto_StackFrameDefaultTypeInternal _StackFrameIndexProto_StackFrame_default_instance_;
}  // namespace xla
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace xla {
enum HloModuleProto_ProfileType : int {
  HloModuleProto_ProfileType_INVALID = 0,
  HloModuleProto_ProfileType_FLAG = 1,
  HloModuleProto_ProfileType_FUSION = 2,
  HloModuleProto_ProfileType_LAYOUT = 3,
  HloModuleProto_ProfileType_DOT = 4,
  HloModuleProto_ProfileType_FLAGNET = 5,
  HloModuleProto_ProfileType_SHARDING = 6,
  HloModuleProto_ProfileType_SCHEDULE = 7,
  HloModuleProto_ProfileType_HloModuleProto_ProfileType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  HloModuleProto_ProfileType_HloModuleProto_ProfileType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool HloModuleProto_ProfileType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t HloModuleProto_ProfileType_internal_data_[];
constexpr HloModuleProto_ProfileType HloModuleProto_ProfileType_ProfileType_MIN = static_cast<HloModuleProto_ProfileType>(0);
constexpr HloModuleProto_ProfileType HloModuleProto_ProfileType_ProfileType_MAX = static_cast<HloModuleProto_ProfileType>(7);
constexpr int HloModuleProto_ProfileType_ProfileType_ARRAYSIZE = 7 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
HloModuleProto_ProfileType_descriptor();
template <typename T>
const std::string& HloModuleProto_ProfileType_Name(T value) {
  static_assert(std::is_same<T, HloModuleProto_ProfileType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to ProfileType_Name().");
  return HloModuleProto_ProfileType_Name(static_cast<HloModuleProto_ProfileType>(value));
}
template <>
inline const std::string& HloModuleProto_ProfileType_Name(HloModuleProto_ProfileType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<HloModuleProto_ProfileType_descriptor,
                                                 0, 7>(
      static_cast<int>(value));
}
inline bool HloModuleProto_ProfileType_Parse(absl::string_view name, HloModuleProto_ProfileType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<HloModuleProto_ProfileType>(
      HloModuleProto_ProfileType_descriptor(), name, value);
}
enum HloModuleProto_ProfileGenerationStrategy : int {
  HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_UNKNOWN = 0,
  HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_GA = 1,
  HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_FANTA = 2,
  HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_CFO = 3,
  HloModuleProto_ProfileGenerationStrategy_HloModuleProto_ProfileGenerationStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  HloModuleProto_ProfileGenerationStrategy_HloModuleProto_ProfileGenerationStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool HloModuleProto_ProfileGenerationStrategy_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t HloModuleProto_ProfileGenerationStrategy_internal_data_[];
constexpr HloModuleProto_ProfileGenerationStrategy HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_MIN = static_cast<HloModuleProto_ProfileGenerationStrategy>(0);
constexpr HloModuleProto_ProfileGenerationStrategy HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_MAX = static_cast<HloModuleProto_ProfileGenerationStrategy>(3);
constexpr int HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
HloModuleProto_ProfileGenerationStrategy_descriptor();
template <typename T>
const std::string& HloModuleProto_ProfileGenerationStrategy_Name(T value) {
  static_assert(std::is_same<T, HloModuleProto_ProfileGenerationStrategy>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to ProfileGenerationStrategy_Name().");
  return HloModuleProto_ProfileGenerationStrategy_Name(static_cast<HloModuleProto_ProfileGenerationStrategy>(value));
}
template <>
inline const std::string& HloModuleProto_ProfileGenerationStrategy_Name(HloModuleProto_ProfileGenerationStrategy value) {
  return ::google::protobuf::internal::NameOfDenseEnum<HloModuleProto_ProfileGenerationStrategy_descriptor,
                                                 0, 3>(
      static_cast<int>(value));
}
inline bool HloModuleProto_ProfileGenerationStrategy_Parse(absl::string_view name, HloModuleProto_ProfileGenerationStrategy* value) {
  return ::google::protobuf::internal::ParseNamedEnum<HloModuleProto_ProfileGenerationStrategy>(
      HloModuleProto_ProfileGenerationStrategy_descriptor(), name, value);
}
enum HeapSimulatorTrace_Event_Kind : int {
  HeapSimulatorTrace_Event_Kind_ALLOC = 0,
  HeapSimulatorTrace_Event_Kind_FREE = 1,
  HeapSimulatorTrace_Event_Kind_SHARE_WITH = 2,
  HeapSimulatorTrace_Event_Kind_HeapSimulatorTrace_Event_Kind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  HeapSimulatorTrace_Event_Kind_HeapSimulatorTrace_Event_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool HeapSimulatorTrace_Event_Kind_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t HeapSimulatorTrace_Event_Kind_internal_data_[];
constexpr HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event_Kind_Kind_MIN = static_cast<HeapSimulatorTrace_Event_Kind>(0);
constexpr HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event_Kind_Kind_MAX = static_cast<HeapSimulatorTrace_Event_Kind>(2);
constexpr int HeapSimulatorTrace_Event_Kind_Kind_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
HeapSimulatorTrace_Event_Kind_descriptor();
template <typename T>
const std::string& HeapSimulatorTrace_Event_Kind_Name(T value) {
  static_assert(std::is_same<T, HeapSimulatorTrace_Event_Kind>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to Kind_Name().");
  return HeapSimulatorTrace_Event_Kind_Name(static_cast<HeapSimulatorTrace_Event_Kind>(value));
}
template <>
inline const std::string& HeapSimulatorTrace_Event_Kind_Name(HeapSimulatorTrace_Event_Kind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<HeapSimulatorTrace_Event_Kind_descriptor,
                                                 0, 2>(
      static_cast<int>(value));
}
inline bool HeapSimulatorTrace_Event_Kind_Parse(absl::string_view name, HeapSimulatorTrace_Event_Kind* value) {
  return ::google::protobuf::internal::ParseNamedEnum<HeapSimulatorTrace_Event_Kind>(
      HeapSimulatorTrace_Event_Kind_descriptor(), name, value);
}
enum CustomCallSchedule : int {
  SCHEDULE_NONE = 0,
  SCHEDULE_LATEST = 1,
  SCHEDULE_EARLIEST = 2,
  CustomCallSchedule_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  CustomCallSchedule_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool CustomCallSchedule_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t CustomCallSchedule_internal_data_[];
constexpr CustomCallSchedule CustomCallSchedule_MIN = static_cast<CustomCallSchedule>(0);
constexpr CustomCallSchedule CustomCallSchedule_MAX = static_cast<CustomCallSchedule>(2);
constexpr int CustomCallSchedule_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
CustomCallSchedule_descriptor();
template <typename T>
const std::string& CustomCallSchedule_Name(T value) {
  static_assert(std::is_same<T, CustomCallSchedule>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to CustomCallSchedule_Name().");
  return CustomCallSchedule_Name(static_cast<CustomCallSchedule>(value));
}
template <>
inline const std::string& CustomCallSchedule_Name(CustomCallSchedule value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CustomCallSchedule_descriptor,
                                                 0, 2>(
      static_cast<int>(value));
}
inline bool CustomCallSchedule_Parse(absl::string_view name, CustomCallSchedule* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CustomCallSchedule>(
      CustomCallSchedule_descriptor(), name, value);
}
enum CustomCallApiVersion : int {
  API_VERSION_UNSPECIFIED = 0,
  API_VERSION_ORIGINAL = 1,
  API_VERSION_STATUS_RETURNING = 2,
  API_VERSION_STATUS_RETURNING_UNIFIED = 3,
  API_VERSION_TYPED_FFI = 4,
  CustomCallApiVersion_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  CustomCallApiVersion_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool CustomCallApiVersion_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t CustomCallApiVersion_internal_data_[];
constexpr CustomCallApiVersion CustomCallApiVersion_MIN = static_cast<CustomCallApiVersion>(0);
constexpr CustomCallApiVersion CustomCallApiVersion_MAX = static_cast<CustomCallApiVersion>(4);
constexpr int CustomCallApiVersion_ARRAYSIZE = 4 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
CustomCallApiVersion_descriptor();
template <typename T>
const std::string& CustomCallApiVersion_Name(T value) {
  static_assert(std::is_same<T, CustomCallApiVersion>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to CustomCallApiVersion_Name().");
  return CustomCallApiVersion_Name(static_cast<CustomCallApiVersion>(value));
}
template <>
inline const std::string& CustomCallApiVersion_Name(CustomCallApiVersion value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CustomCallApiVersion_descriptor,
                                                 0, 4>(
      static_cast<int>(value));
}
inline bool CustomCallApiVersion_Parse(absl::string_view name, CustomCallApiVersion* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CustomCallApiVersion>(
      CustomCallApiVersion_descriptor(), name, value);
}
enum Kind : int {
  UNDEFINED_ALIAS = 0,
  MAY_ALIAS = 1,
  MUST_ALIAS = 2,
  Kind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  Kind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool Kind_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t Kind_internal_data_[];
constexpr Kind Kind_MIN = static_cast<Kind>(0);
constexpr Kind Kind_MAX = static_cast<Kind>(2);
constexpr int Kind_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
Kind_descriptor();
template <typename T>
const std::string& Kind_Name(T value) {
  static_assert(std::is_same<T, Kind>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to Kind_Name().");
  return Kind_Name(static_cast<Kind>(value));
}
template <>
inline const std::string& Kind_Name(Kind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<Kind_descriptor,
                                                 0, 2>(
      static_cast<int>(value));
}
inline bool Kind_Parse(absl::string_view name, Kind* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Kind>(
      Kind_descriptor(), name, value);
}

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


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

class PROTOBUF_EXPORT StackFrameIndexProto_StackFrame final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.StackFrameIndexProto.StackFrame) */ {
 public:
  inline StackFrameIndexProto_StackFrame() : StackFrameIndexProto_StackFrame(nullptr) {}
  ~StackFrameIndexProto_StackFrame() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR StackFrameIndexProto_StackFrame(
      ::google::protobuf::internal::ConstantInitialized);

  inline StackFrameIndexProto_StackFrame(const StackFrameIndexProto_StackFrame& from) : StackFrameIndexProto_StackFrame(nullptr, from) {}
  inline StackFrameIndexProto_StackFrame(StackFrameIndexProto_StackFrame&& from) noexcept
      : StackFrameIndexProto_StackFrame(nullptr, std::move(from)) {}
  inline StackFrameIndexProto_StackFrame& operator=(const StackFrameIndexProto_StackFrame& from) {
    CopyFrom(from);
    return *this;
  }
  inline StackFrameIndexProto_StackFrame& operator=(StackFrameIndexProto_StackFrame&& 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 StackFrameIndexProto_StackFrame& default_instance() {
    return *internal_default_instance();
  }
  static inline const StackFrameIndexProto_StackFrame* internal_default_instance() {
    return reinterpret_cast<const StackFrameIndexProto_StackFrame*>(
        &_StackFrameIndexProto_StackFrame_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(StackFrameIndexProto_StackFrame& a, StackFrameIndexProto_StackFrame& b) { a.Swap(&b); }
  inline void Swap(StackFrameIndexProto_StackFrame* 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(StackFrameIndexProto_StackFrame* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  StackFrameIndexProto_StackFrame* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<StackFrameIndexProto_StackFrame>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const StackFrameIndexProto_StackFrame& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const StackFrameIndexProto_StackFrame& from) { StackFrameIndexProto_StackFrame::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(StackFrameIndexProto_StackFrame* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.StackFrameIndexProto.StackFrame"; }

 protected:
  explicit StackFrameIndexProto_StackFrame(::google::protobuf::Arena* arena);
  StackFrameIndexProto_StackFrame(::google::protobuf::Arena* arena, const StackFrameIndexProto_StackFrame& from);
  StackFrameIndexProto_StackFrame(::google::protobuf::Arena* arena, StackFrameIndexProto_StackFrame&& from) noexcept
      : StackFrameIndexProto_StackFrame(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 {
    kFileLocationIdFieldNumber = 1,
    kParentFrameIdFieldNumber = 2,
  };
  // int32 file_location_id = 1;
  void clear_file_location_id() ;
  ::int32_t file_location_id() const;
  void set_file_location_id(::int32_t value);

  private:
  ::int32_t _internal_file_location_id() const;
  void _internal_set_file_location_id(::int32_t value);

  public:
  // int32 parent_frame_id = 2;
  void clear_parent_frame_id() ;
  ::int32_t parent_frame_id() const;
  void set_parent_frame_id(::int32_t value);

  private:
  ::int32_t _internal_parent_frame_id() const;
  void _internal_set_parent_frame_id(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.StackFrameIndexProto.StackFrame)
 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 StackFrameIndexProto_StackFrame& from_msg);
    ::int32_t file_location_id_;
    ::int32_t parent_frame_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT StackFrameIndexProto_FileLocation final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.StackFrameIndexProto.FileLocation) */ {
 public:
  inline StackFrameIndexProto_FileLocation() : StackFrameIndexProto_FileLocation(nullptr) {}
  ~StackFrameIndexProto_FileLocation() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR StackFrameIndexProto_FileLocation(
      ::google::protobuf::internal::ConstantInitialized);

  inline StackFrameIndexProto_FileLocation(const StackFrameIndexProto_FileLocation& from) : StackFrameIndexProto_FileLocation(nullptr, from) {}
  inline StackFrameIndexProto_FileLocation(StackFrameIndexProto_FileLocation&& from) noexcept
      : StackFrameIndexProto_FileLocation(nullptr, std::move(from)) {}
  inline StackFrameIndexProto_FileLocation& operator=(const StackFrameIndexProto_FileLocation& from) {
    CopyFrom(from);
    return *this;
  }
  inline StackFrameIndexProto_FileLocation& operator=(StackFrameIndexProto_FileLocation&& 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 StackFrameIndexProto_FileLocation& default_instance() {
    return *internal_default_instance();
  }
  static inline const StackFrameIndexProto_FileLocation* internal_default_instance() {
    return reinterpret_cast<const StackFrameIndexProto_FileLocation*>(
        &_StackFrameIndexProto_FileLocation_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(StackFrameIndexProto_FileLocation& a, StackFrameIndexProto_FileLocation& b) { a.Swap(&b); }
  inline void Swap(StackFrameIndexProto_FileLocation* 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(StackFrameIndexProto_FileLocation* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  StackFrameIndexProto_FileLocation* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<StackFrameIndexProto_FileLocation>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const StackFrameIndexProto_FileLocation& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const StackFrameIndexProto_FileLocation& from) { StackFrameIndexProto_FileLocation::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(StackFrameIndexProto_FileLocation* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.StackFrameIndexProto.FileLocation"; }

 protected:
  explicit StackFrameIndexProto_FileLocation(::google::protobuf::Arena* arena);
  StackFrameIndexProto_FileLocation(::google::protobuf::Arena* arena, const StackFrameIndexProto_FileLocation& from);
  StackFrameIndexProto_FileLocation(::google::protobuf::Arena* arena, StackFrameIndexProto_FileLocation&& from) noexcept
      : StackFrameIndexProto_FileLocation(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 {
    kFileNameIdFieldNumber = 1,
    kFunctionNameIdFieldNumber = 2,
    kLineFieldNumber = 3,
    kColumnFieldNumber = 4,
  };
  // int32 file_name_id = 1;
  void clear_file_name_id() ;
  ::int32_t file_name_id() const;
  void set_file_name_id(::int32_t value);

  private:
  ::int32_t _internal_file_name_id() const;
  void _internal_set_file_name_id(::int32_t value);

  public:
  // int32 function_name_id = 2;
  void clear_function_name_id() ;
  ::int32_t function_name_id() const;
  void set_function_name_id(::int32_t value);

  private:
  ::int32_t _internal_function_name_id() const;
  void _internal_set_function_name_id(::int32_t value);

  public:
  // int32 line = 3;
  void clear_line() ;
  ::int32_t line() const;
  void set_line(::int32_t value);

  private:
  ::int32_t _internal_line() const;
  void _internal_set_line(::int32_t value);

  public:
  // int32 column = 4;
  void clear_column() ;
  ::int32_t column() const;
  void set_column(::int32_t value);

  private:
  ::int32_t _internal_column() const;
  void _internal_set_column(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.StackFrameIndexProto.FileLocation)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 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 StackFrameIndexProto_FileLocation& from_msg);
    ::int32_t file_name_id_;
    ::int32_t function_name_id_;
    ::int32_t line_;
    ::int32_t column_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT LogicalBufferProto_Location final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.LogicalBufferProto.Location) */ {
 public:
  inline LogicalBufferProto_Location() : LogicalBufferProto_Location(nullptr) {}
  ~LogicalBufferProto_Location() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR LogicalBufferProto_Location(
      ::google::protobuf::internal::ConstantInitialized);

  inline LogicalBufferProto_Location(const LogicalBufferProto_Location& from) : LogicalBufferProto_Location(nullptr, from) {}
  inline LogicalBufferProto_Location(LogicalBufferProto_Location&& from) noexcept
      : LogicalBufferProto_Location(nullptr, std::move(from)) {}
  inline LogicalBufferProto_Location& operator=(const LogicalBufferProto_Location& from) {
    CopyFrom(from);
    return *this;
  }
  inline LogicalBufferProto_Location& operator=(LogicalBufferProto_Location&& 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 LogicalBufferProto_Location& default_instance() {
    return *internal_default_instance();
  }
  static inline const LogicalBufferProto_Location* internal_default_instance() {
    return reinterpret_cast<const LogicalBufferProto_Location*>(
        &_LogicalBufferProto_Location_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(LogicalBufferProto_Location& a, LogicalBufferProto_Location& b) { a.Swap(&b); }
  inline void Swap(LogicalBufferProto_Location* 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(LogicalBufferProto_Location* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  LogicalBufferProto_Location* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<LogicalBufferProto_Location>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LogicalBufferProto_Location& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LogicalBufferProto_Location& from) { LogicalBufferProto_Location::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(LogicalBufferProto_Location* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.LogicalBufferProto.Location"; }

 protected:
  explicit LogicalBufferProto_Location(::google::protobuf::Arena* arena);
  LogicalBufferProto_Location(::google::protobuf::Arena* arena, const LogicalBufferProto_Location& from);
  LogicalBufferProto_Location(::google::protobuf::Arena* arena, LogicalBufferProto_Location&& from) noexcept
      : LogicalBufferProto_Location(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 {
    kShapeIndexFieldNumber = 3,
    kInstructionNameFieldNumber = 2,
    kInstructionIdFieldNumber = 4,
  };
  // repeated int64 shape_index = 3;
  int shape_index_size() const;
  private:
  int _internal_shape_index_size() const;

  public:
  void clear_shape_index() ;
  ::int64_t shape_index(int index) const;
  void set_shape_index(int index, ::int64_t value);
  void add_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_shape_index();

  public:
  // string instruction_name = 2 [deprecated = true];
  [[deprecated]]  void clear_instruction_name() ;
  [[deprecated]] const std::string& instruction_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  [[deprecated]] void set_instruction_name(Arg_&& arg, Args_... args);
  [[deprecated]] std::string* mutable_instruction_name();
  [[deprecated]] PROTOBUF_NODISCARD std::string* release_instruction_name();
  [[deprecated]] void set_allocated_instruction_name(std::string* value);

  private:
  const std::string& _internal_instruction_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_instruction_name(
      const std::string& value);
  std::string* _internal_mutable_instruction_name();

  public:
  // int64 instruction_id = 4;
  void clear_instruction_id() ;
  ::int64_t instruction_id() const;
  void set_instruction_id(::int64_t value);

  private:
  ::int64_t _internal_instruction_id() const;
  void _internal_set_instruction_id(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.LogicalBufferProto.Location)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      56, 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 LogicalBufferProto_Location& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> shape_index_;
    mutable ::google::protobuf::internal::CachedSize _shape_index_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::int64_t instruction_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloScheduleProto_InstructionSequence final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloScheduleProto.InstructionSequence) */ {
 public:
  inline HloScheduleProto_InstructionSequence() : HloScheduleProto_InstructionSequence(nullptr) {}
  ~HloScheduleProto_InstructionSequence() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloScheduleProto_InstructionSequence(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloScheduleProto_InstructionSequence(const HloScheduleProto_InstructionSequence& from) : HloScheduleProto_InstructionSequence(nullptr, from) {}
  inline HloScheduleProto_InstructionSequence(HloScheduleProto_InstructionSequence&& from) noexcept
      : HloScheduleProto_InstructionSequence(nullptr, std::move(from)) {}
  inline HloScheduleProto_InstructionSequence& operator=(const HloScheduleProto_InstructionSequence& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloScheduleProto_InstructionSequence& operator=(HloScheduleProto_InstructionSequence&& 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 HloScheduleProto_InstructionSequence& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloScheduleProto_InstructionSequence* internal_default_instance() {
    return reinterpret_cast<const HloScheduleProto_InstructionSequence*>(
        &_HloScheduleProto_InstructionSequence_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(HloScheduleProto_InstructionSequence& a, HloScheduleProto_InstructionSequence& b) { a.Swap(&b); }
  inline void Swap(HloScheduleProto_InstructionSequence* 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(HloScheduleProto_InstructionSequence* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloScheduleProto_InstructionSequence* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloScheduleProto_InstructionSequence>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloScheduleProto_InstructionSequence& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloScheduleProto_InstructionSequence& from) { HloScheduleProto_InstructionSequence::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(HloScheduleProto_InstructionSequence* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloScheduleProto.InstructionSequence"; }

 protected:
  explicit HloScheduleProto_InstructionSequence(::google::protobuf::Arena* arena);
  HloScheduleProto_InstructionSequence(::google::protobuf::Arena* arena, const HloScheduleProto_InstructionSequence& from);
  HloScheduleProto_InstructionSequence(::google::protobuf::Arena* arena, HloScheduleProto_InstructionSequence&& from) noexcept
      : HloScheduleProto_InstructionSequence(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 {
    kInstructionIdsFieldNumber = 1,
  };
  // repeated int64 instruction_ids = 1;
  int instruction_ids_size() const;
  private:
  int _internal_instruction_ids_size() const;

  public:
  void clear_instruction_ids() ;
  ::int64_t instruction_ids(int index) const;
  void set_instruction_ids(int index, ::int64_t value);
  void add_instruction_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& instruction_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_instruction_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_instruction_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_instruction_ids();

  public:
  // @@protoc_insertion_point(class_scope:xla.HloScheduleProto.InstructionSequence)
 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 HloScheduleProto_InstructionSequence& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> instruction_ids_;
    mutable ::google::protobuf::internal::CachedSize _instruction_ids_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloModuleProto_ProfileInfo final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloModuleProto.ProfileInfo) */ {
 public:
  inline HloModuleProto_ProfileInfo() : HloModuleProto_ProfileInfo(nullptr) {}
  ~HloModuleProto_ProfileInfo() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloModuleProto_ProfileInfo(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloModuleProto_ProfileInfo(const HloModuleProto_ProfileInfo& from) : HloModuleProto_ProfileInfo(nullptr, from) {}
  inline HloModuleProto_ProfileInfo(HloModuleProto_ProfileInfo&& from) noexcept
      : HloModuleProto_ProfileInfo(nullptr, std::move(from)) {}
  inline HloModuleProto_ProfileInfo& operator=(const HloModuleProto_ProfileInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloModuleProto_ProfileInfo& operator=(HloModuleProto_ProfileInfo&& 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 HloModuleProto_ProfileInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloModuleProto_ProfileInfo* internal_default_instance() {
    return reinterpret_cast<const HloModuleProto_ProfileInfo*>(
        &_HloModuleProto_ProfileInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(HloModuleProto_ProfileInfo& a, HloModuleProto_ProfileInfo& b) { a.Swap(&b); }
  inline void Swap(HloModuleProto_ProfileInfo* 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(HloModuleProto_ProfileInfo* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloModuleProto_ProfileInfo* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloModuleProto_ProfileInfo>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloModuleProto_ProfileInfo& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloModuleProto_ProfileInfo& from) { HloModuleProto_ProfileInfo::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(HloModuleProto_ProfileInfo* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloModuleProto.ProfileInfo"; }

 protected:
  explicit HloModuleProto_ProfileInfo(::google::protobuf::Arena* arena);
  HloModuleProto_ProfileInfo(::google::protobuf::Arena* arena, const HloModuleProto_ProfileInfo& from);
  HloModuleProto_ProfileInfo(::google::protobuf::Arena* arena, HloModuleProto_ProfileInfo&& from) noexcept
      : HloModuleProto_ProfileInfo(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 {
    kFingerprintFieldNumber = 5,
    kRelativeSpeedupFieldNumber = 2,
    kProfileTypeFieldNumber = 1,
    kProfileSourceFieldNumber = 3,
    kCompilationEventFieldNumber = 4,
    kProfileGenerationStrategyFieldNumber = 6,
    kOriginalChangelistFieldNumber = 7,
    kChangelistFieldNumber = 8,
  };
  // string fingerprint = 5;
  void clear_fingerprint() ;
  const std::string& fingerprint() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_fingerprint(Arg_&& arg, Args_... args);
  std::string* mutable_fingerprint();
  PROTOBUF_NODISCARD std::string* release_fingerprint();
  void set_allocated_fingerprint(std::string* value);

  private:
  const std::string& _internal_fingerprint() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_fingerprint(
      const std::string& value);
  std::string* _internal_mutable_fingerprint();

  public:
  // double relative_speedup = 2;
  void clear_relative_speedup() ;
  double relative_speedup() const;
  void set_relative_speedup(double value);

  private:
  double _internal_relative_speedup() const;
  void _internal_set_relative_speedup(double value);

  public:
  // .xla.HloModuleProto.ProfileType profile_type = 1;
  void clear_profile_type() ;
  ::xla::HloModuleProto_ProfileType profile_type() const;
  void set_profile_type(::xla::HloModuleProto_ProfileType value);

  private:
  ::xla::HloModuleProto_ProfileType _internal_profile_type() const;
  void _internal_set_profile_type(::xla::HloModuleProto_ProfileType value);

  public:
  // .xla.ProfileSource profile_source = 3;
  void clear_profile_source() ;
  ::xla::ProfileSource profile_source() const;
  void set_profile_source(::xla::ProfileSource value);

  private:
  ::xla::ProfileSource _internal_profile_source() const;
  void _internal_set_profile_source(::xla::ProfileSource value);

  public:
  // .xla.CompilationEvent compilation_event = 4;
  void clear_compilation_event() ;
  ::xla::CompilationEvent compilation_event() const;
  void set_compilation_event(::xla::CompilationEvent value);

  private:
  ::xla::CompilationEvent _internal_compilation_event() const;
  void _internal_set_compilation_event(::xla::CompilationEvent value);

  public:
  // .xla.HloModuleProto.ProfileGenerationStrategy profile_generation_strategy = 6;
  void clear_profile_generation_strategy() ;
  ::xla::HloModuleProto_ProfileGenerationStrategy profile_generation_strategy() const;
  void set_profile_generation_strategy(::xla::HloModuleProto_ProfileGenerationStrategy value);

  private:
  ::xla::HloModuleProto_ProfileGenerationStrategy _internal_profile_generation_strategy() const;
  void _internal_set_profile_generation_strategy(::xla::HloModuleProto_ProfileGenerationStrategy value);

  public:
  // int64 original_changelist = 7;
  void clear_original_changelist() ;
  ::int64_t original_changelist() const;
  void set_original_changelist(::int64_t value);

  private:
  ::int64_t _internal_original_changelist() const;
  void _internal_set_original_changelist(::int64_t value);

  public:
  // int64 changelist = 8;
  void clear_changelist() ;
  ::int64_t changelist() const;
  void set_changelist(::int64_t value);

  private:
  ::int64_t _internal_changelist() const;
  void _internal_set_changelist(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloModuleProto.ProfileInfo)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 8, 0,
      58, 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 HloModuleProto_ProfileInfo& from_msg);
    ::google::protobuf::internal::ArenaStringPtr fingerprint_;
    double relative_speedup_;
    int profile_type_;
    int profile_source_;
    int compilation_event_;
    int profile_generation_strategy_;
    ::int64_t original_changelist_;
    ::int64_t changelist_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInstructionProto_SliceDimensions final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInstructionProto.SliceDimensions) */ {
 public:
  inline HloInstructionProto_SliceDimensions() : HloInstructionProto_SliceDimensions(nullptr) {}
  ~HloInstructionProto_SliceDimensions() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInstructionProto_SliceDimensions(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInstructionProto_SliceDimensions(const HloInstructionProto_SliceDimensions& from) : HloInstructionProto_SliceDimensions(nullptr, from) {}
  inline HloInstructionProto_SliceDimensions(HloInstructionProto_SliceDimensions&& from) noexcept
      : HloInstructionProto_SliceDimensions(nullptr, std::move(from)) {}
  inline HloInstructionProto_SliceDimensions& operator=(const HloInstructionProto_SliceDimensions& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInstructionProto_SliceDimensions& operator=(HloInstructionProto_SliceDimensions&& 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 HloInstructionProto_SliceDimensions& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloInstructionProto_SliceDimensions* internal_default_instance() {
    return reinterpret_cast<const HloInstructionProto_SliceDimensions*>(
        &_HloInstructionProto_SliceDimensions_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(HloInstructionProto_SliceDimensions& a, HloInstructionProto_SliceDimensions& b) { a.Swap(&b); }
  inline void Swap(HloInstructionProto_SliceDimensions* 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(HloInstructionProto_SliceDimensions* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInstructionProto_SliceDimensions* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInstructionProto_SliceDimensions>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInstructionProto_SliceDimensions& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInstructionProto_SliceDimensions& from) { HloInstructionProto_SliceDimensions::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(HloInstructionProto_SliceDimensions* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInstructionProto.SliceDimensions"; }

 protected:
  explicit HloInstructionProto_SliceDimensions(::google::protobuf::Arena* arena);
  HloInstructionProto_SliceDimensions(::google::protobuf::Arena* arena, const HloInstructionProto_SliceDimensions& from);
  HloInstructionProto_SliceDimensions(::google::protobuf::Arena* arena, HloInstructionProto_SliceDimensions&& from) noexcept
      : HloInstructionProto_SliceDimensions(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 {
    kStartFieldNumber = 1,
    kLimitFieldNumber = 2,
    kStrideFieldNumber = 3,
  };
  // int64 start = 1;
  void clear_start() ;
  ::int64_t start() const;
  void set_start(::int64_t value);

  private:
  ::int64_t _internal_start() const;
  void _internal_set_start(::int64_t value);

  public:
  // int64 limit = 2;
  void clear_limit() ;
  ::int64_t limit() const;
  void set_limit(::int64_t value);

  private:
  ::int64_t _internal_limit() const;
  void _internal_set_limit(::int64_t value);

  public:
  // int64 stride = 3;
  void clear_stride() ;
  ::int64_t stride() const;
  void set_stride(::int64_t value);

  private:
  ::int64_t _internal_stride() const;
  void _internal_set_stride(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloInstructionProto.SliceDimensions)
 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 HloInstructionProto_SliceDimensions& from_msg);
    ::int64_t start_;
    ::int64_t limit_;
    ::int64_t stride_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInputs_LiteralDescriptor final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInputs.LiteralDescriptor) */ {
 public:
  inline HloInputs_LiteralDescriptor() : HloInputs_LiteralDescriptor(nullptr) {}
  ~HloInputs_LiteralDescriptor() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInputs_LiteralDescriptor(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInputs_LiteralDescriptor(const HloInputs_LiteralDescriptor& from) : HloInputs_LiteralDescriptor(nullptr, from) {}
  inline HloInputs_LiteralDescriptor(HloInputs_LiteralDescriptor&& from) noexcept
      : HloInputs_LiteralDescriptor(nullptr, std::move(from)) {}
  inline HloInputs_LiteralDescriptor& operator=(const HloInputs_LiteralDescriptor& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInputs_LiteralDescriptor& operator=(HloInputs_LiteralDescriptor&& 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 HloInputs_LiteralDescriptor& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloInputs_LiteralDescriptor* internal_default_instance() {
    return reinterpret_cast<const HloInputs_LiteralDescriptor*>(
        &_HloInputs_LiteralDescriptor_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 27;
  friend void swap(HloInputs_LiteralDescriptor& a, HloInputs_LiteralDescriptor& b) { a.Swap(&b); }
  inline void Swap(HloInputs_LiteralDescriptor* 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(HloInputs_LiteralDescriptor* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInputs_LiteralDescriptor* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInputs_LiteralDescriptor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInputs_LiteralDescriptor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInputs_LiteralDescriptor& from) { HloInputs_LiteralDescriptor::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(HloInputs_LiteralDescriptor* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInputs.LiteralDescriptor"; }

 protected:
  explicit HloInputs_LiteralDescriptor(::google::protobuf::Arena* arena);
  HloInputs_LiteralDescriptor(::google::protobuf::Arena* arena, const HloInputs_LiteralDescriptor& from);
  HloInputs_LiteralDescriptor(::google::protobuf::Arena* arena, HloInputs_LiteralDescriptor&& from) noexcept
      : HloInputs_LiteralDescriptor(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 {
    kArgumentSizeBytesFieldNumber = 2,
    kVersionFieldNumber = 1,
  };
  // uint64 argument_size_bytes = 2;
  void clear_argument_size_bytes() ;
  ::uint64_t argument_size_bytes() const;
  void set_argument_size_bytes(::uint64_t value);

  private:
  ::uint64_t _internal_argument_size_bytes() const;
  void _internal_set_argument_size_bytes(::uint64_t value);

  public:
  // int32 version = 1;
  void clear_version() ;
  ::int32_t version() const;
  void set_version(::int32_t value);

  private:
  ::int32_t _internal_version() const;
  void _internal_set_version(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloInputs.LiteralDescriptor)
 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 HloInputs_LiteralDescriptor& from_msg);
    ::uint64_t argument_size_bytes_;
    ::int32_t version_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInputOutputAliasProto_AliasEntryProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInputOutputAliasProto.AliasEntryProto) */ {
 public:
  inline HloInputOutputAliasProto_AliasEntryProto() : HloInputOutputAliasProto_AliasEntryProto(nullptr) {}
  ~HloInputOutputAliasProto_AliasEntryProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInputOutputAliasProto_AliasEntryProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInputOutputAliasProto_AliasEntryProto(const HloInputOutputAliasProto_AliasEntryProto& from) : HloInputOutputAliasProto_AliasEntryProto(nullptr, from) {}
  inline HloInputOutputAliasProto_AliasEntryProto(HloInputOutputAliasProto_AliasEntryProto&& from) noexcept
      : HloInputOutputAliasProto_AliasEntryProto(nullptr, std::move(from)) {}
  inline HloInputOutputAliasProto_AliasEntryProto& operator=(const HloInputOutputAliasProto_AliasEntryProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInputOutputAliasProto_AliasEntryProto& operator=(HloInputOutputAliasProto_AliasEntryProto&& 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 HloInputOutputAliasProto_AliasEntryProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloInputOutputAliasProto_AliasEntryProto* internal_default_instance() {
    return reinterpret_cast<const HloInputOutputAliasProto_AliasEntryProto*>(
        &_HloInputOutputAliasProto_AliasEntryProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(HloInputOutputAliasProto_AliasEntryProto& a, HloInputOutputAliasProto_AliasEntryProto& b) { a.Swap(&b); }
  inline void Swap(HloInputOutputAliasProto_AliasEntryProto* 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(HloInputOutputAliasProto_AliasEntryProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInputOutputAliasProto_AliasEntryProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInputOutputAliasProto_AliasEntryProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInputOutputAliasProto_AliasEntryProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInputOutputAliasProto_AliasEntryProto& from) { HloInputOutputAliasProto_AliasEntryProto::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(HloInputOutputAliasProto_AliasEntryProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInputOutputAliasProto.AliasEntryProto"; }

 protected:
  explicit HloInputOutputAliasProto_AliasEntryProto(::google::protobuf::Arena* arena);
  HloInputOutputAliasProto_AliasEntryProto(::google::protobuf::Arena* arena, const HloInputOutputAliasProto_AliasEntryProto& from);
  HloInputOutputAliasProto_AliasEntryProto(::google::protobuf::Arena* arena, HloInputOutputAliasProto_AliasEntryProto&& from) noexcept
      : HloInputOutputAliasProto_AliasEntryProto(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 {
    kOutputShapeIndexFieldNumber = 1,
    kParameterShapeIndexFieldNumber = 3,
    kParameterNumberFieldNumber = 2,
    kKindFieldNumber = 4,
  };
  // repeated int64 output_shape_index = 1;
  int output_shape_index_size() const;
  private:
  int _internal_output_shape_index_size() const;

  public:
  void clear_output_shape_index() ;
  ::int64_t output_shape_index(int index) const;
  void set_output_shape_index(int index, ::int64_t value);
  void add_output_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& output_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_output_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_output_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_output_shape_index();

  public:
  // repeated int64 parameter_shape_index = 3;
  int parameter_shape_index_size() const;
  private:
  int _internal_parameter_shape_index_size() const;

  public:
  void clear_parameter_shape_index() ;
  ::int64_t parameter_shape_index(int index) const;
  void set_parameter_shape_index(int index, ::int64_t value);
  void add_parameter_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_parameter_shape_index();

  public:
  // int64 parameter_number = 2;
  void clear_parameter_number() ;
  ::int64_t parameter_number() const;
  void set_parameter_number(::int64_t value);

  private:
  ::int64_t _internal_parameter_number() const;
  void _internal_set_parameter_number(::int64_t value);

  public:
  // .xla.Kind kind = 4;
  void clear_kind() ;
  ::xla::Kind kind() const;
  void set_kind(::xla::Kind value);

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

  public:
  // @@protoc_insertion_point(class_scope:xla.HloInputOutputAliasProto.AliasEntryProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 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 HloInputOutputAliasProto_AliasEntryProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> output_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _output_shape_index_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _parameter_shape_index_cached_byte_size_;
    ::int64_t parameter_number_;
    int kind_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloBufferDonorProto_BufferDonorEntryProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloBufferDonorProto.BufferDonorEntryProto) */ {
 public:
  inline HloBufferDonorProto_BufferDonorEntryProto() : HloBufferDonorProto_BufferDonorEntryProto(nullptr) {}
  ~HloBufferDonorProto_BufferDonorEntryProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloBufferDonorProto_BufferDonorEntryProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloBufferDonorProto_BufferDonorEntryProto(const HloBufferDonorProto_BufferDonorEntryProto& from) : HloBufferDonorProto_BufferDonorEntryProto(nullptr, from) {}
  inline HloBufferDonorProto_BufferDonorEntryProto(HloBufferDonorProto_BufferDonorEntryProto&& from) noexcept
      : HloBufferDonorProto_BufferDonorEntryProto(nullptr, std::move(from)) {}
  inline HloBufferDonorProto_BufferDonorEntryProto& operator=(const HloBufferDonorProto_BufferDonorEntryProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloBufferDonorProto_BufferDonorEntryProto& operator=(HloBufferDonorProto_BufferDonorEntryProto&& 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 HloBufferDonorProto_BufferDonorEntryProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloBufferDonorProto_BufferDonorEntryProto* internal_default_instance() {
    return reinterpret_cast<const HloBufferDonorProto_BufferDonorEntryProto*>(
        &_HloBufferDonorProto_BufferDonorEntryProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(HloBufferDonorProto_BufferDonorEntryProto& a, HloBufferDonorProto_BufferDonorEntryProto& b) { a.Swap(&b); }
  inline void Swap(HloBufferDonorProto_BufferDonorEntryProto* 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(HloBufferDonorProto_BufferDonorEntryProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloBufferDonorProto_BufferDonorEntryProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloBufferDonorProto_BufferDonorEntryProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloBufferDonorProto_BufferDonorEntryProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloBufferDonorProto_BufferDonorEntryProto& from) { HloBufferDonorProto_BufferDonorEntryProto::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(HloBufferDonorProto_BufferDonorEntryProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloBufferDonorProto.BufferDonorEntryProto"; }

 protected:
  explicit HloBufferDonorProto_BufferDonorEntryProto(::google::protobuf::Arena* arena);
  HloBufferDonorProto_BufferDonorEntryProto(::google::protobuf::Arena* arena, const HloBufferDonorProto_BufferDonorEntryProto& from);
  HloBufferDonorProto_BufferDonorEntryProto(::google::protobuf::Arena* arena, HloBufferDonorProto_BufferDonorEntryProto&& from) noexcept
      : HloBufferDonorProto_BufferDonorEntryProto(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 {
    kParameterShapeIndexFieldNumber = 2,
    kParameterNumberFieldNumber = 1,
  };
  // repeated int64 parameter_shape_index = 2;
  int parameter_shape_index_size() const;
  private:
  int _internal_parameter_shape_index_size() const;

  public:
  void clear_parameter_shape_index() ;
  ::int64_t parameter_shape_index(int index) const;
  void set_parameter_shape_index(int index, ::int64_t value);
  void add_parameter_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_parameter_shape_index();

  public:
  // int64 parameter_number = 1;
  void clear_parameter_number() ;
  ::int64_t parameter_number() const;
  void set_parameter_number(::int64_t value);

  private:
  ::int64_t _internal_parameter_number() const;
  void _internal_set_parameter_number(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloBufferDonorProto.BufferDonorEntryProto)
 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 HloBufferDonorProto_BufferDonorEntryProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _parameter_shape_index_cached_byte_size_;
    ::int64_t parameter_number_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HeapSimulatorTrace_Event final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HeapSimulatorTrace.Event) */ {
 public:
  inline HeapSimulatorTrace_Event() : HeapSimulatorTrace_Event(nullptr) {}
  ~HeapSimulatorTrace_Event() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HeapSimulatorTrace_Event(
      ::google::protobuf::internal::ConstantInitialized);

  inline HeapSimulatorTrace_Event(const HeapSimulatorTrace_Event& from) : HeapSimulatorTrace_Event(nullptr, from) {}
  inline HeapSimulatorTrace_Event(HeapSimulatorTrace_Event&& from) noexcept
      : HeapSimulatorTrace_Event(nullptr, std::move(from)) {}
  inline HeapSimulatorTrace_Event& operator=(const HeapSimulatorTrace_Event& from) {
    CopyFrom(from);
    return *this;
  }
  inline HeapSimulatorTrace_Event& operator=(HeapSimulatorTrace_Event&& 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 HeapSimulatorTrace_Event& default_instance() {
    return *internal_default_instance();
  }
  static inline const HeapSimulatorTrace_Event* internal_default_instance() {
    return reinterpret_cast<const HeapSimulatorTrace_Event*>(
        &_HeapSimulatorTrace_Event_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(HeapSimulatorTrace_Event& a, HeapSimulatorTrace_Event& b) { a.Swap(&b); }
  inline void Swap(HeapSimulatorTrace_Event* 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(HeapSimulatorTrace_Event* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HeapSimulatorTrace_Event* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HeapSimulatorTrace_Event>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HeapSimulatorTrace_Event& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HeapSimulatorTrace_Event& from) { HeapSimulatorTrace_Event::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(HeapSimulatorTrace_Event* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HeapSimulatorTrace.Event"; }

 protected:
  explicit HeapSimulatorTrace_Event(::google::protobuf::Arena* arena);
  HeapSimulatorTrace_Event(::google::protobuf::Arena* arena, const HeapSimulatorTrace_Event& from);
  HeapSimulatorTrace_Event(::google::protobuf::Arena* arena, HeapSimulatorTrace_Event&& from) noexcept
      : HeapSimulatorTrace_Event(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 Kind = HeapSimulatorTrace_Event_Kind;
  static constexpr Kind ALLOC = HeapSimulatorTrace_Event_Kind_ALLOC;
  static constexpr Kind FREE = HeapSimulatorTrace_Event_Kind_FREE;
  static constexpr Kind SHARE_WITH = HeapSimulatorTrace_Event_Kind_SHARE_WITH;
  static inline bool Kind_IsValid(int value) {
    return HeapSimulatorTrace_Event_Kind_IsValid(value);
  }
  static constexpr Kind Kind_MIN = HeapSimulatorTrace_Event_Kind_Kind_MIN;
  static constexpr Kind Kind_MAX = HeapSimulatorTrace_Event_Kind_Kind_MAX;
  static constexpr int Kind_ARRAYSIZE = HeapSimulatorTrace_Event_Kind_Kind_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* Kind_descriptor() {
    return HeapSimulatorTrace_Event_Kind_descriptor();
  }
  template <typename T>
  static inline const std::string& Kind_Name(T value) {
    return HeapSimulatorTrace_Event_Kind_Name(value);
  }
  static inline bool Kind_Parse(absl::string_view name, Kind* value) {
    return HeapSimulatorTrace_Event_Kind_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kComputationNameFieldNumber = 3,
    kInstructionNameFieldNumber = 4,
    kBufferIdFieldNumber = 2,
    kShareWithCanonicalIdFieldNumber = 5,
    kKindFieldNumber = 1,
  };
  // string computation_name = 3;
  void clear_computation_name() ;
  const std::string& computation_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_computation_name(Arg_&& arg, Args_... args);
  std::string* mutable_computation_name();
  PROTOBUF_NODISCARD std::string* release_computation_name();
  void set_allocated_computation_name(std::string* value);

  private:
  const std::string& _internal_computation_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_computation_name(
      const std::string& value);
  std::string* _internal_mutable_computation_name();

  public:
  // string instruction_name = 4;
  void clear_instruction_name() ;
  const std::string& instruction_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_instruction_name(Arg_&& arg, Args_... args);
  std::string* mutable_instruction_name();
  PROTOBUF_NODISCARD std::string* release_instruction_name();
  void set_allocated_instruction_name(std::string* value);

  private:
  const std::string& _internal_instruction_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_instruction_name(
      const std::string& value);
  std::string* _internal_mutable_instruction_name();

  public:
  // int64 buffer_id = 2;
  void clear_buffer_id() ;
  ::int64_t buffer_id() const;
  void set_buffer_id(::int64_t value);

  private:
  ::int64_t _internal_buffer_id() const;
  void _internal_set_buffer_id(::int64_t value);

  public:
  // int64 share_with_canonical_id = 5;
  void clear_share_with_canonical_id() ;
  ::int64_t share_with_canonical_id() const;
  void set_share_with_canonical_id(::int64_t value);

  private:
  ::int64_t _internal_share_with_canonical_id() const;
  void _internal_set_share_with_canonical_id(::int64_t value);

  public:
  // .xla.HeapSimulatorTrace.Event.Kind kind = 1;
  void clear_kind() ;
  ::xla::HeapSimulatorTrace_Event_Kind kind() const;
  void set_kind(::xla::HeapSimulatorTrace_Event_Kind value);

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

  public:
  // @@protoc_insertion_point(class_scope:xla.HeapSimulatorTrace.Event)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 0,
      69, 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 HeapSimulatorTrace_Event& from_msg);
    ::google::protobuf::internal::ArenaStringPtr computation_name_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::int64_t buffer_id_;
    ::int64_t share_with_canonical_id_;
    int kind_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT CrossProgramPrefetch final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.CrossProgramPrefetch) */ {
 public:
  inline CrossProgramPrefetch() : CrossProgramPrefetch(nullptr) {}
  ~CrossProgramPrefetch() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CrossProgramPrefetch(
      ::google::protobuf::internal::ConstantInitialized);

  inline CrossProgramPrefetch(const CrossProgramPrefetch& from) : CrossProgramPrefetch(nullptr, from) {}
  inline CrossProgramPrefetch(CrossProgramPrefetch&& from) noexcept
      : CrossProgramPrefetch(nullptr, std::move(from)) {}
  inline CrossProgramPrefetch& operator=(const CrossProgramPrefetch& from) {
    CopyFrom(from);
    return *this;
  }
  inline CrossProgramPrefetch& operator=(CrossProgramPrefetch&& 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 CrossProgramPrefetch& default_instance() {
    return *internal_default_instance();
  }
  static inline const CrossProgramPrefetch* internal_default_instance() {
    return reinterpret_cast<const CrossProgramPrefetch*>(
        &_CrossProgramPrefetch_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(CrossProgramPrefetch& a, CrossProgramPrefetch& b) { a.Swap(&b); }
  inline void Swap(CrossProgramPrefetch* 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(CrossProgramPrefetch* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  CrossProgramPrefetch* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<CrossProgramPrefetch>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CrossProgramPrefetch& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CrossProgramPrefetch& from) { CrossProgramPrefetch::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(CrossProgramPrefetch* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.CrossProgramPrefetch"; }

 protected:
  explicit CrossProgramPrefetch(::google::protobuf::Arena* arena);
  CrossProgramPrefetch(::google::protobuf::Arena* arena, const CrossProgramPrefetch& from);
  CrossProgramPrefetch(::google::protobuf::Arena* arena, CrossProgramPrefetch&& from) noexcept
      : CrossProgramPrefetch(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 {
    kIndexFieldNumber = 2,
    kParameterFieldNumber = 1,
    kOffsetFieldNumber = 3,
  };
  // repeated int64 index = 2;
  int index_size() const;
  private:
  int _internal_index_size() const;

  public:
  void clear_index() ;
  ::int64_t index(int index) const;
  void set_index(int index, ::int64_t value);
  void add_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_index();

  public:
  // int64 parameter = 1;
  void clear_parameter() ;
  ::int64_t parameter() const;
  void set_parameter(::int64_t value);

  private:
  ::int64_t _internal_parameter() const;
  void _internal_set_parameter(::int64_t value);

  public:
  // int64 offset = 3;
  void clear_offset() ;
  ::int64_t offset() const;
  void set_offset(::int64_t value);

  private:
  ::int64_t _internal_offset() const;
  void _internal_set_offset(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.CrossProgramPrefetch)
 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 CrossProgramPrefetch& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> index_;
    mutable ::google::protobuf::internal::CachedSize _index_cached_byte_size_;
    ::int64_t parameter_;
    ::int64_t offset_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT BufferAllocationProto_Assigned final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.BufferAllocationProto.Assigned) */ {
 public:
  inline BufferAllocationProto_Assigned() : BufferAllocationProto_Assigned(nullptr) {}
  ~BufferAllocationProto_Assigned() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BufferAllocationProto_Assigned(
      ::google::protobuf::internal::ConstantInitialized);

  inline BufferAllocationProto_Assigned(const BufferAllocationProto_Assigned& from) : BufferAllocationProto_Assigned(nullptr, from) {}
  inline BufferAllocationProto_Assigned(BufferAllocationProto_Assigned&& from) noexcept
      : BufferAllocationProto_Assigned(nullptr, std::move(from)) {}
  inline BufferAllocationProto_Assigned& operator=(const BufferAllocationProto_Assigned& from) {
    CopyFrom(from);
    return *this;
  }
  inline BufferAllocationProto_Assigned& operator=(BufferAllocationProto_Assigned&& 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 BufferAllocationProto_Assigned& default_instance() {
    return *internal_default_instance();
  }
  static inline const BufferAllocationProto_Assigned* internal_default_instance() {
    return reinterpret_cast<const BufferAllocationProto_Assigned*>(
        &_BufferAllocationProto_Assigned_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(BufferAllocationProto_Assigned& a, BufferAllocationProto_Assigned& b) { a.Swap(&b); }
  inline void Swap(BufferAllocationProto_Assigned* 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(BufferAllocationProto_Assigned* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BufferAllocationProto_Assigned* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<BufferAllocationProto_Assigned>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BufferAllocationProto_Assigned& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BufferAllocationProto_Assigned& from) { BufferAllocationProto_Assigned::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(BufferAllocationProto_Assigned* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.BufferAllocationProto.Assigned"; }

 protected:
  explicit BufferAllocationProto_Assigned(::google::protobuf::Arena* arena);
  BufferAllocationProto_Assigned(::google::protobuf::Arena* arena, const BufferAllocationProto_Assigned& from);
  BufferAllocationProto_Assigned(::google::protobuf::Arena* arena, BufferAllocationProto_Assigned&& from) noexcept
      : BufferAllocationProto_Assigned(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 {
    kLogicalBufferIdFieldNumber = 1,
    kOffsetFieldNumber = 2,
    kSizeFieldNumber = 3,
  };
  // int64 logical_buffer_id = 1;
  void clear_logical_buffer_id() ;
  ::int64_t logical_buffer_id() const;
  void set_logical_buffer_id(::int64_t value);

  private:
  ::int64_t _internal_logical_buffer_id() const;
  void _internal_set_logical_buffer_id(::int64_t value);

  public:
  // int64 offset = 2;
  void clear_offset() ;
  ::int64_t offset() const;
  void set_offset(::int64_t value);

  private:
  ::int64_t _internal_offset() const;
  void _internal_set_offset(::int64_t value);

  public:
  // int64 size = 3;
  void clear_size() ;
  ::int64_t size() const;
  void set_size(::int64_t value);

  private:
  ::int64_t _internal_size() const;
  void _internal_set_size(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.BufferAllocationProto.Assigned)
 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 BufferAllocationProto_Assigned& from_msg);
    ::int64_t logical_buffer_id_;
    ::int64_t offset_;
    ::int64_t size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT StackFrameIndexProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.StackFrameIndexProto) */ {
 public:
  inline StackFrameIndexProto() : StackFrameIndexProto(nullptr) {}
  ~StackFrameIndexProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR StackFrameIndexProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline StackFrameIndexProto(const StackFrameIndexProto& from) : StackFrameIndexProto(nullptr, from) {}
  inline StackFrameIndexProto(StackFrameIndexProto&& from) noexcept
      : StackFrameIndexProto(nullptr, std::move(from)) {}
  inline StackFrameIndexProto& operator=(const StackFrameIndexProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline StackFrameIndexProto& operator=(StackFrameIndexProto&& 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 StackFrameIndexProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const StackFrameIndexProto* internal_default_instance() {
    return reinterpret_cast<const StackFrameIndexProto*>(
        &_StackFrameIndexProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(StackFrameIndexProto& a, StackFrameIndexProto& b) { a.Swap(&b); }
  inline void Swap(StackFrameIndexProto* 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(StackFrameIndexProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  StackFrameIndexProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<StackFrameIndexProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const StackFrameIndexProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const StackFrameIndexProto& from) { StackFrameIndexProto::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(StackFrameIndexProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.StackFrameIndexProto"; }

 protected:
  explicit StackFrameIndexProto(::google::protobuf::Arena* arena);
  StackFrameIndexProto(::google::protobuf::Arena* arena, const StackFrameIndexProto& from);
  StackFrameIndexProto(::google::protobuf::Arena* arena, StackFrameIndexProto&& from) noexcept
      : StackFrameIndexProto(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 FileLocation = StackFrameIndexProto_FileLocation;
  using StackFrame = StackFrameIndexProto_StackFrame;

  // accessors -------------------------------------------------------
  enum : int {
    kFileNamesFieldNumber = 1,
    kFunctionNamesFieldNumber = 2,
    kFileLocationsFieldNumber = 3,
    kStackFramesFieldNumber = 4,
  };
  // repeated string file_names = 1;
  int file_names_size() const;
  private:
  int _internal_file_names_size() const;

  public:
  void clear_file_names() ;
  const std::string& file_names(int index) const;
  std::string* mutable_file_names(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_file_names(int index, Arg_&& value, Args_... args);
  std::string* add_file_names();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_file_names(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& file_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_file_names();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_file_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_file_names();

  public:
  // repeated string function_names = 2;
  int function_names_size() const;
  private:
  int _internal_function_names_size() const;

  public:
  void clear_function_names() ;
  const std::string& function_names(int index) const;
  std::string* mutable_function_names(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_function_names(int index, Arg_&& value, Args_... args);
  std::string* add_function_names();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_function_names(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& function_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_function_names();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_function_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_function_names();

  public:
  // repeated .xla.StackFrameIndexProto.FileLocation file_locations = 3;
  int file_locations_size() const;
  private:
  int _internal_file_locations_size() const;

  public:
  void clear_file_locations() ;
  ::xla::StackFrameIndexProto_FileLocation* mutable_file_locations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>* mutable_file_locations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>& _internal_file_locations() const;
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>* _internal_mutable_file_locations();
  public:
  const ::xla::StackFrameIndexProto_FileLocation& file_locations(int index) const;
  ::xla::StackFrameIndexProto_FileLocation* add_file_locations();
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>& file_locations() const;
  // repeated .xla.StackFrameIndexProto.StackFrame stack_frames = 4;
  int stack_frames_size() const;
  private:
  int _internal_stack_frames_size() const;

  public:
  void clear_stack_frames() ;
  ::xla::StackFrameIndexProto_StackFrame* mutable_stack_frames(int index);
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>* mutable_stack_frames();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>& _internal_stack_frames() const;
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>* _internal_mutable_stack_frames();
  public:
  const ::xla::StackFrameIndexProto_StackFrame& stack_frames(int index) const;
  ::xla::StackFrameIndexProto_StackFrame* add_stack_frames();
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>& stack_frames() const;
  // @@protoc_insertion_point(class_scope:xla.StackFrameIndexProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 2,
      57, 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 StackFrameIndexProto& from_msg);
    ::google::protobuf::RepeatedPtrField<std::string> file_names_;
    ::google::protobuf::RepeatedPtrField<std::string> function_names_;
    ::google::protobuf::RepeatedPtrField< ::xla::StackFrameIndexProto_FileLocation > file_locations_;
    ::google::protobuf::RepeatedPtrField< ::xla::StackFrameIndexProto_StackFrame > stack_frames_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT LogicalBufferProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.LogicalBufferProto) */ {
 public:
  inline LogicalBufferProto() : LogicalBufferProto(nullptr) {}
  ~LogicalBufferProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR LogicalBufferProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline LogicalBufferProto(const LogicalBufferProto& from) : LogicalBufferProto(nullptr, from) {}
  inline LogicalBufferProto(LogicalBufferProto&& from) noexcept
      : LogicalBufferProto(nullptr, std::move(from)) {}
  inline LogicalBufferProto& operator=(const LogicalBufferProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline LogicalBufferProto& operator=(LogicalBufferProto&& 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 LogicalBufferProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const LogicalBufferProto* internal_default_instance() {
    return reinterpret_cast<const LogicalBufferProto*>(
        &_LogicalBufferProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(LogicalBufferProto& a, LogicalBufferProto& b) { a.Swap(&b); }
  inline void Swap(LogicalBufferProto* 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(LogicalBufferProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  LogicalBufferProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<LogicalBufferProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LogicalBufferProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LogicalBufferProto& from) { LogicalBufferProto::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(LogicalBufferProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.LogicalBufferProto"; }

 protected:
  explicit LogicalBufferProto(::google::protobuf::Arena* arena);
  LogicalBufferProto(::google::protobuf::Arena* arena, const LogicalBufferProto& from);
  LogicalBufferProto(::google::protobuf::Arena* arena, LogicalBufferProto&& from) noexcept
      : LogicalBufferProto(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 Location = LogicalBufferProto_Location;

  // accessors -------------------------------------------------------
  enum : int {
    kDefinedAtFieldNumber = 3,
    kIdFieldNumber = 1,
    kSizeFieldNumber = 2,
    kColorFieldNumber = 4,
  };
  // .xla.LogicalBufferProto.Location defined_at = 3;
  bool has_defined_at() const;
  void clear_defined_at() ;
  const ::xla::LogicalBufferProto_Location& defined_at() const;
  PROTOBUF_NODISCARD ::xla::LogicalBufferProto_Location* release_defined_at();
  ::xla::LogicalBufferProto_Location* mutable_defined_at();
  void set_allocated_defined_at(::xla::LogicalBufferProto_Location* value);
  void unsafe_arena_set_allocated_defined_at(::xla::LogicalBufferProto_Location* value);
  ::xla::LogicalBufferProto_Location* unsafe_arena_release_defined_at();

  private:
  const ::xla::LogicalBufferProto_Location& _internal_defined_at() const;
  ::xla::LogicalBufferProto_Location* _internal_mutable_defined_at();

  public:
  // int64 id = 1;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

  private:
  ::int64_t _internal_id() const;
  void _internal_set_id(::int64_t value);

  public:
  // int64 size = 2;
  void clear_size() ;
  ::int64_t size() const;
  void set_size(::int64_t value);

  private:
  ::int64_t _internal_size() const;
  void _internal_set_size(::int64_t value);

  public:
  // int64 color = 4;
  void clear_color() ;
  ::int64_t color() const;
  void set_color(::int64_t value);

  private:
  ::int64_t _internal_color() const;
  void _internal_set_color(::int64_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const LogicalBufferProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::LogicalBufferProto_Location* defined_at_;
    ::int64_t id_;
    ::int64_t size_;
    ::int64_t color_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class HloScheduleProto_SequencesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          HloScheduleProto_SequencesEntry_DoNotUse, ::int64_t, ::xla::HloScheduleProto_InstructionSequence,
          ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
          ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      HloScheduleProto_SequencesEntry_DoNotUse, ::int64_t, ::xla::HloScheduleProto_InstructionSequence,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  HloScheduleProto_SequencesEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloScheduleProto_SequencesEntry_DoNotUse(
      ::google::protobuf::internal::ConstantInitialized);
  explicit HloScheduleProto_SequencesEntry_DoNotUse(::google::protobuf::Arena* arena);
  static const HloScheduleProto_SequencesEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const HloScheduleProto_SequencesEntry_DoNotUse*>(
        &_HloScheduleProto_SequencesEntry_DoNotUse_default_instance_);
  }


 private:
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      0, 2>
      _table_;

  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloPassMetadata final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloPassMetadata) */ {
 public:
  inline HloPassMetadata() : HloPassMetadata(nullptr) {}
  ~HloPassMetadata() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloPassMetadata(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloPassMetadata(const HloPassMetadata& from) : HloPassMetadata(nullptr, from) {}
  inline HloPassMetadata(HloPassMetadata&& from) noexcept
      : HloPassMetadata(nullptr, std::move(from)) {}
  inline HloPassMetadata& operator=(const HloPassMetadata& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloPassMetadata& operator=(HloPassMetadata&& 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 HloPassMetadata& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloPassMetadata* internal_default_instance() {
    return reinterpret_cast<const HloPassMetadata*>(
        &_HloPassMetadata_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 31;
  friend void swap(HloPassMetadata& a, HloPassMetadata& b) { a.Swap(&b); }
  inline void Swap(HloPassMetadata* 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(HloPassMetadata* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloPassMetadata* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloPassMetadata>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloPassMetadata& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloPassMetadata& from) { HloPassMetadata::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(HloPassMetadata* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloPassMetadata"; }

 protected:
  explicit HloPassMetadata(::google::protobuf::Arena* arena);
  HloPassMetadata(::google::protobuf::Arena* arena, const HloPassMetadata& from);
  HloPassMetadata(::google::protobuf::Arena* arena, HloPassMetadata&& from) noexcept
      : HloPassMetadata(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 {
    kDumpFilenamesFieldNumber = 4,
    kModuleGroupModuleIdsFieldNumber = 7,
    kKvMetricsFieldNumber = 11,
    kPassNameFieldNumber = 2,
    kPipelineNameFieldNumber = 3,
    kCustomMetadataFieldNumber = 10,
    kPassIdFieldNumber = 1,
    kModuleIdFieldNumber = 6,
    kStartTimestampUsecFieldNumber = 8,
    kEndTimestampUsecFieldNumber = 9,
    kModuleChangedFieldNumber = 5,
  };
  // repeated string dump_filenames = 4;
  int dump_filenames_size() const;
  private:
  int _internal_dump_filenames_size() const;

  public:
  void clear_dump_filenames() ;
  const std::string& dump_filenames(int index) const;
  std::string* mutable_dump_filenames(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_dump_filenames(int index, Arg_&& value, Args_... args);
  std::string* add_dump_filenames();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_dump_filenames(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& dump_filenames() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_dump_filenames();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_dump_filenames() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_dump_filenames();

  public:
  // repeated int64 module_group_module_ids = 7;
  int module_group_module_ids_size() const;
  private:
  int _internal_module_group_module_ids_size() const;

  public:
  void clear_module_group_module_ids() ;
  ::int64_t module_group_module_ids(int index) const;
  void set_module_group_module_ids(int index, ::int64_t value);
  void add_module_group_module_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& module_group_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_module_group_module_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_module_group_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_module_group_module_ids();

  public:
  // repeated .xla.KeyValueMetric kv_metrics = 11;
  int kv_metrics_size() const;
  private:
  int _internal_kv_metrics_size() const;

  public:
  void clear_kv_metrics() ;
  ::xla::KeyValueMetric* mutable_kv_metrics(int index);
  ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>* mutable_kv_metrics();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>& _internal_kv_metrics() const;
  ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>* _internal_mutable_kv_metrics();
  public:
  const ::xla::KeyValueMetric& kv_metrics(int index) const;
  ::xla::KeyValueMetric* add_kv_metrics();
  const ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>& kv_metrics() const;
  // string pass_name = 2;
  void clear_pass_name() ;
  const std::string& pass_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_pass_name(Arg_&& arg, Args_... args);
  std::string* mutable_pass_name();
  PROTOBUF_NODISCARD std::string* release_pass_name();
  void set_allocated_pass_name(std::string* value);

  private:
  const std::string& _internal_pass_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_pass_name(
      const std::string& value);
  std::string* _internal_mutable_pass_name();

  public:
  // string pipeline_name = 3;
  void clear_pipeline_name() ;
  const std::string& pipeline_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_pipeline_name(Arg_&& arg, Args_... args);
  std::string* mutable_pipeline_name();
  PROTOBUF_NODISCARD std::string* release_pipeline_name();
  void set_allocated_pipeline_name(std::string* value);

  private:
  const std::string& _internal_pipeline_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_pipeline_name(
      const std::string& value);
  std::string* _internal_mutable_pipeline_name();

  public:
  // .google.protobuf.Any custom_metadata = 10;
  bool has_custom_metadata() const;
  void clear_custom_metadata() ;
  const ::google::protobuf::Any& custom_metadata() const;
  PROTOBUF_NODISCARD ::google::protobuf::Any* release_custom_metadata();
  ::google::protobuf::Any* mutable_custom_metadata();
  void set_allocated_custom_metadata(::google::protobuf::Any* value);
  void unsafe_arena_set_allocated_custom_metadata(::google::protobuf::Any* value);
  ::google::protobuf::Any* unsafe_arena_release_custom_metadata();

  private:
  const ::google::protobuf::Any& _internal_custom_metadata() const;
  ::google::protobuf::Any* _internal_mutable_custom_metadata();

  public:
  // int64 pass_id = 1;
  void clear_pass_id() ;
  ::int64_t pass_id() const;
  void set_pass_id(::int64_t value);

  private:
  ::int64_t _internal_pass_id() const;
  void _internal_set_pass_id(::int64_t value);

  public:
  // int64 module_id = 6;
  void clear_module_id() ;
  ::int64_t module_id() const;
  void set_module_id(::int64_t value);

  private:
  ::int64_t _internal_module_id() const;
  void _internal_set_module_id(::int64_t value);

  public:
  // int64 start_timestamp_usec = 8;
  void clear_start_timestamp_usec() ;
  ::int64_t start_timestamp_usec() const;
  void set_start_timestamp_usec(::int64_t value);

  private:
  ::int64_t _internal_start_timestamp_usec() const;
  void _internal_set_start_timestamp_usec(::int64_t value);

  public:
  // int64 end_timestamp_usec = 9;
  void clear_end_timestamp_usec() ;
  ::int64_t end_timestamp_usec() const;
  void set_end_timestamp_usec(::int64_t value);

  private:
  ::int64_t _internal_end_timestamp_usec() const;
  void _internal_set_end_timestamp_usec(::int64_t value);

  public:
  // bool module_changed = 5;
  void clear_module_changed() ;
  bool module_changed() const;
  void set_module_changed(bool value);

  private:
  bool _internal_module_changed() const;
  void _internal_set_module_changed(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloPassMetadata)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 11, 2,
      72, 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 HloPassMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<std::string> dump_filenames_;
    ::google::protobuf::RepeatedField<::int64_t> module_group_module_ids_;
    mutable ::google::protobuf::internal::CachedSize _module_group_module_ids_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::KeyValueMetric > kv_metrics_;
    ::google::protobuf::internal::ArenaStringPtr pass_name_;
    ::google::protobuf::internal::ArenaStringPtr pipeline_name_;
    ::google::protobuf::Any* custom_metadata_;
    ::int64_t pass_id_;
    ::int64_t module_id_;
    ::int64_t start_timestamp_usec_;
    ::int64_t end_timestamp_usec_;
    bool module_changed_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInputOutputAliasProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInputOutputAliasProto) */ {
 public:
  inline HloInputOutputAliasProto() : HloInputOutputAliasProto(nullptr) {}
  ~HloInputOutputAliasProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInputOutputAliasProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInputOutputAliasProto(const HloInputOutputAliasProto& from) : HloInputOutputAliasProto(nullptr, from) {}
  inline HloInputOutputAliasProto(HloInputOutputAliasProto&& from) noexcept
      : HloInputOutputAliasProto(nullptr, std::move(from)) {}
  inline HloInputOutputAliasProto& operator=(const HloInputOutputAliasProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInputOutputAliasProto& operator=(HloInputOutputAliasProto&& 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 HloInputOutputAliasProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloInputOutputAliasProto* internal_default_instance() {
    return reinterpret_cast<const HloInputOutputAliasProto*>(
        &_HloInputOutputAliasProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(HloInputOutputAliasProto& a, HloInputOutputAliasProto& b) { a.Swap(&b); }
  inline void Swap(HloInputOutputAliasProto* 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(HloInputOutputAliasProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInputOutputAliasProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInputOutputAliasProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInputOutputAliasProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInputOutputAliasProto& from) { HloInputOutputAliasProto::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(HloInputOutputAliasProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInputOutputAliasProto"; }

 protected:
  explicit HloInputOutputAliasProto(::google::protobuf::Arena* arena);
  HloInputOutputAliasProto(::google::protobuf::Arena* arena, const HloInputOutputAliasProto& from);
  HloInputOutputAliasProto(::google::protobuf::Arena* arena, HloInputOutputAliasProto&& from) noexcept
      : HloInputOutputAliasProto(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 AliasEntryProto = HloInputOutputAliasProto_AliasEntryProto;

  // accessors -------------------------------------------------------
  enum : int {
    kEntriesFieldNumber = 1,
  };
  // repeated .xla.HloInputOutputAliasProto.AliasEntryProto entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  ::xla::HloInputOutputAliasProto_AliasEntryProto* mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>* mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>* _internal_mutable_entries();
  public:
  const ::xla::HloInputOutputAliasProto_AliasEntryProto& entries(int index) const;
  ::xla::HloInputOutputAliasProto_AliasEntryProto* add_entries();
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>& entries() const;
  // @@protoc_insertion_point(class_scope:xla.HloInputOutputAliasProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const HloInputOutputAliasProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputOutputAliasProto_AliasEntryProto > entries_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloBufferDonorProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloBufferDonorProto) */ {
 public:
  inline HloBufferDonorProto() : HloBufferDonorProto(nullptr) {}
  ~HloBufferDonorProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloBufferDonorProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloBufferDonorProto(const HloBufferDonorProto& from) : HloBufferDonorProto(nullptr, from) {}
  inline HloBufferDonorProto(HloBufferDonorProto&& from) noexcept
      : HloBufferDonorProto(nullptr, std::move(from)) {}
  inline HloBufferDonorProto& operator=(const HloBufferDonorProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloBufferDonorProto& operator=(HloBufferDonorProto&& 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 HloBufferDonorProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloBufferDonorProto* internal_default_instance() {
    return reinterpret_cast<const HloBufferDonorProto*>(
        &_HloBufferDonorProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(HloBufferDonorProto& a, HloBufferDonorProto& b) { a.Swap(&b); }
  inline void Swap(HloBufferDonorProto* 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(HloBufferDonorProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloBufferDonorProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloBufferDonorProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloBufferDonorProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloBufferDonorProto& from) { HloBufferDonorProto::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(HloBufferDonorProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloBufferDonorProto"; }

 protected:
  explicit HloBufferDonorProto(::google::protobuf::Arena* arena);
  HloBufferDonorProto(::google::protobuf::Arena* arena, const HloBufferDonorProto& from);
  HloBufferDonorProto(::google::protobuf::Arena* arena, HloBufferDonorProto&& from) noexcept
      : HloBufferDonorProto(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 BufferDonorEntryProto = HloBufferDonorProto_BufferDonorEntryProto;

  // accessors -------------------------------------------------------
  enum : int {
    kEntriesFieldNumber = 1,
  };
  // repeated .xla.HloBufferDonorProto.BufferDonorEntryProto entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  ::xla::HloBufferDonorProto_BufferDonorEntryProto* mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>* mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>* _internal_mutable_entries();
  public:
  const ::xla::HloBufferDonorProto_BufferDonorEntryProto& entries(int index) const;
  ::xla::HloBufferDonorProto_BufferDonorEntryProto* add_entries();
  const ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>& entries() const;
  // @@protoc_insertion_point(class_scope:xla.HloBufferDonorProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const HloBufferDonorProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HloBufferDonorProto_BufferDonorEntryProto > entries_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HeapSimulatorTrace final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HeapSimulatorTrace) */ {
 public:
  inline HeapSimulatorTrace() : HeapSimulatorTrace(nullptr) {}
  ~HeapSimulatorTrace() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HeapSimulatorTrace(
      ::google::protobuf::internal::ConstantInitialized);

  inline HeapSimulatorTrace(const HeapSimulatorTrace& from) : HeapSimulatorTrace(nullptr, from) {}
  inline HeapSimulatorTrace(HeapSimulatorTrace&& from) noexcept
      : HeapSimulatorTrace(nullptr, std::move(from)) {}
  inline HeapSimulatorTrace& operator=(const HeapSimulatorTrace& from) {
    CopyFrom(from);
    return *this;
  }
  inline HeapSimulatorTrace& operator=(HeapSimulatorTrace&& 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 HeapSimulatorTrace& default_instance() {
    return *internal_default_instance();
  }
  static inline const HeapSimulatorTrace* internal_default_instance() {
    return reinterpret_cast<const HeapSimulatorTrace*>(
        &_HeapSimulatorTrace_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(HeapSimulatorTrace& a, HeapSimulatorTrace& b) { a.Swap(&b); }
  inline void Swap(HeapSimulatorTrace* 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(HeapSimulatorTrace* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HeapSimulatorTrace* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HeapSimulatorTrace>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HeapSimulatorTrace& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HeapSimulatorTrace& from) { HeapSimulatorTrace::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(HeapSimulatorTrace* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HeapSimulatorTrace"; }

 protected:
  explicit HeapSimulatorTrace(::google::protobuf::Arena* arena);
  HeapSimulatorTrace(::google::protobuf::Arena* arena, const HeapSimulatorTrace& from);
  HeapSimulatorTrace(::google::protobuf::Arena* arena, HeapSimulatorTrace&& from) noexcept
      : HeapSimulatorTrace(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 Event = HeapSimulatorTrace_Event;

  // accessors -------------------------------------------------------
  enum : int {
    kEventsFieldNumber = 1,
    kBufferAllocationIndexFieldNumber = 3,
    kWholeModuleSimulationFieldNumber = 2,
  };
  // repeated .xla.HeapSimulatorTrace.Event events = 1;
  int events_size() const;
  private:
  int _internal_events_size() const;

  public:
  void clear_events() ;
  ::xla::HeapSimulatorTrace_Event* mutable_events(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>* mutable_events();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>& _internal_events() const;
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>* _internal_mutable_events();
  public:
  const ::xla::HeapSimulatorTrace_Event& events(int index) const;
  ::xla::HeapSimulatorTrace_Event* add_events();
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>& events() const;
  // int64 buffer_allocation_index = 3;
  void clear_buffer_allocation_index() ;
  ::int64_t buffer_allocation_index() const;
  void set_buffer_allocation_index(::int64_t value);

  private:
  ::int64_t _internal_buffer_allocation_index() const;
  void _internal_set_buffer_allocation_index(::int64_t value);

  public:
  // bool whole_module_simulation = 2;
  void clear_whole_module_simulation() ;
  bool whole_module_simulation() const;
  void set_whole_module_simulation(bool value);

  private:
  bool _internal_whole_module_simulation() const;
  void _internal_set_whole_module_simulation(bool value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const HeapSimulatorTrace& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HeapSimulatorTrace_Event > events_;
    ::int64_t buffer_allocation_index_;
    bool whole_module_simulation_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT BufferAssignmentProto_BufferAlias final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.BufferAssignmentProto.BufferAlias) */ {
 public:
  inline BufferAssignmentProto_BufferAlias() : BufferAssignmentProto_BufferAlias(nullptr) {}
  ~BufferAssignmentProto_BufferAlias() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BufferAssignmentProto_BufferAlias(
      ::google::protobuf::internal::ConstantInitialized);

  inline BufferAssignmentProto_BufferAlias(const BufferAssignmentProto_BufferAlias& from) : BufferAssignmentProto_BufferAlias(nullptr, from) {}
  inline BufferAssignmentProto_BufferAlias(BufferAssignmentProto_BufferAlias&& from) noexcept
      : BufferAssignmentProto_BufferAlias(nullptr, std::move(from)) {}
  inline BufferAssignmentProto_BufferAlias& operator=(const BufferAssignmentProto_BufferAlias& from) {
    CopyFrom(from);
    return *this;
  }
  inline BufferAssignmentProto_BufferAlias& operator=(BufferAssignmentProto_BufferAlias&& 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 BufferAssignmentProto_BufferAlias& default_instance() {
    return *internal_default_instance();
  }
  static inline const BufferAssignmentProto_BufferAlias* internal_default_instance() {
    return reinterpret_cast<const BufferAssignmentProto_BufferAlias*>(
        &_BufferAssignmentProto_BufferAlias_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(BufferAssignmentProto_BufferAlias& a, BufferAssignmentProto_BufferAlias& b) { a.Swap(&b); }
  inline void Swap(BufferAssignmentProto_BufferAlias* 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(BufferAssignmentProto_BufferAlias* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BufferAssignmentProto_BufferAlias* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<BufferAssignmentProto_BufferAlias>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BufferAssignmentProto_BufferAlias& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BufferAssignmentProto_BufferAlias& from) { BufferAssignmentProto_BufferAlias::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(BufferAssignmentProto_BufferAlias* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.BufferAssignmentProto.BufferAlias"; }

 protected:
  explicit BufferAssignmentProto_BufferAlias(::google::protobuf::Arena* arena);
  BufferAssignmentProto_BufferAlias(::google::protobuf::Arena* arena, const BufferAssignmentProto_BufferAlias& from);
  BufferAssignmentProto_BufferAlias(::google::protobuf::Arena* arena, BufferAssignmentProto_BufferAlias&& from) noexcept
      : BufferAssignmentProto_BufferAlias(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 {
    kLocationFieldNumber = 2,
    kSourceBufferIdFieldNumber = 1,
  };
  // .xla.LogicalBufferProto.Location location = 2;
  bool has_location() const;
  void clear_location() ;
  const ::xla::LogicalBufferProto_Location& location() const;
  PROTOBUF_NODISCARD ::xla::LogicalBufferProto_Location* release_location();
  ::xla::LogicalBufferProto_Location* mutable_location();
  void set_allocated_location(::xla::LogicalBufferProto_Location* value);
  void unsafe_arena_set_allocated_location(::xla::LogicalBufferProto_Location* value);
  ::xla::LogicalBufferProto_Location* unsafe_arena_release_location();

  private:
  const ::xla::LogicalBufferProto_Location& _internal_location() const;
  ::xla::LogicalBufferProto_Location* _internal_mutable_location();

  public:
  // int64 source_buffer_id = 1;
  void clear_source_buffer_id() ;
  ::int64_t source_buffer_id() const;
  void set_source_buffer_id(::int64_t value);

  private:
  ::int64_t _internal_source_buffer_id() const;
  void _internal_set_source_buffer_id(::int64_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const BufferAssignmentProto_BufferAlias& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::LogicalBufferProto_Location* location_;
    ::int64_t source_buffer_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT BufferAllocationProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.BufferAllocationProto) */ {
 public:
  inline BufferAllocationProto() : BufferAllocationProto(nullptr) {}
  ~BufferAllocationProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BufferAllocationProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline BufferAllocationProto(const BufferAllocationProto& from) : BufferAllocationProto(nullptr, from) {}
  inline BufferAllocationProto(BufferAllocationProto&& from) noexcept
      : BufferAllocationProto(nullptr, std::move(from)) {}
  inline BufferAllocationProto& operator=(const BufferAllocationProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline BufferAllocationProto& operator=(BufferAllocationProto&& 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 BufferAllocationProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const BufferAllocationProto* internal_default_instance() {
    return reinterpret_cast<const BufferAllocationProto*>(
        &_BufferAllocationProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(BufferAllocationProto& a, BufferAllocationProto& b) { a.Swap(&b); }
  inline void Swap(BufferAllocationProto* 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(BufferAllocationProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BufferAllocationProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<BufferAllocationProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BufferAllocationProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BufferAllocationProto& from) { BufferAllocationProto::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(BufferAllocationProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.BufferAllocationProto"; }

 protected:
  explicit BufferAllocationProto(::google::protobuf::Arena* arena);
  BufferAllocationProto(::google::protobuf::Arena* arena, const BufferAllocationProto& from);
  BufferAllocationProto(::google::protobuf::Arena* arena, BufferAllocationProto&& from) noexcept
      : BufferAllocationProto(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 Assigned = BufferAllocationProto_Assigned;

  // accessors -------------------------------------------------------
  enum : int {
    kAssignedFieldNumber = 9,
    kParameterShapeIndexFieldNumber = 10,
    kIndexFieldNumber = 1,
    kSizeFieldNumber = 2,
    kParameterNumberFieldNumber = 6,
    kColorFieldNumber = 8,
    kIsThreadLocalFieldNumber = 3,
    kIsTupleFieldNumber = 11,
    kIsEntryComputationParameterFieldNumber = 5,
    kIsConstantFieldNumber = 12,
    kIsParameterAliasedWithOutputFieldNumber = 13,
    kMaybeLiveOutFieldNumber = 7,
  };
  // repeated .xla.BufferAllocationProto.Assigned assigned = 9;
  int assigned_size() const;
  private:
  int _internal_assigned_size() const;

  public:
  void clear_assigned() ;
  ::xla::BufferAllocationProto_Assigned* mutable_assigned(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>* mutable_assigned();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>& _internal_assigned() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>* _internal_mutable_assigned();
  public:
  const ::xla::BufferAllocationProto_Assigned& assigned(int index) const;
  ::xla::BufferAllocationProto_Assigned* add_assigned();
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>& assigned() const;
  // repeated int64 parameter_shape_index = 10;
  int parameter_shape_index_size() const;
  private:
  int _internal_parameter_shape_index_size() const;

  public:
  void clear_parameter_shape_index() ;
  ::int64_t parameter_shape_index(int index) const;
  void set_parameter_shape_index(int index, ::int64_t value);
  void add_parameter_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_parameter_shape_index();

  public:
  // int64 index = 1;
  void clear_index() ;
  ::int64_t index() const;
  void set_index(::int64_t value);

  private:
  ::int64_t _internal_index() const;
  void _internal_set_index(::int64_t value);

  public:
  // int64 size = 2;
  void clear_size() ;
  ::int64_t size() const;
  void set_size(::int64_t value);

  private:
  ::int64_t _internal_size() const;
  void _internal_set_size(::int64_t value);

  public:
  // int64 parameter_number = 6;
  void clear_parameter_number() ;
  ::int64_t parameter_number() const;
  void set_parameter_number(::int64_t value);

  private:
  ::int64_t _internal_parameter_number() const;
  void _internal_set_parameter_number(::int64_t value);

  public:
  // int64 color = 8;
  void clear_color() ;
  ::int64_t color() const;
  void set_color(::int64_t value);

  private:
  ::int64_t _internal_color() const;
  void _internal_set_color(::int64_t value);

  public:
  // bool is_thread_local = 3;
  void clear_is_thread_local() ;
  bool is_thread_local() const;
  void set_is_thread_local(bool value);

  private:
  bool _internal_is_thread_local() const;
  void _internal_set_is_thread_local(bool value);

  public:
  // bool is_tuple = 11;
  void clear_is_tuple() ;
  bool is_tuple() const;
  void set_is_tuple(bool value);

  private:
  bool _internal_is_tuple() const;
  void _internal_set_is_tuple(bool value);

  public:
  // bool is_entry_computation_parameter = 5;
  void clear_is_entry_computation_parameter() ;
  bool is_entry_computation_parameter() const;
  void set_is_entry_computation_parameter(bool value);

  private:
  bool _internal_is_entry_computation_parameter() const;
  void _internal_set_is_entry_computation_parameter(bool value);

  public:
  // bool is_constant = 12;
  void clear_is_constant() ;
  bool is_constant() const;
  void set_is_constant(bool value);

  private:
  bool _internal_is_constant() const;
  void _internal_set_is_constant(bool value);

  public:
  // bool is_parameter_aliased_with_output = 13;
  void clear_is_parameter_aliased_with_output() ;
  bool is_parameter_aliased_with_output() const;
  void set_is_parameter_aliased_with_output(bool value);

  private:
  bool _internal_is_parameter_aliased_with_output() const;
  void _internal_set_is_parameter_aliased_with_output(bool value);

  public:
  // bool maybe_live_out = 7;
  void clear_maybe_live_out() ;
  bool maybe_live_out() const;
  void set_maybe_live_out(bool value);

  private:
  bool _internal_maybe_live_out() const;
  void _internal_set_maybe_live_out(bool value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const BufferAllocationProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::BufferAllocationProto_Assigned > assigned_;
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _parameter_shape_index_cached_byte_size_;
    ::int64_t index_;
    ::int64_t size_;
    ::int64_t parameter_number_;
    ::int64_t color_;
    bool is_thread_local_;
    bool is_tuple_;
    bool is_entry_computation_parameter_;
    bool is_constant_;
    bool is_parameter_aliased_with_output_;
    bool maybe_live_out_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloScheduleProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloScheduleProto) */ {
 public:
  inline HloScheduleProto() : HloScheduleProto(nullptr) {}
  ~HloScheduleProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloScheduleProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloScheduleProto(const HloScheduleProto& from) : HloScheduleProto(nullptr, from) {}
  inline HloScheduleProto(HloScheduleProto&& from) noexcept
      : HloScheduleProto(nullptr, std::move(from)) {}
  inline HloScheduleProto& operator=(const HloScheduleProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloScheduleProto& operator=(HloScheduleProto&& 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 HloScheduleProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloScheduleProto* internal_default_instance() {
    return reinterpret_cast<const HloScheduleProto*>(
        &_HloScheduleProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(HloScheduleProto& a, HloScheduleProto& b) { a.Swap(&b); }
  inline void Swap(HloScheduleProto* 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(HloScheduleProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloScheduleProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloScheduleProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloScheduleProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloScheduleProto& from) { HloScheduleProto::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(HloScheduleProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloScheduleProto"; }

 protected:
  explicit HloScheduleProto(::google::protobuf::Arena* arena);
  HloScheduleProto(::google::protobuf::Arena* arena, const HloScheduleProto& from);
  HloScheduleProto(::google::protobuf::Arena* arena, HloScheduleProto&& from) noexcept
      : HloScheduleProto(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 InstructionSequence = HloScheduleProto_InstructionSequence;

  // accessors -------------------------------------------------------
  enum : int {
    kSequencesFieldNumber = 1,
  };
  // map<int64, .xla.HloScheduleProto.InstructionSequence> sequences = 1;
  int sequences_size() const;
  private:
  int _internal_sequences_size() const;

  public:
  void clear_sequences() ;
  const ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>& sequences() const;
  ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* mutable_sequences();

  private:
  const ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>& _internal_sequences() const;
  ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* _internal_mutable_sequences();

  public:
  // @@protoc_insertion_point(class_scope:xla.HloScheduleProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 2,
      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 HloScheduleProto& from_msg);
    ::google::protobuf::internal::MapField<HloScheduleProto_SequencesEntry_DoNotUse, ::int64_t, ::xla::HloScheduleProto_InstructionSequence,
                      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        sequences_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloModuleMetadataProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloModuleMetadataProto) */ {
 public:
  inline HloModuleMetadataProto() : HloModuleMetadataProto(nullptr) {}
  ~HloModuleMetadataProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloModuleMetadataProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloModuleMetadataProto(const HloModuleMetadataProto& from) : HloModuleMetadataProto(nullptr, from) {}
  inline HloModuleMetadataProto(HloModuleMetadataProto&& from) noexcept
      : HloModuleMetadataProto(nullptr, std::move(from)) {}
  inline HloModuleMetadataProto& operator=(const HloModuleMetadataProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloModuleMetadataProto& operator=(HloModuleMetadataProto&& 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 HloModuleMetadataProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloModuleMetadataProto* internal_default_instance() {
    return reinterpret_cast<const HloModuleMetadataProto*>(
        &_HloModuleMetadataProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 30;
  friend void swap(HloModuleMetadataProto& a, HloModuleMetadataProto& b) { a.Swap(&b); }
  inline void Swap(HloModuleMetadataProto* 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(HloModuleMetadataProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloModuleMetadataProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloModuleMetadataProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloModuleMetadataProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloModuleMetadataProto& from) { HloModuleMetadataProto::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(HloModuleMetadataProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloModuleMetadataProto"; }

 protected:
  explicit HloModuleMetadataProto(::google::protobuf::Arena* arena);
  HloModuleMetadataProto(::google::protobuf::Arena* arena, const HloModuleMetadataProto& from);
  HloModuleMetadataProto(::google::protobuf::Arena* arena, HloModuleMetadataProto&& from) noexcept
      : HloModuleMetadataProto(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 {
    kPartitionedModuleIdsFieldNumber = 4,
    kPassMetadataFieldNumber = 5,
    kModuleGroupNameFieldNumber = 2,
    kCanonicalModuleIdFieldNumber = 1,
    kOriginalModuleIdFieldNumber = 3,
  };
  // repeated int64 partitioned_module_ids = 4;
  int partitioned_module_ids_size() const;
  private:
  int _internal_partitioned_module_ids_size() const;

  public:
  void clear_partitioned_module_ids() ;
  ::int64_t partitioned_module_ids(int index) const;
  void set_partitioned_module_ids(int index, ::int64_t value);
  void add_partitioned_module_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& partitioned_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_partitioned_module_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_partitioned_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_partitioned_module_ids();

  public:
  // repeated .xla.HloPassMetadata pass_metadata = 5;
  int pass_metadata_size() const;
  private:
  int _internal_pass_metadata_size() const;

  public:
  void clear_pass_metadata() ;
  ::xla::HloPassMetadata* mutable_pass_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>* mutable_pass_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>& _internal_pass_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>* _internal_mutable_pass_metadata();
  public:
  const ::xla::HloPassMetadata& pass_metadata(int index) const;
  ::xla::HloPassMetadata* add_pass_metadata();
  const ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>& pass_metadata() const;
  // string module_group_name = 2;
  void clear_module_group_name() ;
  const std::string& module_group_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_module_group_name(Arg_&& arg, Args_... args);
  std::string* mutable_module_group_name();
  PROTOBUF_NODISCARD std::string* release_module_group_name();
  void set_allocated_module_group_name(std::string* value);

  private:
  const std::string& _internal_module_group_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_module_group_name(
      const std::string& value);
  std::string* _internal_mutable_module_group_name();

  public:
  // int64 canonical_module_id = 1;
  void clear_canonical_module_id() ;
  ::int64_t canonical_module_id() const;
  void set_canonical_module_id(::int64_t value);

  private:
  ::int64_t _internal_canonical_module_id() const;
  void _internal_set_canonical_module_id(::int64_t value);

  public:
  // int64 original_module_id = 3;
  void clear_original_module_id() ;
  ::int64_t original_module_id() const;
  void set_original_module_id(::int64_t value);

  private:
  ::int64_t _internal_original_module_id() const;
  void _internal_set_original_module_id(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloModuleMetadataProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 1,
      52, 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 HloModuleMetadataProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> partitioned_module_ids_;
    mutable ::google::protobuf::internal::CachedSize _partitioned_module_ids_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloPassMetadata > pass_metadata_;
    ::google::protobuf::internal::ArenaStringPtr module_group_name_;
    ::int64_t canonical_module_id_;
    ::int64_t original_module_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT BufferAssignmentProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.BufferAssignmentProto) */ {
 public:
  inline BufferAssignmentProto() : BufferAssignmentProto(nullptr) {}
  ~BufferAssignmentProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BufferAssignmentProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline BufferAssignmentProto(const BufferAssignmentProto& from) : BufferAssignmentProto(nullptr, from) {}
  inline BufferAssignmentProto(BufferAssignmentProto&& from) noexcept
      : BufferAssignmentProto(nullptr, std::move(from)) {}
  inline BufferAssignmentProto& operator=(const BufferAssignmentProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline BufferAssignmentProto& operator=(BufferAssignmentProto&& 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 BufferAssignmentProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const BufferAssignmentProto* internal_default_instance() {
    return reinterpret_cast<const BufferAssignmentProto*>(
        &_BufferAssignmentProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(BufferAssignmentProto& a, BufferAssignmentProto& b) { a.Swap(&b); }
  inline void Swap(BufferAssignmentProto* 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(BufferAssignmentProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BufferAssignmentProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<BufferAssignmentProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BufferAssignmentProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BufferAssignmentProto& from) { BufferAssignmentProto::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(BufferAssignmentProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.BufferAssignmentProto"; }

 protected:
  explicit BufferAssignmentProto(::google::protobuf::Arena* arena);
  BufferAssignmentProto(::google::protobuf::Arena* arena, const BufferAssignmentProto& from);
  BufferAssignmentProto(::google::protobuf::Arena* arena, BufferAssignmentProto&& from) noexcept
      : BufferAssignmentProto(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 BufferAlias = BufferAssignmentProto_BufferAlias;

  // accessors -------------------------------------------------------
  enum : int {
    kLogicalBuffersFieldNumber = 1,
    kBufferAliasesFieldNumber = 2,
    kBufferAllocationsFieldNumber = 3,
    kHeapSimulatorTracesFieldNumber = 4,
  };
  // repeated .xla.LogicalBufferProto logical_buffers = 1;
  int logical_buffers_size() const;
  private:
  int _internal_logical_buffers_size() const;

  public:
  void clear_logical_buffers() ;
  ::xla::LogicalBufferProto* mutable_logical_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>* mutable_logical_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>& _internal_logical_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>* _internal_mutable_logical_buffers();
  public:
  const ::xla::LogicalBufferProto& logical_buffers(int index) const;
  ::xla::LogicalBufferProto* add_logical_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>& logical_buffers() const;
  // repeated .xla.BufferAssignmentProto.BufferAlias buffer_aliases = 2;
  int buffer_aliases_size() const;
  private:
  int _internal_buffer_aliases_size() const;

  public:
  void clear_buffer_aliases() ;
  ::xla::BufferAssignmentProto_BufferAlias* mutable_buffer_aliases(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>* mutable_buffer_aliases();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>& _internal_buffer_aliases() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>* _internal_mutable_buffer_aliases();
  public:
  const ::xla::BufferAssignmentProto_BufferAlias& buffer_aliases(int index) const;
  ::xla::BufferAssignmentProto_BufferAlias* add_buffer_aliases();
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>& buffer_aliases() const;
  // repeated .xla.BufferAllocationProto buffer_allocations = 3;
  int buffer_allocations_size() const;
  private:
  int _internal_buffer_allocations_size() const;

  public:
  void clear_buffer_allocations() ;
  ::xla::BufferAllocationProto* mutable_buffer_allocations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* mutable_buffer_allocations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& _internal_buffer_allocations() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* _internal_mutable_buffer_allocations();
  public:
  const ::xla::BufferAllocationProto& buffer_allocations(int index) const;
  ::xla::BufferAllocationProto* add_buffer_allocations();
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& buffer_allocations() const;
  // repeated .xla.HeapSimulatorTrace heap_simulator_traces = 4;
  int heap_simulator_traces_size() const;
  private:
  int _internal_heap_simulator_traces_size() const;

  public:
  void clear_heap_simulator_traces() ;
  ::xla::HeapSimulatorTrace* mutable_heap_simulator_traces(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>* mutable_heap_simulator_traces();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>& _internal_heap_simulator_traces() const;
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>* _internal_mutable_heap_simulator_traces();
  public:
  const ::xla::HeapSimulatorTrace& heap_simulator_traces(int index) const;
  ::xla::HeapSimulatorTrace* add_heap_simulator_traces();
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>& heap_simulator_traces() const;
  // @@protoc_insertion_point(class_scope:xla.BufferAssignmentProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 4,
      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 BufferAssignmentProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::LogicalBufferProto > logical_buffers_;
    ::google::protobuf::RepeatedPtrField< ::xla::BufferAssignmentProto_BufferAlias > buffer_aliases_;
    ::google::protobuf::RepeatedPtrField< ::xla::BufferAllocationProto > buffer_allocations_;
    ::google::protobuf::RepeatedPtrField< ::xla::HeapSimulatorTrace > heap_simulator_traces_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInstructionProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInstructionProto) */ {
 public:
  inline HloInstructionProto() : HloInstructionProto(nullptr) {}
  ~HloInstructionProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInstructionProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInstructionProto(const HloInstructionProto& from) : HloInstructionProto(nullptr, from) {}
  inline HloInstructionProto(HloInstructionProto&& from) noexcept
      : HloInstructionProto(nullptr, std::move(from)) {}
  inline HloInstructionProto& operator=(const HloInstructionProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInstructionProto& operator=(HloInstructionProto&& 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 HloInstructionProto& default_instance() {
    return *internal_default_instance();
  }
  enum OptionalCrossProgramPrefetchIndexCase {
    kCrossProgramPrefetchIndex = 80,
    OPTIONAL_CROSS_PROGRAM_PREFETCH_INDEX_NOT_SET = 0,
  };
  static inline const HloInstructionProto* internal_default_instance() {
    return reinterpret_cast<const HloInstructionProto*>(
        &_HloInstructionProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(HloInstructionProto& a, HloInstructionProto& b) { a.Swap(&b); }
  inline void Swap(HloInstructionProto* 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(HloInstructionProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInstructionProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInstructionProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInstructionProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInstructionProto& from) { HloInstructionProto::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(HloInstructionProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInstructionProto"; }

 protected:
  explicit HloInstructionProto(::google::protobuf::Arena* arena);
  HloInstructionProto(::google::protobuf::Arena* arena, const HloInstructionProto& from);
  HloInstructionProto(::google::protobuf::Arena* arena, HloInstructionProto&& from) noexcept
      : HloInstructionProto(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 SliceDimensions = HloInstructionProto_SliceDimensions;

  // accessors -------------------------------------------------------
  enum : int {
    kDimensionsFieldNumber = 14,
    kSliceDimensionsFieldNumber = 17,
    kDynamicSliceSizesFieldNumber = 20,
    kFftLengthFieldNumber = 32,
    kGatherSliceSizesFieldNumber = 34,
    kOperandIdsFieldNumber = 36,
    kControlPredecessorIdsFieldNumber = 37,
    kCalledComputationIdsFieldNumber = 38,
    kReplicaGroupsFieldNumber = 49,
    kSourceTargetPairsFieldNumber = 52,
    kOperandShapesWithLayoutFieldNumber = 57,
    kOutputOperandAliasingFieldNumber = 74,
    kDotSparsityFieldNumber = 86,
    kNameFieldNumber = 1,
    kOpcodeFieldNumber = 2,
    kFusionKindFieldNumber = 11,
    kOutfeedConfigFieldNumber = 22,
    kInfeedConfigFieldNumber = 27,
    kCustomCallTargetFieldNumber = 28,
    kBackendConfigFieldNumber = 43,
    kComparisonDirectionFieldNumber = 63,
    kComparisonTypeFieldNumber = 72,
    kAsyncExecutionThreadFieldNumber = 79,
    kShapeFieldNumber = 3,
    kMetadataFieldNumber = 7,
    kLiteralFieldNumber = 8,
    kWindowFieldNumber = 15,
    kConvolutionDimensionNumbersFieldNumber = 16,
    kPaddingConfigFieldNumber = 21,
    kOutfeedShapeFieldNumber = 29,
    kDotDimensionNumbersFieldNumber = 30,
    kGatherDimensionNumbersFieldNumber = 33,
    kShardingFieldNumber = 40,
    kScatterDimensionNumbersFieldNumber = 48,
    kPrecisionConfigFieldNumber = 51,
    kDomainEntryShardingFieldNumber = 54,
    kDomainExitShardingFieldNumber = 55,
    kTriangularSolveOptionsFieldNumber = 59,
    kParameterReplicationFieldNumber = 61,
    kCholeskyOptionsFieldNumber = 62,
    kFrontendAttributesFieldNumber = 68,
    kStatisticsVizFieldNumber = 82,
    kCollectiveDeviceListFieldNumber = 87,
    kOriginalValueFieldNumber = 88,
    kRaggedDotDimensionNumbersFieldNumber = 90,
    kResultAccuracyFieldNumber = 91,
    kParameterNumberFieldNumber = 9,
    kTupleIndexFieldNumber = 13,
    kExponentBitsFieldNumber = 18,
    kMantissaBitsFieldNumber = 19,
    kDistributionFieldNumber = 23,
    kEpsilonFieldNumber = 24,
    kFeatureIndexFieldNumber = 25,
    kChannelIdFieldNumber = 26,
    kIdFieldNumber = 35,
    kAllReduceIdFieldNumber = 45,
    kFeatureGroupCountFieldNumber = 50,
    kFftTypeFieldNumber = 31,
    kUseGlobalDeviceIdsFieldNumber = 71,
    kIsHostTransferFieldNumber = 47,
    kIsStableFieldNumber = 60,
    kConstrainLayoutFieldNumber = 56,
    kBatchGroupCountFieldNumber = 58,
    kDeltaFieldNumber = 66,
    kCustomCallHasSideEffectFieldNumber = 65,
    kIndicesAreSortedFieldNumber = 67,
    kUniqueIndicesFieldNumber = 69,
    kIsCrossProgramPrefetchFieldNumber = 73,
    kRngAlgorithmFieldNumber = 70,
    kPaddingTypeFieldNumber = 75,
    kCustomCallScheduleFieldNumber = 76,
    kKFieldNumber = 81,
    kCustomCallApiVersionFieldNumber = 77,
    kLargestFieldNumber = 85,
    kIsCompositeFieldNumber = 89,
    kCollectiveOpGroupModeFieldNumber = 92,
    kCrossProgramPrefetchIndexFieldNumber = 80,
  };
  // repeated int64 dimensions = 14;
  int dimensions_size() const;
  private:
  int _internal_dimensions_size() const;

  public:
  void clear_dimensions() ;
  ::int64_t dimensions(int index) const;
  void set_dimensions(int index, ::int64_t value);
  void add_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_dimensions();

  public:
  // repeated .xla.HloInstructionProto.SliceDimensions slice_dimensions = 17;
  int slice_dimensions_size() const;
  private:
  int _internal_slice_dimensions_size() const;

  public:
  void clear_slice_dimensions() ;
  ::xla::HloInstructionProto_SliceDimensions* mutable_slice_dimensions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>* mutable_slice_dimensions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>& _internal_slice_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>* _internal_mutable_slice_dimensions();
  public:
  const ::xla::HloInstructionProto_SliceDimensions& slice_dimensions(int index) const;
  ::xla::HloInstructionProto_SliceDimensions* add_slice_dimensions();
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>& slice_dimensions() const;
  // repeated int64 dynamic_slice_sizes = 20;
  int dynamic_slice_sizes_size() const;
  private:
  int _internal_dynamic_slice_sizes_size() const;

  public:
  void clear_dynamic_slice_sizes() ;
  ::int64_t dynamic_slice_sizes(int index) const;
  void set_dynamic_slice_sizes(int index, ::int64_t value);
  void add_dynamic_slice_sizes(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& dynamic_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_dynamic_slice_sizes();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dynamic_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_dynamic_slice_sizes();

  public:
  // repeated int64 fft_length = 32;
  int fft_length_size() const;
  private:
  int _internal_fft_length_size() const;

  public:
  void clear_fft_length() ;
  ::int64_t fft_length(int index) const;
  void set_fft_length(int index, ::int64_t value);
  void add_fft_length(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& fft_length() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_fft_length();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_fft_length() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_fft_length();

  public:
  // repeated int64 gather_slice_sizes = 34;
  int gather_slice_sizes_size() const;
  private:
  int _internal_gather_slice_sizes_size() const;

  public:
  void clear_gather_slice_sizes() ;
  ::int64_t gather_slice_sizes(int index) const;
  void set_gather_slice_sizes(int index, ::int64_t value);
  void add_gather_slice_sizes(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& gather_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_gather_slice_sizes();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_gather_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_gather_slice_sizes();

  public:
  // repeated int64 operand_ids = 36;
  int operand_ids_size() const;
  private:
  int _internal_operand_ids_size() const;

  public:
  void clear_operand_ids() ;
  ::int64_t operand_ids(int index) const;
  void set_operand_ids(int index, ::int64_t value);
  void add_operand_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& operand_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_operand_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_operand_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_operand_ids();

  public:
  // repeated int64 control_predecessor_ids = 37;
  int control_predecessor_ids_size() const;
  private:
  int _internal_control_predecessor_ids_size() const;

  public:
  void clear_control_predecessor_ids() ;
  ::int64_t control_predecessor_ids(int index) const;
  void set_control_predecessor_ids(int index, ::int64_t value);
  void add_control_predecessor_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& control_predecessor_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_control_predecessor_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_control_predecessor_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_control_predecessor_ids();

  public:
  // repeated int64 called_computation_ids = 38;
  int called_computation_ids_size() const;
  private:
  int _internal_called_computation_ids_size() const;

  public:
  void clear_called_computation_ids() ;
  ::int64_t called_computation_ids(int index) const;
  void set_called_computation_ids(int index, ::int64_t value);
  void add_called_computation_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& called_computation_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_called_computation_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_called_computation_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_called_computation_ids();

  public:
  // repeated .xla.ReplicaGroup replica_groups = 49 [deprecated = true];
  [[deprecated]]  int replica_groups_size() const;
  private:
  int _internal_replica_groups_size() const;

  public:
  [[deprecated]]  void clear_replica_groups() ;
  [[deprecated]] ::xla::ReplicaGroup* mutable_replica_groups(int index);
  [[deprecated]] ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* mutable_replica_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& _internal_replica_groups() const;
  ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* _internal_mutable_replica_groups();
  public:
  [[deprecated]] const ::xla::ReplicaGroup& replica_groups(int index) const;
  [[deprecated]] ::xla::ReplicaGroup* add_replica_groups();
  [[deprecated]] const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& replica_groups() const;
  // repeated .xla.SourceTarget source_target_pairs = 52;
  int source_target_pairs_size() const;
  private:
  int _internal_source_target_pairs_size() const;

  public:
  void clear_source_target_pairs() ;
  ::xla::SourceTarget* mutable_source_target_pairs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* mutable_source_target_pairs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& _internal_source_target_pairs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* _internal_mutable_source_target_pairs();
  public:
  const ::xla::SourceTarget& source_target_pairs(int index) const;
  ::xla::SourceTarget* add_source_target_pairs();
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& source_target_pairs() const;
  // repeated .xla.ShapeProto operand_shapes_with_layout = 57;
  int operand_shapes_with_layout_size() const;
  private:
  int _internal_operand_shapes_with_layout_size() const;

  public:
  void clear_operand_shapes_with_layout() ;
  ::xla::ShapeProto* mutable_operand_shapes_with_layout(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* mutable_operand_shapes_with_layout();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_operand_shapes_with_layout() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* _internal_mutable_operand_shapes_with_layout();
  public:
  const ::xla::ShapeProto& operand_shapes_with_layout(int index) const;
  ::xla::ShapeProto* add_operand_shapes_with_layout();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& operand_shapes_with_layout() const;
  // repeated .xla.OutputOperandAliasing output_operand_aliasing = 74;
  int output_operand_aliasing_size() const;
  private:
  int _internal_output_operand_aliasing_size() const;

  public:
  void clear_output_operand_aliasing() ;
  ::xla::OutputOperandAliasing* mutable_output_operand_aliasing(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>* mutable_output_operand_aliasing();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>& _internal_output_operand_aliasing() const;
  ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>* _internal_mutable_output_operand_aliasing();
  public:
  const ::xla::OutputOperandAliasing& output_operand_aliasing(int index) const;
  ::xla::OutputOperandAliasing* add_output_operand_aliasing();
  const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>& output_operand_aliasing() const;
  // repeated .xla.SparsityDescriptor dot_sparsity = 86;
  int dot_sparsity_size() const;
  private:
  int _internal_dot_sparsity_size() const;

  public:
  void clear_dot_sparsity() ;
  ::xla::SparsityDescriptor* mutable_dot_sparsity(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>* mutable_dot_sparsity();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>& _internal_dot_sparsity() const;
  ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>* _internal_mutable_dot_sparsity();
  public:
  const ::xla::SparsityDescriptor& dot_sparsity(int index) const;
  ::xla::SparsityDescriptor* add_dot_sparsity();
  const ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>& dot_sparsity() const;
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // string opcode = 2;
  void clear_opcode() ;
  const std::string& opcode() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_opcode(Arg_&& arg, Args_... args);
  std::string* mutable_opcode();
  PROTOBUF_NODISCARD std::string* release_opcode();
  void set_allocated_opcode(std::string* value);

  private:
  const std::string& _internal_opcode() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_opcode(
      const std::string& value);
  std::string* _internal_mutable_opcode();

  public:
  // string fusion_kind = 11;
  void clear_fusion_kind() ;
  const std::string& fusion_kind() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_fusion_kind(Arg_&& arg, Args_... args);
  std::string* mutable_fusion_kind();
  PROTOBUF_NODISCARD std::string* release_fusion_kind();
  void set_allocated_fusion_kind(std::string* value);

  private:
  const std::string& _internal_fusion_kind() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_fusion_kind(
      const std::string& value);
  std::string* _internal_mutable_fusion_kind();

  public:
  // bytes outfeed_config = 22;
  void clear_outfeed_config() ;
  const std::string& outfeed_config() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_outfeed_config(Arg_&& arg, Args_... args);
  std::string* mutable_outfeed_config();
  PROTOBUF_NODISCARD std::string* release_outfeed_config();
  void set_allocated_outfeed_config(std::string* value);

  private:
  const std::string& _internal_outfeed_config() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_outfeed_config(
      const std::string& value);
  std::string* _internal_mutable_outfeed_config();

  public:
  // bytes infeed_config = 27;
  void clear_infeed_config() ;
  const std::string& infeed_config() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_infeed_config(Arg_&& arg, Args_... args);
  std::string* mutable_infeed_config();
  PROTOBUF_NODISCARD std::string* release_infeed_config();
  void set_allocated_infeed_config(std::string* value);

  private:
  const std::string& _internal_infeed_config() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_infeed_config(
      const std::string& value);
  std::string* _internal_mutable_infeed_config();

  public:
  // string custom_call_target = 28;
  void clear_custom_call_target() ;
  const std::string& custom_call_target() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_custom_call_target(Arg_&& arg, Args_... args);
  std::string* mutable_custom_call_target();
  PROTOBUF_NODISCARD std::string* release_custom_call_target();
  void set_allocated_custom_call_target(std::string* value);

  private:
  const std::string& _internal_custom_call_target() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_custom_call_target(
      const std::string& value);
  std::string* _internal_mutable_custom_call_target();

  public:
  // bytes backend_config = 43;
  void clear_backend_config() ;
  const std::string& backend_config() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_backend_config(Arg_&& arg, Args_... args);
  std::string* mutable_backend_config();
  PROTOBUF_NODISCARD std::string* release_backend_config();
  void set_allocated_backend_config(std::string* value);

  private:
  const std::string& _internal_backend_config() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_backend_config(
      const std::string& value);
  std::string* _internal_mutable_backend_config();

  public:
  // string comparison_direction = 63;
  void clear_comparison_direction() ;
  const std::string& comparison_direction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_comparison_direction(Arg_&& arg, Args_... args);
  std::string* mutable_comparison_direction();
  PROTOBUF_NODISCARD std::string* release_comparison_direction();
  void set_allocated_comparison_direction(std::string* value);

  private:
  const std::string& _internal_comparison_direction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_comparison_direction(
      const std::string& value);
  std::string* _internal_mutable_comparison_direction();

  public:
  // string comparison_type = 72;
  void clear_comparison_type() ;
  const std::string& comparison_type() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_comparison_type(Arg_&& arg, Args_... args);
  std::string* mutable_comparison_type();
  PROTOBUF_NODISCARD std::string* release_comparison_type();
  void set_allocated_comparison_type(std::string* value);

  private:
  const std::string& _internal_comparison_type() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_comparison_type(
      const std::string& value);
  std::string* _internal_mutable_comparison_type();

  public:
  // string async_execution_thread = 79;
  void clear_async_execution_thread() ;
  const std::string& async_execution_thread() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_async_execution_thread(Arg_&& arg, Args_... args);
  std::string* mutable_async_execution_thread();
  PROTOBUF_NODISCARD std::string* release_async_execution_thread();
  void set_allocated_async_execution_thread(std::string* value);

  private:
  const std::string& _internal_async_execution_thread() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_async_execution_thread(
      const std::string& value);
  std::string* _internal_mutable_async_execution_thread();

  public:
  // .xla.ShapeProto shape = 3;
  bool has_shape() const;
  void clear_shape() ;
  const ::xla::ShapeProto& shape() const;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_shape();
  ::xla::ShapeProto* mutable_shape();
  void set_allocated_shape(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_shape(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_shape();

  private:
  const ::xla::ShapeProto& _internal_shape() const;
  ::xla::ShapeProto* _internal_mutable_shape();

  public:
  // .xla.OpMetadata metadata = 7;
  bool has_metadata() const;
  void clear_metadata() ;
  const ::xla::OpMetadata& metadata() const;
  PROTOBUF_NODISCARD ::xla::OpMetadata* release_metadata();
  ::xla::OpMetadata* mutable_metadata();
  void set_allocated_metadata(::xla::OpMetadata* value);
  void unsafe_arena_set_allocated_metadata(::xla::OpMetadata* value);
  ::xla::OpMetadata* unsafe_arena_release_metadata();

  private:
  const ::xla::OpMetadata& _internal_metadata() const;
  ::xla::OpMetadata* _internal_mutable_metadata();

  public:
  // .xla.LiteralProto literal = 8;
  bool has_literal() const;
  void clear_literal() ;
  const ::xla::LiteralProto& literal() const;
  PROTOBUF_NODISCARD ::xla::LiteralProto* release_literal();
  ::xla::LiteralProto* mutable_literal();
  void set_allocated_literal(::xla::LiteralProto* value);
  void unsafe_arena_set_allocated_literal(::xla::LiteralProto* value);
  ::xla::LiteralProto* unsafe_arena_release_literal();

  private:
  const ::xla::LiteralProto& _internal_literal() const;
  ::xla::LiteralProto* _internal_mutable_literal();

  public:
  // .xla.Window window = 15;
  bool has_window() const;
  void clear_window() ;
  const ::xla::Window& window() const;
  PROTOBUF_NODISCARD ::xla::Window* release_window();
  ::xla::Window* mutable_window();
  void set_allocated_window(::xla::Window* value);
  void unsafe_arena_set_allocated_window(::xla::Window* value);
  ::xla::Window* unsafe_arena_release_window();

  private:
  const ::xla::Window& _internal_window() const;
  ::xla::Window* _internal_mutable_window();

  public:
  // .xla.ConvolutionDimensionNumbers convolution_dimension_numbers = 16;
  bool has_convolution_dimension_numbers() const;
  void clear_convolution_dimension_numbers() ;
  const ::xla::ConvolutionDimensionNumbers& convolution_dimension_numbers() const;
  PROTOBUF_NODISCARD ::xla::ConvolutionDimensionNumbers* release_convolution_dimension_numbers();
  ::xla::ConvolutionDimensionNumbers* mutable_convolution_dimension_numbers();
  void set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* value);
  void unsafe_arena_set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* value);
  ::xla::ConvolutionDimensionNumbers* unsafe_arena_release_convolution_dimension_numbers();

  private:
  const ::xla::ConvolutionDimensionNumbers& _internal_convolution_dimension_numbers() const;
  ::xla::ConvolutionDimensionNumbers* _internal_mutable_convolution_dimension_numbers();

  public:
  // .xla.PaddingConfig padding_config = 21;
  bool has_padding_config() const;
  void clear_padding_config() ;
  const ::xla::PaddingConfig& padding_config() const;
  PROTOBUF_NODISCARD ::xla::PaddingConfig* release_padding_config();
  ::xla::PaddingConfig* mutable_padding_config();
  void set_allocated_padding_config(::xla::PaddingConfig* value);
  void unsafe_arena_set_allocated_padding_config(::xla::PaddingConfig* value);
  ::xla::PaddingConfig* unsafe_arena_release_padding_config();

  private:
  const ::xla::PaddingConfig& _internal_padding_config() const;
  ::xla::PaddingConfig* _internal_mutable_padding_config();

  public:
  // .xla.ShapeProto outfeed_shape = 29;
  bool has_outfeed_shape() const;
  void clear_outfeed_shape() ;
  const ::xla::ShapeProto& outfeed_shape() const;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_outfeed_shape();
  ::xla::ShapeProto* mutable_outfeed_shape();
  void set_allocated_outfeed_shape(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_outfeed_shape(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_outfeed_shape();

  private:
  const ::xla::ShapeProto& _internal_outfeed_shape() const;
  ::xla::ShapeProto* _internal_mutable_outfeed_shape();

  public:
  // .xla.DotDimensionNumbers dot_dimension_numbers = 30;
  bool has_dot_dimension_numbers() const;
  void clear_dot_dimension_numbers() ;
  const ::xla::DotDimensionNumbers& dot_dimension_numbers() const;
  PROTOBUF_NODISCARD ::xla::DotDimensionNumbers* release_dot_dimension_numbers();
  ::xla::DotDimensionNumbers* mutable_dot_dimension_numbers();
  void set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value);
  void unsafe_arena_set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value);
  ::xla::DotDimensionNumbers* unsafe_arena_release_dot_dimension_numbers();

  private:
  const ::xla::DotDimensionNumbers& _internal_dot_dimension_numbers() const;
  ::xla::DotDimensionNumbers* _internal_mutable_dot_dimension_numbers();

  public:
  // .xla.GatherDimensionNumbers gather_dimension_numbers = 33;
  bool has_gather_dimension_numbers() const;
  void clear_gather_dimension_numbers() ;
  const ::xla::GatherDimensionNumbers& gather_dimension_numbers() const;
  PROTOBUF_NODISCARD ::xla::GatherDimensionNumbers* release_gather_dimension_numbers();
  ::xla::GatherDimensionNumbers* mutable_gather_dimension_numbers();
  void set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* value);
  void unsafe_arena_set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* value);
  ::xla::GatherDimensionNumbers* unsafe_arena_release_gather_dimension_numbers();

  private:
  const ::xla::GatherDimensionNumbers& _internal_gather_dimension_numbers() const;
  ::xla::GatherDimensionNumbers* _internal_mutable_gather_dimension_numbers();

  public:
  // .xla.OpSharding sharding = 40;
  bool has_sharding() const;
  void clear_sharding() ;
  const ::xla::OpSharding& sharding() const;
  PROTOBUF_NODISCARD ::xla::OpSharding* release_sharding();
  ::xla::OpSharding* mutable_sharding();
  void set_allocated_sharding(::xla::OpSharding* value);
  void unsafe_arena_set_allocated_sharding(::xla::OpSharding* value);
  ::xla::OpSharding* unsafe_arena_release_sharding();

  private:
  const ::xla::OpSharding& _internal_sharding() const;
  ::xla::OpSharding* _internal_mutable_sharding();

  public:
  // .xla.ScatterDimensionNumbers scatter_dimension_numbers = 48;
  bool has_scatter_dimension_numbers() const;
  void clear_scatter_dimension_numbers() ;
  const ::xla::ScatterDimensionNumbers& scatter_dimension_numbers() const;
  PROTOBUF_NODISCARD ::xla::ScatterDimensionNumbers* release_scatter_dimension_numbers();
  ::xla::ScatterDimensionNumbers* mutable_scatter_dimension_numbers();
  void set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* value);
  void unsafe_arena_set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* value);
  ::xla::ScatterDimensionNumbers* unsafe_arena_release_scatter_dimension_numbers();

  private:
  const ::xla::ScatterDimensionNumbers& _internal_scatter_dimension_numbers() const;
  ::xla::ScatterDimensionNumbers* _internal_mutable_scatter_dimension_numbers();

  public:
  // .xla.PrecisionConfig precision_config = 51;
  bool has_precision_config() const;
  void clear_precision_config() ;
  const ::xla::PrecisionConfig& precision_config() const;
  PROTOBUF_NODISCARD ::xla::PrecisionConfig* release_precision_config();
  ::xla::PrecisionConfig* mutable_precision_config();
  void set_allocated_precision_config(::xla::PrecisionConfig* value);
  void unsafe_arena_set_allocated_precision_config(::xla::PrecisionConfig* value);
  ::xla::PrecisionConfig* unsafe_arena_release_precision_config();

  private:
  const ::xla::PrecisionConfig& _internal_precision_config() const;
  ::xla::PrecisionConfig* _internal_mutable_precision_config();

  public:
  // .xla.OpSharding domain_entry_sharding = 54;
  bool has_domain_entry_sharding() const;
  void clear_domain_entry_sharding() ;
  const ::xla::OpSharding& domain_entry_sharding() const;
  PROTOBUF_NODISCARD ::xla::OpSharding* release_domain_entry_sharding();
  ::xla::OpSharding* mutable_domain_entry_sharding();
  void set_allocated_domain_entry_sharding(::xla::OpSharding* value);
  void unsafe_arena_set_allocated_domain_entry_sharding(::xla::OpSharding* value);
  ::xla::OpSharding* unsafe_arena_release_domain_entry_sharding();

  private:
  const ::xla::OpSharding& _internal_domain_entry_sharding() const;
  ::xla::OpSharding* _internal_mutable_domain_entry_sharding();

  public:
  // .xla.OpSharding domain_exit_sharding = 55;
  bool has_domain_exit_sharding() const;
  void clear_domain_exit_sharding() ;
  const ::xla::OpSharding& domain_exit_sharding() const;
  PROTOBUF_NODISCARD ::xla::OpSharding* release_domain_exit_sharding();
  ::xla::OpSharding* mutable_domain_exit_sharding();
  void set_allocated_domain_exit_sharding(::xla::OpSharding* value);
  void unsafe_arena_set_allocated_domain_exit_sharding(::xla::OpSharding* value);
  ::xla::OpSharding* unsafe_arena_release_domain_exit_sharding();

  private:
  const ::xla::OpSharding& _internal_domain_exit_sharding() const;
  ::xla::OpSharding* _internal_mutable_domain_exit_sharding();

  public:
  // .xla.TriangularSolveOptions triangular_solve_options = 59;
  bool has_triangular_solve_options() const;
  void clear_triangular_solve_options() ;
  const ::xla::TriangularSolveOptions& triangular_solve_options() const;
  PROTOBUF_NODISCARD ::xla::TriangularSolveOptions* release_triangular_solve_options();
  ::xla::TriangularSolveOptions* mutable_triangular_solve_options();
  void set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* value);
  void unsafe_arena_set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* value);
  ::xla::TriangularSolveOptions* unsafe_arena_release_triangular_solve_options();

  private:
  const ::xla::TriangularSolveOptions& _internal_triangular_solve_options() const;
  ::xla::TriangularSolveOptions* _internal_mutable_triangular_solve_options();

  public:
  // .xla.ParameterReplication parameter_replication = 61;
  bool has_parameter_replication() const;
  void clear_parameter_replication() ;
  const ::xla::ParameterReplication& parameter_replication() const;
  PROTOBUF_NODISCARD ::xla::ParameterReplication* release_parameter_replication();
  ::xla::ParameterReplication* mutable_parameter_replication();
  void set_allocated_parameter_replication(::xla::ParameterReplication* value);
  void unsafe_arena_set_allocated_parameter_replication(::xla::ParameterReplication* value);
  ::xla::ParameterReplication* unsafe_arena_release_parameter_replication();

  private:
  const ::xla::ParameterReplication& _internal_parameter_replication() const;
  ::xla::ParameterReplication* _internal_mutable_parameter_replication();

  public:
  // .xla.CholeskyOptions cholesky_options = 62;
  bool has_cholesky_options() const;
  void clear_cholesky_options() ;
  const ::xla::CholeskyOptions& cholesky_options() const;
  PROTOBUF_NODISCARD ::xla::CholeskyOptions* release_cholesky_options();
  ::xla::CholeskyOptions* mutable_cholesky_options();
  void set_allocated_cholesky_options(::xla::CholeskyOptions* value);
  void unsafe_arena_set_allocated_cholesky_options(::xla::CholeskyOptions* value);
  ::xla::CholeskyOptions* unsafe_arena_release_cholesky_options();

  private:
  const ::xla::CholeskyOptions& _internal_cholesky_options() const;
  ::xla::CholeskyOptions* _internal_mutable_cholesky_options();

  public:
  // .xla.FrontendAttributes frontend_attributes = 68;
  bool has_frontend_attributes() const;
  void clear_frontend_attributes() ;
  const ::xla::FrontendAttributes& frontend_attributes() const;
  PROTOBUF_NODISCARD ::xla::FrontendAttributes* release_frontend_attributes();
  ::xla::FrontendAttributes* mutable_frontend_attributes();
  void set_allocated_frontend_attributes(::xla::FrontendAttributes* value);
  void unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* value);
  ::xla::FrontendAttributes* unsafe_arena_release_frontend_attributes();

  private:
  const ::xla::FrontendAttributes& _internal_frontend_attributes() const;
  ::xla::FrontendAttributes* _internal_mutable_frontend_attributes();

  public:
  // .xla.StatisticsViz statistics_viz = 82;
  bool has_statistics_viz() const;
  void clear_statistics_viz() ;
  const ::xla::StatisticsViz& statistics_viz() const;
  PROTOBUF_NODISCARD ::xla::StatisticsViz* release_statistics_viz();
  ::xla::StatisticsViz* mutable_statistics_viz();
  void set_allocated_statistics_viz(::xla::StatisticsViz* value);
  void unsafe_arena_set_allocated_statistics_viz(::xla::StatisticsViz* value);
  ::xla::StatisticsViz* unsafe_arena_release_statistics_viz();

  private:
  const ::xla::StatisticsViz& _internal_statistics_viz() const;
  ::xla::StatisticsViz* _internal_mutable_statistics_viz();

  public:
  // .xla.CollectiveDeviceListProto collective_device_list = 87;
  bool has_collective_device_list() const;
  void clear_collective_device_list() ;
  const ::xla::CollectiveDeviceListProto& collective_device_list() const;
  PROTOBUF_NODISCARD ::xla::CollectiveDeviceListProto* release_collective_device_list();
  ::xla::CollectiveDeviceListProto* mutable_collective_device_list();
  void set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* value);
  void unsafe_arena_set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* value);
  ::xla::CollectiveDeviceListProto* unsafe_arena_release_collective_device_list();

  private:
  const ::xla::CollectiveDeviceListProto& _internal_collective_device_list() const;
  ::xla::CollectiveDeviceListProto* _internal_mutable_collective_device_list();

  public:
  // .xla.OriginalValueProto original_value = 88;
  bool has_original_value() const;
  void clear_original_value() ;
  const ::xla::OriginalValueProto& original_value() const;
  PROTOBUF_NODISCARD ::xla::OriginalValueProto* release_original_value();
  ::xla::OriginalValueProto* mutable_original_value();
  void set_allocated_original_value(::xla::OriginalValueProto* value);
  void unsafe_arena_set_allocated_original_value(::xla::OriginalValueProto* value);
  ::xla::OriginalValueProto* unsafe_arena_release_original_value();

  private:
  const ::xla::OriginalValueProto& _internal_original_value() const;
  ::xla::OriginalValueProto* _internal_mutable_original_value();

  public:
  // .xla.RaggedDotDimensionNumbers ragged_dot_dimension_numbers = 90;
  bool has_ragged_dot_dimension_numbers() const;
  void clear_ragged_dot_dimension_numbers() ;
  const ::xla::RaggedDotDimensionNumbers& ragged_dot_dimension_numbers() const;
  PROTOBUF_NODISCARD ::xla::RaggedDotDimensionNumbers* release_ragged_dot_dimension_numbers();
  ::xla::RaggedDotDimensionNumbers* mutable_ragged_dot_dimension_numbers();
  void set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* value);
  void unsafe_arena_set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* value);
  ::xla::RaggedDotDimensionNumbers* unsafe_arena_release_ragged_dot_dimension_numbers();

  private:
  const ::xla::RaggedDotDimensionNumbers& _internal_ragged_dot_dimension_numbers() const;
  ::xla::RaggedDotDimensionNumbers* _internal_mutable_ragged_dot_dimension_numbers();

  public:
  // .xla.ResultAccuracy result_accuracy = 91;
  bool has_result_accuracy() const;
  void clear_result_accuracy() ;
  const ::xla::ResultAccuracy& result_accuracy() const;
  PROTOBUF_NODISCARD ::xla::ResultAccuracy* release_result_accuracy();
  ::xla::ResultAccuracy* mutable_result_accuracy();
  void set_allocated_result_accuracy(::xla::ResultAccuracy* value);
  void unsafe_arena_set_allocated_result_accuracy(::xla::ResultAccuracy* value);
  ::xla::ResultAccuracy* unsafe_arena_release_result_accuracy();

  private:
  const ::xla::ResultAccuracy& _internal_result_accuracy() const;
  ::xla::ResultAccuracy* _internal_mutable_result_accuracy();

  public:
  // int64 parameter_number = 9;
  void clear_parameter_number() ;
  ::int64_t parameter_number() const;
  void set_parameter_number(::int64_t value);

  private:
  ::int64_t _internal_parameter_number() const;
  void _internal_set_parameter_number(::int64_t value);

  public:
  // int64 tuple_index = 13;
  void clear_tuple_index() ;
  ::int64_t tuple_index() const;
  void set_tuple_index(::int64_t value);

  private:
  ::int64_t _internal_tuple_index() const;
  void _internal_set_tuple_index(::int64_t value);

  public:
  // int32 exponent_bits = 18;
  void clear_exponent_bits() ;
  ::int32_t exponent_bits() const;
  void set_exponent_bits(::int32_t value);

  private:
  ::int32_t _internal_exponent_bits() const;
  void _internal_set_exponent_bits(::int32_t value);

  public:
  // int32 mantissa_bits = 19;
  void clear_mantissa_bits() ;
  ::int32_t mantissa_bits() const;
  void set_mantissa_bits(::int32_t value);

  private:
  ::int32_t _internal_mantissa_bits() const;
  void _internal_set_mantissa_bits(::int32_t value);

  public:
  // .xla.RandomDistribution distribution = 23;
  void clear_distribution() ;
  ::xla::RandomDistribution distribution() const;
  void set_distribution(::xla::RandomDistribution value);

  private:
  ::xla::RandomDistribution _internal_distribution() const;
  void _internal_set_distribution(::xla::RandomDistribution value);

  public:
  // float epsilon = 24;
  void clear_epsilon() ;
  float epsilon() const;
  void set_epsilon(float value);

  private:
  float _internal_epsilon() const;
  void _internal_set_epsilon(float value);

  public:
  // int64 feature_index = 25;
  void clear_feature_index() ;
  ::int64_t feature_index() const;
  void set_feature_index(::int64_t value);

  private:
  ::int64_t _internal_feature_index() const;
  void _internal_set_feature_index(::int64_t value);

  public:
  // int64 channel_id = 26;
  void clear_channel_id() ;
  ::int64_t channel_id() const;
  void set_channel_id(::int64_t value);

  private:
  ::int64_t _internal_channel_id() const;
  void _internal_set_channel_id(::int64_t value);

  public:
  // int64 id = 35;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

  private:
  ::int64_t _internal_id() const;
  void _internal_set_id(::int64_t value);

  public:
  // int64 all_reduce_id = 45 [deprecated = true];
  [[deprecated]]  void clear_all_reduce_id() ;
  [[deprecated]] ::int64_t all_reduce_id() const;
  [[deprecated]] void set_all_reduce_id(::int64_t value);

  private:
  ::int64_t _internal_all_reduce_id() const;
  void _internal_set_all_reduce_id(::int64_t value);

  public:
  // int64 feature_group_count = 50;
  void clear_feature_group_count() ;
  ::int64_t feature_group_count() const;
  void set_feature_group_count(::int64_t value);

  private:
  ::int64_t _internal_feature_group_count() const;
  void _internal_set_feature_group_count(::int64_t value);

  public:
  // .xla.FftType fft_type = 31;
  void clear_fft_type() ;
  ::xla::FftType fft_type() const;
  void set_fft_type(::xla::FftType value);

  private:
  ::xla::FftType _internal_fft_type() const;
  void _internal_set_fft_type(::xla::FftType value);

  public:
  // bool use_global_device_ids = 71;
  void clear_use_global_device_ids() ;
  bool use_global_device_ids() const;
  void set_use_global_device_ids(bool value);

  private:
  bool _internal_use_global_device_ids() const;
  void _internal_set_use_global_device_ids(bool value);

  public:
  // bool is_host_transfer = 47;
  void clear_is_host_transfer() ;
  bool is_host_transfer() const;
  void set_is_host_transfer(bool value);

  private:
  bool _internal_is_host_transfer() const;
  void _internal_set_is_host_transfer(bool value);

  public:
  // bool is_stable = 60;
  void clear_is_stable() ;
  bool is_stable() const;
  void set_is_stable(bool value);

  private:
  bool _internal_is_stable() const;
  void _internal_set_is_stable(bool value);

  public:
  // bool constrain_layout = 56;
  void clear_constrain_layout() ;
  bool constrain_layout() const;
  void set_constrain_layout(bool value);

  private:
  bool _internal_constrain_layout() const;
  void _internal_set_constrain_layout(bool value);

  public:
  // int64 batch_group_count = 58;
  void clear_batch_group_count() ;
  ::int64_t batch_group_count() const;
  void set_batch_group_count(::int64_t value);

  private:
  ::int64_t _internal_batch_group_count() const;
  void _internal_set_batch_group_count(::int64_t value);

  public:
  // int64 delta = 66;
  void clear_delta() ;
  ::int64_t delta() const;
  void set_delta(::int64_t value);

  private:
  ::int64_t _internal_delta() const;
  void _internal_set_delta(::int64_t value);

  public:
  // bool custom_call_has_side_effect = 65;
  void clear_custom_call_has_side_effect() ;
  bool custom_call_has_side_effect() const;
  void set_custom_call_has_side_effect(bool value);

  private:
  bool _internal_custom_call_has_side_effect() const;
  void _internal_set_custom_call_has_side_effect(bool value);

  public:
  // bool indices_are_sorted = 67;
  void clear_indices_are_sorted() ;
  bool indices_are_sorted() const;
  void set_indices_are_sorted(bool value);

  private:
  bool _internal_indices_are_sorted() const;
  void _internal_set_indices_are_sorted(bool value);

  public:
  // bool unique_indices = 69;
  void clear_unique_indices() ;
  bool unique_indices() const;
  void set_unique_indices(bool value);

  private:
  bool _internal_unique_indices() const;
  void _internal_set_unique_indices(bool value);

  public:
  // bool is_cross_program_prefetch = 73 [deprecated = true];
  [[deprecated]]  void clear_is_cross_program_prefetch() ;
  [[deprecated]] bool is_cross_program_prefetch() const;
  [[deprecated]] void set_is_cross_program_prefetch(bool value);

  private:
  bool _internal_is_cross_program_prefetch() const;
  void _internal_set_is_cross_program_prefetch(bool value);

  public:
  // .xla.RandomAlgorithm rng_algorithm = 70;
  void clear_rng_algorithm() ;
  ::xla::RandomAlgorithm rng_algorithm() const;
  void set_rng_algorithm(::xla::RandomAlgorithm value);

  private:
  ::xla::RandomAlgorithm _internal_rng_algorithm() const;
  void _internal_set_rng_algorithm(::xla::RandomAlgorithm value);

  public:
  // .xla.PaddingType padding_type = 75;
  void clear_padding_type() ;
  ::xla::PaddingType padding_type() const;
  void set_padding_type(::xla::PaddingType value);

  private:
  ::xla::PaddingType _internal_padding_type() const;
  void _internal_set_padding_type(::xla::PaddingType value);

  public:
  // .xla.CustomCallSchedule custom_call_schedule = 76;
  void clear_custom_call_schedule() ;
  ::xla::CustomCallSchedule custom_call_schedule() const;
  void set_custom_call_schedule(::xla::CustomCallSchedule value);

  private:
  ::xla::CustomCallSchedule _internal_custom_call_schedule() const;
  void _internal_set_custom_call_schedule(::xla::CustomCallSchedule value);

  public:
  // int64 k = 81;
  void clear_k() ;
  ::int64_t k() const;
  void set_k(::int64_t value);

  private:
  ::int64_t _internal_k() const;
  void _internal_set_k(::int64_t value);

  public:
  // .xla.CustomCallApiVersion custom_call_api_version = 77;
  void clear_custom_call_api_version() ;
  ::xla::CustomCallApiVersion custom_call_api_version() const;
  void set_custom_call_api_version(::xla::CustomCallApiVersion value);

  private:
  ::xla::CustomCallApiVersion _internal_custom_call_api_version() const;
  void _internal_set_custom_call_api_version(::xla::CustomCallApiVersion value);

  public:
  // bool largest = 85;
  void clear_largest() ;
  bool largest() const;
  void set_largest(bool value);

  private:
  bool _internal_largest() const;
  void _internal_set_largest(bool value);

  public:
  // bool is_composite = 89;
  void clear_is_composite() ;
  bool is_composite() const;
  void set_is_composite(bool value);

  private:
  bool _internal_is_composite() const;
  void _internal_set_is_composite(bool value);

  public:
  // .xla.CollectiveOpGroupModeProto collective_op_group_mode = 92;
  void clear_collective_op_group_mode() ;
  ::xla::CollectiveOpGroupModeProto collective_op_group_mode() const;
  void set_collective_op_group_mode(::xla::CollectiveOpGroupModeProto value);

  private:
  ::xla::CollectiveOpGroupModeProto _internal_collective_op_group_mode() const;
  void _internal_set_collective_op_group_mode(::xla::CollectiveOpGroupModeProto value);

  public:
  // int32 cross_program_prefetch_index = 80;
  bool has_cross_program_prefetch_index() const;
  void clear_cross_program_prefetch_index() ;
  ::int32_t cross_program_prefetch_index() const;
  void set_cross_program_prefetch_index(::int32_t value);

  private:
  ::int32_t _internal_cross_program_prefetch_index() const;
  void _internal_set_cross_program_prefetch_index(::int32_t value);

  public:
  void clear_optional_cross_program_prefetch_index();
  OptionalCrossProgramPrefetchIndexCase optional_cross_program_prefetch_index_case() const;
  // @@protoc_insertion_point(class_scope:xla.HloInstructionProto)
 private:
  class _Internal;
  void set_has_cross_program_prefetch_index();
  inline bool has_optional_cross_program_prefetch_index() const;
  inline void clear_has_optional_cross_program_prefetch_index();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      5, 77, 29,
      200, 13>
      _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 HloInstructionProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> dimensions_;
    mutable ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInstructionProto_SliceDimensions > slice_dimensions_;
    ::google::protobuf::RepeatedField<::int64_t> dynamic_slice_sizes_;
    mutable ::google::protobuf::internal::CachedSize _dynamic_slice_sizes_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> fft_length_;
    mutable ::google::protobuf::internal::CachedSize _fft_length_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> gather_slice_sizes_;
    mutable ::google::protobuf::internal::CachedSize _gather_slice_sizes_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> operand_ids_;
    mutable ::google::protobuf::internal::CachedSize _operand_ids_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> control_predecessor_ids_;
    mutable ::google::protobuf::internal::CachedSize _control_predecessor_ids_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> called_computation_ids_;
    mutable ::google::protobuf::internal::CachedSize _called_computation_ids_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ReplicaGroup > replica_groups_;
    ::google::protobuf::RepeatedPtrField< ::xla::SourceTarget > source_target_pairs_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > operand_shapes_with_layout_;
    ::google::protobuf::RepeatedPtrField< ::xla::OutputOperandAliasing > output_operand_aliasing_;
    ::google::protobuf::RepeatedPtrField< ::xla::SparsityDescriptor > dot_sparsity_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr opcode_;
    ::google::protobuf::internal::ArenaStringPtr fusion_kind_;
    ::google::protobuf::internal::ArenaStringPtr outfeed_config_;
    ::google::protobuf::internal::ArenaStringPtr infeed_config_;
    ::google::protobuf::internal::ArenaStringPtr custom_call_target_;
    ::google::protobuf::internal::ArenaStringPtr backend_config_;
    ::google::protobuf::internal::ArenaStringPtr comparison_direction_;
    ::google::protobuf::internal::ArenaStringPtr comparison_type_;
    ::google::protobuf::internal::ArenaStringPtr async_execution_thread_;
    ::xla::ShapeProto* shape_;
    ::xla::OpMetadata* metadata_;
    ::xla::LiteralProto* literal_;
    ::xla::Window* window_;
    ::xla::ConvolutionDimensionNumbers* convolution_dimension_numbers_;
    ::xla::PaddingConfig* padding_config_;
    ::xla::ShapeProto* outfeed_shape_;
    ::xla::DotDimensionNumbers* dot_dimension_numbers_;
    ::xla::GatherDimensionNumbers* gather_dimension_numbers_;
    ::xla::OpSharding* sharding_;
    ::xla::ScatterDimensionNumbers* scatter_dimension_numbers_;
    ::xla::PrecisionConfig* precision_config_;
    ::xla::OpSharding* domain_entry_sharding_;
    ::xla::OpSharding* domain_exit_sharding_;
    ::xla::TriangularSolveOptions* triangular_solve_options_;
    ::xla::ParameterReplication* parameter_replication_;
    ::xla::CholeskyOptions* cholesky_options_;
    ::xla::FrontendAttributes* frontend_attributes_;
    ::xla::StatisticsViz* statistics_viz_;
    ::xla::CollectiveDeviceListProto* collective_device_list_;
    ::xla::OriginalValueProto* original_value_;
    ::xla::RaggedDotDimensionNumbers* ragged_dot_dimension_numbers_;
    ::xla::ResultAccuracy* result_accuracy_;
    ::int64_t parameter_number_;
    ::int64_t tuple_index_;
    ::int32_t exponent_bits_;
    ::int32_t mantissa_bits_;
    int distribution_;
    float epsilon_;
    ::int64_t feature_index_;
    ::int64_t channel_id_;
    ::int64_t id_;
    ::int64_t all_reduce_id_;
    ::int64_t feature_group_count_;
    int fft_type_;
    bool use_global_device_ids_;
    bool is_host_transfer_;
    bool is_stable_;
    bool constrain_layout_;
    ::int64_t batch_group_count_;
    ::int64_t delta_;
    bool custom_call_has_side_effect_;
    bool indices_are_sorted_;
    bool unique_indices_;
    bool is_cross_program_prefetch_;
    int rng_algorithm_;
    int padding_type_;
    int custom_call_schedule_;
    ::int64_t k_;
    int custom_call_api_version_;
    bool largest_;
    bool is_composite_;
    int collective_op_group_mode_;
    union OptionalCrossProgramPrefetchIndexUnion {
      constexpr OptionalCrossProgramPrefetchIndexUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::int32_t cross_program_prefetch_index_;
    } optional_cross_program_prefetch_index_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloInputs final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloInputs) */ {
 public:
  inline HloInputs() : HloInputs(nullptr) {}
  ~HloInputs() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloInputs(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloInputs(const HloInputs& from) : HloInputs(nullptr, from) {}
  inline HloInputs(HloInputs&& from) noexcept
      : HloInputs(nullptr, std::move(from)) {}
  inline HloInputs& operator=(const HloInputs& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloInputs& operator=(HloInputs&& 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 HloInputs& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloInputs* internal_default_instance() {
    return reinterpret_cast<const HloInputs*>(
        &_HloInputs_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 28;
  friend void swap(HloInputs& a, HloInputs& b) { a.Swap(&b); }
  inline void Swap(HloInputs* 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(HloInputs* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloInputs* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloInputs>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloInputs& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloInputs& from) { HloInputs::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(HloInputs* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloInputs"; }

 protected:
  explicit HloInputs(::google::protobuf::Arena* arena);
  HloInputs(::google::protobuf::Arena* arena, const HloInputs& from);
  HloInputs(::google::protobuf::Arena* arena, HloInputs&& from) noexcept
      : HloInputs(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 LiteralDescriptor = HloInputs_LiteralDescriptor;

  // accessors -------------------------------------------------------
  enum : int {
    kArgumentsFieldNumber = 1,
    kArgumentsDescriptorsFieldNumber = 2,
  };
  // repeated .xla.LiteralProto arguments = 1;
  int arguments_size() const;
  private:
  int _internal_arguments_size() const;

  public:
  void clear_arguments() ;
  ::xla::LiteralProto* mutable_arguments(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* mutable_arguments();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_arguments() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* _internal_mutable_arguments();
  public:
  const ::xla::LiteralProto& arguments(int index) const;
  ::xla::LiteralProto* add_arguments();
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& arguments() const;
  // repeated .xla.HloInputs.LiteralDescriptor arguments_descriptors = 2;
  int arguments_descriptors_size() const;
  private:
  int _internal_arguments_descriptors_size() const;

  public:
  void clear_arguments_descriptors() ;
  ::xla::HloInputs_LiteralDescriptor* mutable_arguments_descriptors(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>* mutable_arguments_descriptors();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>& _internal_arguments_descriptors() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>* _internal_mutable_arguments_descriptors();
  public:
  const ::xla::HloInputs_LiteralDescriptor& arguments_descriptors(int index) const;
  ::xla::HloInputs_LiteralDescriptor* add_arguments_descriptors();
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>& arguments_descriptors() const;
  // @@protoc_insertion_point(class_scope:xla.HloInputs)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 2,
      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 HloInputs& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::LiteralProto > arguments_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputs_LiteralDescriptor > arguments_descriptors_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloComputationProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloComputationProto) */ {
 public:
  inline HloComputationProto() : HloComputationProto(nullptr) {}
  ~HloComputationProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloComputationProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloComputationProto(const HloComputationProto& from) : HloComputationProto(nullptr, from) {}
  inline HloComputationProto(HloComputationProto&& from) noexcept
      : HloComputationProto(nullptr, std::move(from)) {}
  inline HloComputationProto& operator=(const HloComputationProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloComputationProto& operator=(HloComputationProto&& 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 HloComputationProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloComputationProto* internal_default_instance() {
    return reinterpret_cast<const HloComputationProto*>(
        &_HloComputationProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(HloComputationProto& a, HloComputationProto& b) { a.Swap(&b); }
  inline void Swap(HloComputationProto* 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(HloComputationProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloComputationProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloComputationProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloComputationProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloComputationProto& from) { HloComputationProto::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(HloComputationProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloComputationProto"; }

 protected:
  explicit HloComputationProto(::google::protobuf::Arena* arena);
  HloComputationProto(::google::protobuf::Arena* arena, const HloComputationProto& from);
  HloComputationProto(::google::protobuf::Arena* arena, HloComputationProto&& from) noexcept
      : HloComputationProto(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 {
    kInstructionsFieldNumber = 2,
    kNameFieldNumber = 1,
    kExecutionThreadFieldNumber = 8,
    kProgramShapeFieldNumber = 4,
    kIdFieldNumber = 5,
    kRootIdFieldNumber = 6,
    kIsFusionComputationFieldNumber = 7,
  };
  // repeated .xla.HloInstructionProto instructions = 2;
  int instructions_size() const;
  private:
  int _internal_instructions_size() const;

  public:
  void clear_instructions() ;
  ::xla::HloInstructionProto* mutable_instructions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>* mutable_instructions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>& _internal_instructions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>* _internal_mutable_instructions();
  public:
  const ::xla::HloInstructionProto& instructions(int index) const;
  ::xla::HloInstructionProto* add_instructions();
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>& instructions() const;
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // string execution_thread = 8;
  void clear_execution_thread() ;
  const std::string& execution_thread() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_execution_thread(Arg_&& arg, Args_... args);
  std::string* mutable_execution_thread();
  PROTOBUF_NODISCARD std::string* release_execution_thread();
  void set_allocated_execution_thread(std::string* value);

  private:
  const std::string& _internal_execution_thread() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_execution_thread(
      const std::string& value);
  std::string* _internal_mutable_execution_thread();

  public:
  // .xla.ProgramShapeProto program_shape = 4;
  bool has_program_shape() const;
  void clear_program_shape() ;
  const ::xla::ProgramShapeProto& program_shape() const;
  PROTOBUF_NODISCARD ::xla::ProgramShapeProto* release_program_shape();
  ::xla::ProgramShapeProto* mutable_program_shape();
  void set_allocated_program_shape(::xla::ProgramShapeProto* value);
  void unsafe_arena_set_allocated_program_shape(::xla::ProgramShapeProto* value);
  ::xla::ProgramShapeProto* unsafe_arena_release_program_shape();

  private:
  const ::xla::ProgramShapeProto& _internal_program_shape() const;
  ::xla::ProgramShapeProto* _internal_mutable_program_shape();

  public:
  // int64 id = 5;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

  private:
  ::int64_t _internal_id() const;
  void _internal_set_id(::int64_t value);

  public:
  // int64 root_id = 6;
  void clear_root_id() ;
  ::int64_t root_id() const;
  void set_root_id(::int64_t value);

  private:
  ::int64_t _internal_root_id() const;
  void _internal_set_root_id(::int64_t value);

  public:
  // bool is_fusion_computation = 7;
  void clear_is_fusion_computation() ;
  bool is_fusion_computation() const;
  void set_is_fusion_computation(bool value);

  private:
  bool _internal_is_fusion_computation() const;
  void _internal_set_is_fusion_computation(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloComputationProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 2,
      52, 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 HloComputationProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInstructionProto > instructions_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr execution_thread_;
    ::xla::ProgramShapeProto* program_shape_;
    ::int64_t id_;
    ::int64_t root_id_;
    bool is_fusion_computation_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloModuleProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloModuleProto) */ {
 public:
  inline HloModuleProto() : HloModuleProto(nullptr) {}
  ~HloModuleProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloModuleProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloModuleProto(const HloModuleProto& from) : HloModuleProto(nullptr, from) {}
  inline HloModuleProto(HloModuleProto&& from) noexcept
      : HloModuleProto(nullptr, std::move(from)) {}
  inline HloModuleProto& operator=(const HloModuleProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloModuleProto& operator=(HloModuleProto&& 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 HloModuleProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloModuleProto* internal_default_instance() {
    return reinterpret_cast<const HloModuleProto*>(
        &_HloModuleProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(HloModuleProto& a, HloModuleProto& b) { a.Swap(&b); }
  inline void Swap(HloModuleProto* 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(HloModuleProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloModuleProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloModuleProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloModuleProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloModuleProto& from) { HloModuleProto::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(HloModuleProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloModuleProto"; }

 protected:
  explicit HloModuleProto(::google::protobuf::Arena* arena);
  HloModuleProto(::google::protobuf::Arena* arena, const HloModuleProto& from);
  HloModuleProto(::google::protobuf::Arena* arena, HloModuleProto&& from) noexcept
      : HloModuleProto(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 ProfileInfo = HloModuleProto_ProfileInfo;
  using ProfileType = HloModuleProto_ProfileType;
  static constexpr ProfileType INVALID = HloModuleProto_ProfileType_INVALID;
  static constexpr ProfileType FLAG = HloModuleProto_ProfileType_FLAG;
  static constexpr ProfileType FUSION = HloModuleProto_ProfileType_FUSION;
  static constexpr ProfileType LAYOUT = HloModuleProto_ProfileType_LAYOUT;
  static constexpr ProfileType DOT = HloModuleProto_ProfileType_DOT;
  static constexpr ProfileType FLAGNET = HloModuleProto_ProfileType_FLAGNET;
  static constexpr ProfileType SHARDING = HloModuleProto_ProfileType_SHARDING;
  static constexpr ProfileType SCHEDULE = HloModuleProto_ProfileType_SCHEDULE;
  static inline bool ProfileType_IsValid(int value) {
    return HloModuleProto_ProfileType_IsValid(value);
  }
  static constexpr ProfileType ProfileType_MIN = HloModuleProto_ProfileType_ProfileType_MIN;
  static constexpr ProfileType ProfileType_MAX = HloModuleProto_ProfileType_ProfileType_MAX;
  static constexpr int ProfileType_ARRAYSIZE = HloModuleProto_ProfileType_ProfileType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* ProfileType_descriptor() {
    return HloModuleProto_ProfileType_descriptor();
  }
  template <typename T>
  static inline const std::string& ProfileType_Name(T value) {
    return HloModuleProto_ProfileType_Name(value);
  }
  static inline bool ProfileType_Parse(absl::string_view name, ProfileType* value) {
    return HloModuleProto_ProfileType_Parse(name, value);
  }
  using ProfileGenerationStrategy = HloModuleProto_ProfileGenerationStrategy;
  static constexpr ProfileGenerationStrategy PROFILE_GENERATION_STRATEGY_UNKNOWN = HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_UNKNOWN;
  static constexpr ProfileGenerationStrategy PROFILE_GENERATION_STRATEGY_GA = HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_GA;
  static constexpr ProfileGenerationStrategy PROFILE_GENERATION_STRATEGY_FANTA = HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_FANTA;
  static constexpr ProfileGenerationStrategy PROFILE_GENERATION_STRATEGY_CFO = HloModuleProto_ProfileGenerationStrategy_PROFILE_GENERATION_STRATEGY_CFO;
  static inline bool ProfileGenerationStrategy_IsValid(int value) {
    return HloModuleProto_ProfileGenerationStrategy_IsValid(value);
  }
  static constexpr ProfileGenerationStrategy ProfileGenerationStrategy_MIN = HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_MIN;
  static constexpr ProfileGenerationStrategy ProfileGenerationStrategy_MAX = HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_MAX;
  static constexpr int ProfileGenerationStrategy_ARRAYSIZE = HloModuleProto_ProfileGenerationStrategy_ProfileGenerationStrategy_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* ProfileGenerationStrategy_descriptor() {
    return HloModuleProto_ProfileGenerationStrategy_descriptor();
  }
  template <typename T>
  static inline const std::string& ProfileGenerationStrategy_Name(T value) {
    return HloModuleProto_ProfileGenerationStrategy_Name(value);
  }
  static inline bool ProfileGenerationStrategy_Parse(absl::string_view name, ProfileGenerationStrategy* value) {
    return HloModuleProto_ProfileGenerationStrategy_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kComputationsFieldNumber = 3,
    kCrossProgramPrefetchesFieldNumber = 10,
    kProfileInfoFieldNumber = 13,
    kSpmdParametersShardingsFieldNumber = 14,
    kNameFieldNumber = 1,
    kEntryComputationNameFieldNumber = 2,
    kHostProgramShapeFieldNumber = 4,
    kScheduleFieldNumber = 7,
    kInputOutputAliasFieldNumber = 8,
    kSpmdOutputShardingFieldNumber = 12,
    kDeviceAssignmentFieldNumber = 15,
    kStackFrameIndexFieldNumber = 17,
    kBufferDonorFieldNumber = 18,
    kFrontendAttributesFieldNumber = 19,
    kOriginalValueRecoveryTableFieldNumber = 20,
    kIdFieldNumber = 5,
    kEntryComputationIdFieldNumber = 6,
    kIsDynamicFieldNumber = 11,
    kUseAutoSpmdPartitioningFieldNumber = 16,
  };
  // repeated .xla.HloComputationProto computations = 3;
  int computations_size() const;
  private:
  int _internal_computations_size() const;

  public:
  void clear_computations() ;
  ::xla::HloComputationProto* mutable_computations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>* mutable_computations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>& _internal_computations() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>* _internal_mutable_computations();
  public:
  const ::xla::HloComputationProto& computations(int index) const;
  ::xla::HloComputationProto* add_computations();
  const ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>& computations() const;
  // repeated .xla.CrossProgramPrefetch cross_program_prefetches = 10;
  int cross_program_prefetches_size() const;
  private:
  int _internal_cross_program_prefetches_size() const;

  public:
  void clear_cross_program_prefetches() ;
  ::xla::CrossProgramPrefetch* mutable_cross_program_prefetches(int index);
  ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>* mutable_cross_program_prefetches();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>& _internal_cross_program_prefetches() const;
  ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>* _internal_mutable_cross_program_prefetches();
  public:
  const ::xla::CrossProgramPrefetch& cross_program_prefetches(int index) const;
  ::xla::CrossProgramPrefetch* add_cross_program_prefetches();
  const ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>& cross_program_prefetches() const;
  // repeated .xla.HloModuleProto.ProfileInfo profile_info = 13;
  int profile_info_size() const;
  private:
  int _internal_profile_info_size() const;

  public:
  void clear_profile_info() ;
  ::xla::HloModuleProto_ProfileInfo* mutable_profile_info(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>* mutable_profile_info();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>& _internal_profile_info() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>* _internal_mutable_profile_info();
  public:
  const ::xla::HloModuleProto_ProfileInfo& profile_info(int index) const;
  ::xla::HloModuleProto_ProfileInfo* add_profile_info();
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>& profile_info() const;
  // repeated .xla.OpSharding spmd_parameters_shardings = 14;
  int spmd_parameters_shardings_size() const;
  private:
  int _internal_spmd_parameters_shardings_size() const;

  public:
  void clear_spmd_parameters_shardings() ;
  ::xla::OpSharding* mutable_spmd_parameters_shardings(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* mutable_spmd_parameters_shardings();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& _internal_spmd_parameters_shardings() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* _internal_mutable_spmd_parameters_shardings();
  public:
  const ::xla::OpSharding& spmd_parameters_shardings(int index) const;
  ::xla::OpSharding* add_spmd_parameters_shardings();
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& spmd_parameters_shardings() const;
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // string entry_computation_name = 2;
  void clear_entry_computation_name() ;
  const std::string& entry_computation_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_entry_computation_name(Arg_&& arg, Args_... args);
  std::string* mutable_entry_computation_name();
  PROTOBUF_NODISCARD std::string* release_entry_computation_name();
  void set_allocated_entry_computation_name(std::string* value);

  private:
  const std::string& _internal_entry_computation_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_entry_computation_name(
      const std::string& value);
  std::string* _internal_mutable_entry_computation_name();

  public:
  // .xla.ProgramShapeProto host_program_shape = 4;
  bool has_host_program_shape() const;
  void clear_host_program_shape() ;
  const ::xla::ProgramShapeProto& host_program_shape() const;
  PROTOBUF_NODISCARD ::xla::ProgramShapeProto* release_host_program_shape();
  ::xla::ProgramShapeProto* mutable_host_program_shape();
  void set_allocated_host_program_shape(::xla::ProgramShapeProto* value);
  void unsafe_arena_set_allocated_host_program_shape(::xla::ProgramShapeProto* value);
  ::xla::ProgramShapeProto* unsafe_arena_release_host_program_shape();

  private:
  const ::xla::ProgramShapeProto& _internal_host_program_shape() const;
  ::xla::ProgramShapeProto* _internal_mutable_host_program_shape();

  public:
  // .xla.HloScheduleProto schedule = 7;
  bool has_schedule() const;
  void clear_schedule() ;
  const ::xla::HloScheduleProto& schedule() const;
  PROTOBUF_NODISCARD ::xla::HloScheduleProto* release_schedule();
  ::xla::HloScheduleProto* mutable_schedule();
  void set_allocated_schedule(::xla::HloScheduleProto* value);
  void unsafe_arena_set_allocated_schedule(::xla::HloScheduleProto* value);
  ::xla::HloScheduleProto* unsafe_arena_release_schedule();

  private:
  const ::xla::HloScheduleProto& _internal_schedule() const;
  ::xla::HloScheduleProto* _internal_mutable_schedule();

  public:
  // .xla.HloInputOutputAliasProto input_output_alias = 8;
  bool has_input_output_alias() const;
  void clear_input_output_alias() ;
  const ::xla::HloInputOutputAliasProto& input_output_alias() const;
  PROTOBUF_NODISCARD ::xla::HloInputOutputAliasProto* release_input_output_alias();
  ::xla::HloInputOutputAliasProto* mutable_input_output_alias();
  void set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* value);
  void unsafe_arena_set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* value);
  ::xla::HloInputOutputAliasProto* unsafe_arena_release_input_output_alias();

  private:
  const ::xla::HloInputOutputAliasProto& _internal_input_output_alias() const;
  ::xla::HloInputOutputAliasProto* _internal_mutable_input_output_alias();

  public:
  // .xla.OpSharding spmd_output_sharding = 12;
  bool has_spmd_output_sharding() const;
  void clear_spmd_output_sharding() ;
  const ::xla::OpSharding& spmd_output_sharding() const;
  PROTOBUF_NODISCARD ::xla::OpSharding* release_spmd_output_sharding();
  ::xla::OpSharding* mutable_spmd_output_sharding();
  void set_allocated_spmd_output_sharding(::xla::OpSharding* value);
  void unsafe_arena_set_allocated_spmd_output_sharding(::xla::OpSharding* value);
  ::xla::OpSharding* unsafe_arena_release_spmd_output_sharding();

  private:
  const ::xla::OpSharding& _internal_spmd_output_sharding() const;
  ::xla::OpSharding* _internal_mutable_spmd_output_sharding();

  public:
  // .xla.DeviceAssignmentProto device_assignment = 15;
  bool has_device_assignment() const;
  void clear_device_assignment() ;
  const ::xla::DeviceAssignmentProto& device_assignment() const;
  PROTOBUF_NODISCARD ::xla::DeviceAssignmentProto* release_device_assignment();
  ::xla::DeviceAssignmentProto* mutable_device_assignment();
  void set_allocated_device_assignment(::xla::DeviceAssignmentProto* value);
  void unsafe_arena_set_allocated_device_assignment(::xla::DeviceAssignmentProto* value);
  ::xla::DeviceAssignmentProto* unsafe_arena_release_device_assignment();

  private:
  const ::xla::DeviceAssignmentProto& _internal_device_assignment() const;
  ::xla::DeviceAssignmentProto* _internal_mutable_device_assignment();

  public:
  // .xla.StackFrameIndexProto stack_frame_index = 17;
  bool has_stack_frame_index() const;
  void clear_stack_frame_index() ;
  const ::xla::StackFrameIndexProto& stack_frame_index() const;
  PROTOBUF_NODISCARD ::xla::StackFrameIndexProto* release_stack_frame_index();
  ::xla::StackFrameIndexProto* mutable_stack_frame_index();
  void set_allocated_stack_frame_index(::xla::StackFrameIndexProto* value);
  void unsafe_arena_set_allocated_stack_frame_index(::xla::StackFrameIndexProto* value);
  ::xla::StackFrameIndexProto* unsafe_arena_release_stack_frame_index();

  private:
  const ::xla::StackFrameIndexProto& _internal_stack_frame_index() const;
  ::xla::StackFrameIndexProto* _internal_mutable_stack_frame_index();

  public:
  // .xla.HloBufferDonorProto buffer_donor = 18;
  bool has_buffer_donor() const;
  void clear_buffer_donor() ;
  const ::xla::HloBufferDonorProto& buffer_donor() const;
  PROTOBUF_NODISCARD ::xla::HloBufferDonorProto* release_buffer_donor();
  ::xla::HloBufferDonorProto* mutable_buffer_donor();
  void set_allocated_buffer_donor(::xla::HloBufferDonorProto* value);
  void unsafe_arena_set_allocated_buffer_donor(::xla::HloBufferDonorProto* value);
  ::xla::HloBufferDonorProto* unsafe_arena_release_buffer_donor();

  private:
  const ::xla::HloBufferDonorProto& _internal_buffer_donor() const;
  ::xla::HloBufferDonorProto* _internal_mutable_buffer_donor();

  public:
  // .xla.FrontendAttributes frontend_attributes = 19;
  bool has_frontend_attributes() const;
  void clear_frontend_attributes() ;
  const ::xla::FrontendAttributes& frontend_attributes() const;
  PROTOBUF_NODISCARD ::xla::FrontendAttributes* release_frontend_attributes();
  ::xla::FrontendAttributes* mutable_frontend_attributes();
  void set_allocated_frontend_attributes(::xla::FrontendAttributes* value);
  void unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* value);
  ::xla::FrontendAttributes* unsafe_arena_release_frontend_attributes();

  private:
  const ::xla::FrontendAttributes& _internal_frontend_attributes() const;
  ::xla::FrontendAttributes* _internal_mutable_frontend_attributes();

  public:
  // .xla.OriginalValueRecoveryTableProto original_value_recovery_table = 20;
  bool has_original_value_recovery_table() const;
  void clear_original_value_recovery_table() ;
  const ::xla::OriginalValueRecoveryTableProto& original_value_recovery_table() const;
  PROTOBUF_NODISCARD ::xla::OriginalValueRecoveryTableProto* release_original_value_recovery_table();
  ::xla::OriginalValueRecoveryTableProto* mutable_original_value_recovery_table();
  void set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* value);
  void unsafe_arena_set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* value);
  ::xla::OriginalValueRecoveryTableProto* unsafe_arena_release_original_value_recovery_table();

  private:
  const ::xla::OriginalValueRecoveryTableProto& _internal_original_value_recovery_table() const;
  ::xla::OriginalValueRecoveryTableProto* _internal_mutable_original_value_recovery_table();

  public:
  // int64 id = 5;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

  private:
  ::int64_t _internal_id() const;
  void _internal_set_id(::int64_t value);

  public:
  // int64 entry_computation_id = 6;
  void clear_entry_computation_id() ;
  ::int64_t entry_computation_id() const;
  void set_entry_computation_id(::int64_t value);

  private:
  ::int64_t _internal_entry_computation_id() const;
  void _internal_set_entry_computation_id(::int64_t value);

  public:
  // bool is_dynamic = 11;
  void clear_is_dynamic() ;
  bool is_dynamic() const;
  void set_is_dynamic(bool value);

  private:
  bool _internal_is_dynamic() const;
  void _internal_set_is_dynamic(bool value);

  public:
  // bool use_auto_spmd_partitioning = 16;
  void clear_use_auto_spmd_partitioning() ;
  bool use_auto_spmd_partitioning() const;
  void set_use_auto_spmd_partitioning(bool value);

  private:
  bool _internal_use_auto_spmd_partitioning() const;
  void _internal_set_use_auto_spmd_partitioning(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloModuleProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      5, 19, 13,
      69, 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 HloModuleProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloComputationProto > computations_;
    ::google::protobuf::RepeatedPtrField< ::xla::CrossProgramPrefetch > cross_program_prefetches_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloModuleProto_ProfileInfo > profile_info_;
    ::google::protobuf::RepeatedPtrField< ::xla::OpSharding > spmd_parameters_shardings_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr entry_computation_name_;
    ::xla::ProgramShapeProto* host_program_shape_;
    ::xla::HloScheduleProto* schedule_;
    ::xla::HloInputOutputAliasProto* input_output_alias_;
    ::xla::OpSharding* spmd_output_sharding_;
    ::xla::DeviceAssignmentProto* device_assignment_;
    ::xla::StackFrameIndexProto* stack_frame_index_;
    ::xla::HloBufferDonorProto* buffer_donor_;
    ::xla::FrontendAttributes* frontend_attributes_;
    ::xla::OriginalValueRecoveryTableProto* original_value_recovery_table_;
    ::int64_t id_;
    ::int64_t entry_computation_id_;
    bool is_dynamic_;
    bool use_auto_spmd_partitioning_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT OriginalValueRecoveryTableProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.OriginalValueRecoveryTableProto) */ {
 public:
  inline OriginalValueRecoveryTableProto() : OriginalValueRecoveryTableProto(nullptr) {}
  ~OriginalValueRecoveryTableProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR OriginalValueRecoveryTableProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline OriginalValueRecoveryTableProto(const OriginalValueRecoveryTableProto& from) : OriginalValueRecoveryTableProto(nullptr, from) {}
  inline OriginalValueRecoveryTableProto(OriginalValueRecoveryTableProto&& from) noexcept
      : OriginalValueRecoveryTableProto(nullptr, std::move(from)) {}
  inline OriginalValueRecoveryTableProto& operator=(const OriginalValueRecoveryTableProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OriginalValueRecoveryTableProto& operator=(OriginalValueRecoveryTableProto&& 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 OriginalValueRecoveryTableProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const OriginalValueRecoveryTableProto* internal_default_instance() {
    return reinterpret_cast<const OriginalValueRecoveryTableProto*>(
        &_OriginalValueRecoveryTableProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 33;
  friend void swap(OriginalValueRecoveryTableProto& a, OriginalValueRecoveryTableProto& b) { a.Swap(&b); }
  inline void Swap(OriginalValueRecoveryTableProto* 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(OriginalValueRecoveryTableProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  OriginalValueRecoveryTableProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<OriginalValueRecoveryTableProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalValueRecoveryTableProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalValueRecoveryTableProto& from) { OriginalValueRecoveryTableProto::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(OriginalValueRecoveryTableProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.OriginalValueRecoveryTableProto"; }

 protected:
  explicit OriginalValueRecoveryTableProto(::google::protobuf::Arena* arena);
  OriginalValueRecoveryTableProto(::google::protobuf::Arena* arena, const OriginalValueRecoveryTableProto& from);
  OriginalValueRecoveryTableProto(::google::protobuf::Arena* arena, OriginalValueRecoveryTableProto&& from) noexcept
      : OriginalValueRecoveryTableProto(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 Entry = OriginalValueRecoveryTableProto_Entry;

  // accessors -------------------------------------------------------
  enum : int {
    kEntriesFieldNumber = 1,
  };
  // repeated .xla.OriginalValueRecoveryTableProto.Entry entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  ::xla::OriginalValueRecoveryTableProto_Entry* mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>* mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>* _internal_mutable_entries();
  public:
  const ::xla::OriginalValueRecoveryTableProto_Entry& entries(int index) const;
  ::xla::OriginalValueRecoveryTableProto_Entry* add_entries();
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>& entries() const;
  // @@protoc_insertion_point(class_scope:xla.OriginalValueRecoveryTableProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OriginalValueRecoveryTableProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::OriginalValueRecoveryTableProto_Entry > entries_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT OriginalValueRecoveryTableProto_Entry final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.OriginalValueRecoveryTableProto.Entry) */ {
 public:
  inline OriginalValueRecoveryTableProto_Entry() : OriginalValueRecoveryTableProto_Entry(nullptr) {}
  ~OriginalValueRecoveryTableProto_Entry() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR OriginalValueRecoveryTableProto_Entry(
      ::google::protobuf::internal::ConstantInitialized);

  inline OriginalValueRecoveryTableProto_Entry(const OriginalValueRecoveryTableProto_Entry& from) : OriginalValueRecoveryTableProto_Entry(nullptr, from) {}
  inline OriginalValueRecoveryTableProto_Entry(OriginalValueRecoveryTableProto_Entry&& from) noexcept
      : OriginalValueRecoveryTableProto_Entry(nullptr, std::move(from)) {}
  inline OriginalValueRecoveryTableProto_Entry& operator=(const OriginalValueRecoveryTableProto_Entry& from) {
    CopyFrom(from);
    return *this;
  }
  inline OriginalValueRecoveryTableProto_Entry& operator=(OriginalValueRecoveryTableProto_Entry&& 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 OriginalValueRecoveryTableProto_Entry& default_instance() {
    return *internal_default_instance();
  }
  static inline const OriginalValueRecoveryTableProto_Entry* internal_default_instance() {
    return reinterpret_cast<const OriginalValueRecoveryTableProto_Entry*>(
        &_OriginalValueRecoveryTableProto_Entry_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 32;
  friend void swap(OriginalValueRecoveryTableProto_Entry& a, OriginalValueRecoveryTableProto_Entry& b) { a.Swap(&b); }
  inline void Swap(OriginalValueRecoveryTableProto_Entry* 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(OriginalValueRecoveryTableProto_Entry* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  OriginalValueRecoveryTableProto_Entry* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<OriginalValueRecoveryTableProto_Entry>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalValueRecoveryTableProto_Entry& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalValueRecoveryTableProto_Entry& from) { OriginalValueRecoveryTableProto_Entry::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(OriginalValueRecoveryTableProto_Entry* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.OriginalValueRecoveryTableProto.Entry"; }

 protected:
  explicit OriginalValueRecoveryTableProto_Entry(::google::protobuf::Arena* arena);
  OriginalValueRecoveryTableProto_Entry(::google::protobuf::Arena* arena, const OriginalValueRecoveryTableProto_Entry& from);
  OriginalValueRecoveryTableProto_Entry(::google::protobuf::Arena* arena, OriginalValueRecoveryTableProto_Entry&& from) noexcept
      : OriginalValueRecoveryTableProto_Entry(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 {
    kRemovedOriginalArrayFieldNumber = 1,
    kRemainingOriginalArrayFieldNumber = 2,
    kRecoveryModuleFieldNumber = 3,
  };
  // .xla.OriginalArrayProto removed_original_array = 1;
  bool has_removed_original_array() const;
  void clear_removed_original_array() ;
  const ::xla::OriginalArrayProto& removed_original_array() const;
  PROTOBUF_NODISCARD ::xla::OriginalArrayProto* release_removed_original_array();
  ::xla::OriginalArrayProto* mutable_removed_original_array();
  void set_allocated_removed_original_array(::xla::OriginalArrayProto* value);
  void unsafe_arena_set_allocated_removed_original_array(::xla::OriginalArrayProto* value);
  ::xla::OriginalArrayProto* unsafe_arena_release_removed_original_array();

  private:
  const ::xla::OriginalArrayProto& _internal_removed_original_array() const;
  ::xla::OriginalArrayProto* _internal_mutable_removed_original_array();

  public:
  // .xla.OriginalArrayProto remaining_original_array = 2;
  bool has_remaining_original_array() const;
  void clear_remaining_original_array() ;
  const ::xla::OriginalArrayProto& remaining_original_array() const;
  PROTOBUF_NODISCARD ::xla::OriginalArrayProto* release_remaining_original_array();
  ::xla::OriginalArrayProto* mutable_remaining_original_array();
  void set_allocated_remaining_original_array(::xla::OriginalArrayProto* value);
  void unsafe_arena_set_allocated_remaining_original_array(::xla::OriginalArrayProto* value);
  ::xla::OriginalArrayProto* unsafe_arena_release_remaining_original_array();

  private:
  const ::xla::OriginalArrayProto& _internal_remaining_original_array() const;
  ::xla::OriginalArrayProto* _internal_mutable_remaining_original_array();

  public:
  // .xla.HloModuleProto recovery_module = 3;
  bool has_recovery_module() const;
  void clear_recovery_module() ;
  const ::xla::HloModuleProto& recovery_module() const;
  PROTOBUF_NODISCARD ::xla::HloModuleProto* release_recovery_module();
  ::xla::HloModuleProto* mutable_recovery_module();
  void set_allocated_recovery_module(::xla::HloModuleProto* value);
  void unsafe_arena_set_allocated_recovery_module(::xla::HloModuleProto* value);
  ::xla::HloModuleProto* unsafe_arena_release_recovery_module();

  private:
  const ::xla::HloModuleProto& _internal_recovery_module() const;
  ::xla::HloModuleProto* _internal_mutable_recovery_module();

  public:
  // @@protoc_insertion_point(class_scope:xla.OriginalValueRecoveryTableProto.Entry)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 3,
      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 OriginalValueRecoveryTableProto_Entry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::OriginalArrayProto* removed_original_array_;
    ::xla::OriginalArrayProto* remaining_original_array_;
    ::xla::HloModuleProto* recovery_module_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloUnoptimizedSnapshot final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloUnoptimizedSnapshot) */ {
 public:
  inline HloUnoptimizedSnapshot() : HloUnoptimizedSnapshot(nullptr) {}
  ~HloUnoptimizedSnapshot() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloUnoptimizedSnapshot(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloUnoptimizedSnapshot(const HloUnoptimizedSnapshot& from) : HloUnoptimizedSnapshot(nullptr, from) {}
  inline HloUnoptimizedSnapshot(HloUnoptimizedSnapshot&& from) noexcept
      : HloUnoptimizedSnapshot(nullptr, std::move(from)) {}
  inline HloUnoptimizedSnapshot& operator=(const HloUnoptimizedSnapshot& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloUnoptimizedSnapshot& operator=(HloUnoptimizedSnapshot&& 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 HloUnoptimizedSnapshot& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloUnoptimizedSnapshot* internal_default_instance() {
    return reinterpret_cast<const HloUnoptimizedSnapshot*>(
        &_HloUnoptimizedSnapshot_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 29;
  friend void swap(HloUnoptimizedSnapshot& a, HloUnoptimizedSnapshot& b) { a.Swap(&b); }
  inline void Swap(HloUnoptimizedSnapshot* 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(HloUnoptimizedSnapshot* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloUnoptimizedSnapshot* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloUnoptimizedSnapshot>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloUnoptimizedSnapshot& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloUnoptimizedSnapshot& from) { HloUnoptimizedSnapshot::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(HloUnoptimizedSnapshot* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloUnoptimizedSnapshot"; }

 protected:
  explicit HloUnoptimizedSnapshot(::google::protobuf::Arena* arena);
  HloUnoptimizedSnapshot(::google::protobuf::Arena* arena, const HloUnoptimizedSnapshot& from);
  HloUnoptimizedSnapshot(::google::protobuf::Arena* arena, HloUnoptimizedSnapshot&& from) noexcept
      : HloUnoptimizedSnapshot(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 {
    kPartitionsFieldNumber = 2,
    kHloModuleFieldNumber = 1,
    kVersionFieldNumber = 3,
  };
  // repeated .xla.HloInputs partitions = 2;
  int partitions_size() const;
  private:
  int _internal_partitions_size() const;

  public:
  void clear_partitions() ;
  ::xla::HloInputs* mutable_partitions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs>* mutable_partitions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs>& _internal_partitions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs>* _internal_mutable_partitions();
  public:
  const ::xla::HloInputs& partitions(int index) const;
  ::xla::HloInputs* add_partitions();
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs>& partitions() const;
  // .xla.HloModuleProto hlo_module = 1;
  bool has_hlo_module() const;
  void clear_hlo_module() ;
  const ::xla::HloModuleProto& hlo_module() const;
  PROTOBUF_NODISCARD ::xla::HloModuleProto* release_hlo_module();
  ::xla::HloModuleProto* mutable_hlo_module();
  void set_allocated_hlo_module(::xla::HloModuleProto* value);
  void unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* value);
  ::xla::HloModuleProto* unsafe_arena_release_hlo_module();

  private:
  const ::xla::HloModuleProto& _internal_hlo_module() const;
  ::xla::HloModuleProto* _internal_mutable_hlo_module();

  public:
  // int32 version = 3;
  void clear_version() ;
  ::int32_t version() const;
  void set_version(::int32_t value);

  private:
  ::int32_t _internal_version() const;
  void _internal_set_version(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.HloUnoptimizedSnapshot)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 2,
      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 HloUnoptimizedSnapshot& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputs > partitions_;
    ::xla::HloModuleProto* hlo_module_;
    ::int32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloProto) */ {
 public:
  inline HloProto() : HloProto(nullptr) {}
  ~HloProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloProto(const HloProto& from) : HloProto(nullptr, from) {}
  inline HloProto(HloProto&& from) noexcept
      : HloProto(nullptr, std::move(from)) {}
  inline HloProto& operator=(const HloProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloProto& operator=(HloProto&& 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 HloProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloProto* internal_default_instance() {
    return reinterpret_cast<const HloProto*>(
        &_HloProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 25;
  friend void swap(HloProto& a, HloProto& b) { a.Swap(&b); }
  inline void Swap(HloProto* 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(HloProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloProto& from) { HloProto::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(HloProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloProto"; }

 protected:
  explicit HloProto(::google::protobuf::Arena* arena);
  HloProto(::google::protobuf::Arena* arena, const HloProto& from);
  HloProto(::google::protobuf::Arena* arena, HloProto&& from) noexcept
      : HloProto(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 {
    kHloModuleFieldNumber = 1,
    kBufferAssignmentFieldNumber = 3,
  };
  // .xla.HloModuleProto hlo_module = 1;
  bool has_hlo_module() const;
  void clear_hlo_module() ;
  const ::xla::HloModuleProto& hlo_module() const;
  PROTOBUF_NODISCARD ::xla::HloModuleProto* release_hlo_module();
  ::xla::HloModuleProto* mutable_hlo_module();
  void set_allocated_hlo_module(::xla::HloModuleProto* value);
  void unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* value);
  ::xla::HloModuleProto* unsafe_arena_release_hlo_module();

  private:
  const ::xla::HloModuleProto& _internal_hlo_module() const;
  ::xla::HloModuleProto* _internal_mutable_hlo_module();

  public:
  // .xla.BufferAssignmentProto buffer_assignment = 3;
  bool has_buffer_assignment() const;
  void clear_buffer_assignment() ;
  const ::xla::BufferAssignmentProto& buffer_assignment() const;
  PROTOBUF_NODISCARD ::xla::BufferAssignmentProto* release_buffer_assignment();
  ::xla::BufferAssignmentProto* mutable_buffer_assignment();
  void set_allocated_buffer_assignment(::xla::BufferAssignmentProto* value);
  void unsafe_arena_set_allocated_buffer_assignment(::xla::BufferAssignmentProto* value);
  ::xla::BufferAssignmentProto* unsafe_arena_release_buffer_assignment();

  private:
  const ::xla::BufferAssignmentProto& _internal_buffer_assignment() const;
  ::xla::BufferAssignmentProto* _internal_mutable_buffer_assignment();

  public:
  // @@protoc_insertion_point(class_scope:xla.HloProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 2, 2,
      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 HloProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::HloModuleProto* hlo_module_;
    ::xla::BufferAssignmentProto* buffer_assignment_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloModuleGroupProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloModuleGroupProto) */ {
 public:
  inline HloModuleGroupProto() : HloModuleGroupProto(nullptr) {}
  ~HloModuleGroupProto() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloModuleGroupProto(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloModuleGroupProto(const HloModuleGroupProto& from) : HloModuleGroupProto(nullptr, from) {}
  inline HloModuleGroupProto(HloModuleGroupProto&& from) noexcept
      : HloModuleGroupProto(nullptr, std::move(from)) {}
  inline HloModuleGroupProto& operator=(const HloModuleGroupProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloModuleGroupProto& operator=(HloModuleGroupProto&& 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 HloModuleGroupProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloModuleGroupProto* internal_default_instance() {
    return reinterpret_cast<const HloModuleGroupProto*>(
        &_HloModuleGroupProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(HloModuleGroupProto& a, HloModuleGroupProto& b) { a.Swap(&b); }
  inline void Swap(HloModuleGroupProto* 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(HloModuleGroupProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloModuleGroupProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloModuleGroupProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloModuleGroupProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloModuleGroupProto& from) { HloModuleGroupProto::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(HloModuleGroupProto* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloModuleGroupProto"; }

 protected:
  explicit HloModuleGroupProto(::google::protobuf::Arena* arena);
  HloModuleGroupProto(::google::protobuf::Arena* arena, const HloModuleGroupProto& from);
  HloModuleGroupProto(::google::protobuf::Arena* arena, HloModuleGroupProto&& from) noexcept
      : HloModuleGroupProto(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 {
    kHloModulesFieldNumber = 2,
    kNameFieldNumber = 1,
  };
  // repeated .xla.HloModuleProto hlo_modules = 2;
  int hlo_modules_size() const;
  private:
  int _internal_hlo_modules_size() const;

  public:
  void clear_hlo_modules() ;
  ::xla::HloModuleProto* mutable_hlo_modules(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>* mutable_hlo_modules();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>& _internal_hlo_modules() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>* _internal_mutable_hlo_modules();
  public:
  const ::xla::HloModuleProto& hlo_modules(int index) const;
  ::xla::HloModuleProto* add_hlo_modules();
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>& hlo_modules() const;
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // @@protoc_insertion_point(class_scope:xla.HloModuleGroupProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      36, 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 HloModuleGroupProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HloModuleProto > hlo_modules_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT HloSnapshot final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.HloSnapshot) */ {
 public:
  inline HloSnapshot() : HloSnapshot(nullptr) {}
  ~HloSnapshot() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR HloSnapshot(
      ::google::protobuf::internal::ConstantInitialized);

  inline HloSnapshot(const HloSnapshot& from) : HloSnapshot(nullptr, from) {}
  inline HloSnapshot(HloSnapshot&& from) noexcept
      : HloSnapshot(nullptr, std::move(from)) {}
  inline HloSnapshot& operator=(const HloSnapshot& from) {
    CopyFrom(from);
    return *this;
  }
  inline HloSnapshot& operator=(HloSnapshot&& 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 HloSnapshot& default_instance() {
    return *internal_default_instance();
  }
  static inline const HloSnapshot* internal_default_instance() {
    return reinterpret_cast<const HloSnapshot*>(
        &_HloSnapshot_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 26;
  friend void swap(HloSnapshot& a, HloSnapshot& b) { a.Swap(&b); }
  inline void Swap(HloSnapshot* 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(HloSnapshot* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HloSnapshot* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<HloSnapshot>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HloSnapshot& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HloSnapshot& from) { HloSnapshot::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(HloSnapshot* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "xla.HloSnapshot"; }

 protected:
  explicit HloSnapshot(::google::protobuf::Arena* arena);
  HloSnapshot(::google::protobuf::Arena* arena, const HloSnapshot& from);
  HloSnapshot(::google::protobuf::Arena* arena, HloSnapshot&& from) noexcept
      : HloSnapshot(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 {
    kArgumentsFieldNumber = 2,
    kExecutionPlatformFieldNumber = 4,
    kHloFieldNumber = 1,
    kResultFieldNumber = 3,
  };
  // repeated .xla.LiteralProto arguments = 2;
  int arguments_size() const;
  private:
  int _internal_arguments_size() const;

  public:
  void clear_arguments() ;
  ::xla::LiteralProto* mutable_arguments(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* mutable_arguments();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_arguments() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* _internal_mutable_arguments();
  public:
  const ::xla::LiteralProto& arguments(int index) const;
  ::xla::LiteralProto* add_arguments();
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& arguments() const;
  // string execution_platform = 4;
  void clear_execution_platform() ;
  const std::string& execution_platform() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_execution_platform(Arg_&& arg, Args_... args);
  std::string* mutable_execution_platform();
  PROTOBUF_NODISCARD std::string* release_execution_platform();
  void set_allocated_execution_platform(std::string* value);

  private:
  const std::string& _internal_execution_platform() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_execution_platform(
      const std::string& value);
  std::string* _internal_mutable_execution_platform();

  public:
  // .xla.HloProto hlo = 1;
  bool has_hlo() const;
  void clear_hlo() ;
  const ::xla::HloProto& hlo() const;
  PROTOBUF_NODISCARD ::xla::HloProto* release_hlo();
  ::xla::HloProto* mutable_hlo();
  void set_allocated_hlo(::xla::HloProto* value);
  void unsafe_arena_set_allocated_hlo(::xla::HloProto* value);
  ::xla::HloProto* unsafe_arena_release_hlo();

  private:
  const ::xla::HloProto& _internal_hlo() const;
  ::xla::HloProto* _internal_mutable_hlo();

  public:
  // .xla.LiteralProto result = 3;
  bool has_result() const;
  void clear_result() ;
  const ::xla::LiteralProto& result() const;
  PROTOBUF_NODISCARD ::xla::LiteralProto* release_result();
  ::xla::LiteralProto* mutable_result();
  void set_allocated_result(::xla::LiteralProto* value);
  void unsafe_arena_set_allocated_result(::xla::LiteralProto* value);
  ::xla::LiteralProto* unsafe_arena_release_result();

  private:
  const ::xla::LiteralProto& _internal_result() const;
  ::xla::LiteralProto* _internal_mutable_result();

  public:
  // @@protoc_insertion_point(class_scope:xla.HloSnapshot)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 3,
      42, 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 HloSnapshot& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::LiteralProto > arguments_;
    ::google::protobuf::internal::ArenaStringPtr execution_platform_;
    ::xla::HloProto* hlo_;
    ::xla::LiteralProto* result_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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




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


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

// HloInstructionProto_SliceDimensions

// int64 start = 1;
inline void HloInstructionProto_SliceDimensions::clear_start() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto_SliceDimensions::start() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.SliceDimensions.start)
  return _internal_start();
}
inline void HloInstructionProto_SliceDimensions::set_start(::int64_t value) {
  _internal_set_start(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.SliceDimensions.start)
}
inline ::int64_t HloInstructionProto_SliceDimensions::_internal_start() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_;
}
inline void HloInstructionProto_SliceDimensions::_internal_set_start(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_ = value;
}

// int64 limit = 2;
inline void HloInstructionProto_SliceDimensions::clear_limit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.limit_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto_SliceDimensions::limit() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.SliceDimensions.limit)
  return _internal_limit();
}
inline void HloInstructionProto_SliceDimensions::set_limit(::int64_t value) {
  _internal_set_limit(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.SliceDimensions.limit)
}
inline ::int64_t HloInstructionProto_SliceDimensions::_internal_limit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.limit_;
}
inline void HloInstructionProto_SliceDimensions::_internal_set_limit(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.limit_ = value;
}

// int64 stride = 3;
inline void HloInstructionProto_SliceDimensions::clear_stride() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stride_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto_SliceDimensions::stride() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.SliceDimensions.stride)
  return _internal_stride();
}
inline void HloInstructionProto_SliceDimensions::set_stride(::int64_t value) {
  _internal_set_stride(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.SliceDimensions.stride)
}
inline ::int64_t HloInstructionProto_SliceDimensions::_internal_stride() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stride_;
}
inline void HloInstructionProto_SliceDimensions::_internal_set_stride(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stride_ = value;
}

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

// HloInstructionProto

// string name = 1;
inline void HloInstructionProto::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.name)
}
inline std::string* HloInstructionProto::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.name)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void HloInstructionProto::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.name)
  return _impl_.name_.Release();
}
inline void HloInstructionProto::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.name)
}

// string opcode = 2;
inline void HloInstructionProto::clear_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opcode_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::opcode() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.opcode)
  return _internal_opcode();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_opcode(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opcode_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.opcode)
}
inline std::string* HloInstructionProto::mutable_opcode() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_opcode();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.opcode)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_opcode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.opcode_.Get();
}
inline void HloInstructionProto::_internal_set_opcode(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opcode_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.opcode_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.opcode)
  return _impl_.opcode_.Release();
}
inline void HloInstructionProto::set_allocated_opcode(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opcode_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.opcode_.IsDefault()) {
          _impl_.opcode_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.opcode)
}

// .xla.ShapeProto shape = 3;
inline bool HloInstructionProto::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& HloInstructionProto::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& HloInstructionProto::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.shape)
  return _internal_shape();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_shape(::xla::ShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.shape)
}
inline ::xla::ShapeProto* HloInstructionProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.shape_;
  _impl_.shape_ = 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::ShapeProto* HloInstructionProto::unsafe_arena_release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.shape)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* HloInstructionProto::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.shape_;
}
inline ::xla::ShapeProto* HloInstructionProto::mutable_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.shape)
  return _msg;
}
inline void HloInstructionProto::set_allocated_shape(::xla::ShapeProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }

  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_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.shape)
}

// .xla.OpMetadata metadata = 7;
inline bool HloInstructionProto::has_metadata() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.metadata_ != nullptr);
  return value;
}
inline const ::xla::OpMetadata& HloInstructionProto::_internal_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpMetadata* p = _impl_.metadata_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpMetadata&>(::xla::_OpMetadata_default_instance_);
}
inline const ::xla::OpMetadata& HloInstructionProto::metadata() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.metadata)
  return _internal_metadata();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_metadata(::xla::OpMetadata* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_);
  }
  _impl_.metadata_ = reinterpret_cast<::xla::OpMetadata*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.metadata)
}
inline ::xla::OpMetadata* HloInstructionProto::release_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OpMetadata* released = _impl_.metadata_;
  _impl_.metadata_ = 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::OpMetadata* HloInstructionProto::unsafe_arena_release_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.metadata)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OpMetadata* temp = _impl_.metadata_;
  _impl_.metadata_ = nullptr;
  return temp;
}
inline ::xla::OpMetadata* HloInstructionProto::_internal_mutable_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.metadata_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpMetadata>(GetArena());
    _impl_.metadata_ = reinterpret_cast<::xla::OpMetadata*>(p);
  }
  return _impl_.metadata_;
}
inline ::xla::OpMetadata* HloInstructionProto::mutable_metadata() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::OpMetadata* _msg = _internal_mutable_metadata();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.metadata)
  return _msg;
}
inline void HloInstructionProto::set_allocated_metadata(::xla::OpMetadata* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_);
  }

  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_.metadata_ = reinterpret_cast<::xla::OpMetadata*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.metadata)
}

// .xla.LiteralProto literal = 8;
inline bool HloInstructionProto::has_literal() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.literal_ != nullptr);
  return value;
}
inline const ::xla::LiteralProto& HloInstructionProto::_internal_literal() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::LiteralProto* p = _impl_.literal_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::LiteralProto&>(::xla::_LiteralProto_default_instance_);
}
inline const ::xla::LiteralProto& HloInstructionProto::literal() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.literal)
  return _internal_literal();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_literal(::xla::LiteralProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.literal_);
  }
  _impl_.literal_ = reinterpret_cast<::xla::LiteralProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.literal)
}
inline ::xla::LiteralProto* HloInstructionProto::release_literal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::LiteralProto* released = _impl_.literal_;
  _impl_.literal_ = 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::LiteralProto* HloInstructionProto::unsafe_arena_release_literal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.literal)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::LiteralProto* temp = _impl_.literal_;
  _impl_.literal_ = nullptr;
  return temp;
}
inline ::xla::LiteralProto* HloInstructionProto::_internal_mutable_literal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.literal_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::LiteralProto>(GetArena());
    _impl_.literal_ = reinterpret_cast<::xla::LiteralProto*>(p);
  }
  return _impl_.literal_;
}
inline ::xla::LiteralProto* HloInstructionProto::mutable_literal() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::LiteralProto* _msg = _internal_mutable_literal();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.literal)
  return _msg;
}
inline void HloInstructionProto::set_allocated_literal(::xla::LiteralProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.literal_);
  }

  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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.literal_ = reinterpret_cast<::xla::LiteralProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.literal)
}

// int64 parameter_number = 9;
inline void HloInstructionProto::clear_parameter_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::parameter_number() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.parameter_number)
  return _internal_parameter_number();
}
inline void HloInstructionProto::set_parameter_number(::int64_t value) {
  _internal_set_parameter_number(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.parameter_number)
}
inline ::int64_t HloInstructionProto::_internal_parameter_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_number_;
}
inline void HloInstructionProto::_internal_set_parameter_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = value;
}

// string fusion_kind = 11;
inline void HloInstructionProto::clear_fusion_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_kind_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::fusion_kind() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.fusion_kind)
  return _internal_fusion_kind();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_fusion_kind(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_kind_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.fusion_kind)
}
inline std::string* HloInstructionProto::mutable_fusion_kind() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_fusion_kind();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.fusion_kind)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_fusion_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fusion_kind_.Get();
}
inline void HloInstructionProto::_internal_set_fusion_kind(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_kind_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_fusion_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.fusion_kind_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_fusion_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.fusion_kind)
  return _impl_.fusion_kind_.Release();
}
inline void HloInstructionProto::set_allocated_fusion_kind(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fusion_kind_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.fusion_kind_.IsDefault()) {
          _impl_.fusion_kind_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.fusion_kind)
}

// int64 tuple_index = 13;
inline void HloInstructionProto::clear_tuple_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_index_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::tuple_index() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.tuple_index)
  return _internal_tuple_index();
}
inline void HloInstructionProto::set_tuple_index(::int64_t value) {
  _internal_set_tuple_index(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.tuple_index)
}
inline ::int64_t HloInstructionProto::_internal_tuple_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tuple_index_;
}
inline void HloInstructionProto::_internal_set_tuple_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_index_ = value;
}

// repeated int64 dimensions = 14;
inline int HloInstructionProto::_internal_dimensions_size() const {
  return _internal_dimensions().size();
}
inline int HloInstructionProto::dimensions_size() const {
  return _internal_dimensions_size();
}
inline void HloInstructionProto::clear_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimensions_.Clear();
}
inline ::int64_t HloInstructionProto::dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.dimensions)
  return _internal_dimensions().Get(index);
}
inline void HloInstructionProto::set_dimensions(int index, ::int64_t value) {
  _internal_mutable_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.dimensions)
}
inline void HloInstructionProto::add_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.dimensions)
  return _internal_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dimensions_;
}

// .xla.Window window = 15;
inline bool HloInstructionProto::has_window() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.window_ != nullptr);
  return value;
}
inline const ::xla::Window& HloInstructionProto::_internal_window() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::Window* p = _impl_.window_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::Window&>(::xla::_Window_default_instance_);
}
inline const ::xla::Window& HloInstructionProto::window() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.window)
  return _internal_window();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_window(::xla::Window* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.window_);
  }
  _impl_.window_ = reinterpret_cast<::xla::Window*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.window)
}
inline ::xla::Window* HloInstructionProto::release_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::Window* released = _impl_.window_;
  _impl_.window_ = 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::Window* HloInstructionProto::unsafe_arena_release_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.window)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::Window* temp = _impl_.window_;
  _impl_.window_ = nullptr;
  return temp;
}
inline ::xla::Window* HloInstructionProto::_internal_mutable_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.window_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::Window>(GetArena());
    _impl_.window_ = reinterpret_cast<::xla::Window*>(p);
  }
  return _impl_.window_;
}
inline ::xla::Window* HloInstructionProto::mutable_window() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::Window* _msg = _internal_mutable_window();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.window)
  return _msg;
}
inline void HloInstructionProto::set_allocated_window(::xla::Window* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.window_);
  }

  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] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }

  _impl_.window_ = reinterpret_cast<::xla::Window*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.window)
}

// .xla.ConvolutionDimensionNumbers convolution_dimension_numbers = 16;
inline bool HloInstructionProto::has_convolution_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.convolution_dimension_numbers_ != nullptr);
  return value;
}
inline const ::xla::ConvolutionDimensionNumbers& HloInstructionProto::_internal_convolution_dimension_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ConvolutionDimensionNumbers* p = _impl_.convolution_dimension_numbers_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ConvolutionDimensionNumbers&>(::xla::_ConvolutionDimensionNumbers_default_instance_);
}
inline const ::xla::ConvolutionDimensionNumbers& HloInstructionProto::convolution_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.convolution_dimension_numbers)
  return _internal_convolution_dimension_numbers();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.convolution_dimension_numbers_);
  }
  _impl_.convolution_dimension_numbers_ = reinterpret_cast<::xla::ConvolutionDimensionNumbers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.convolution_dimension_numbers)
}
inline ::xla::ConvolutionDimensionNumbers* HloInstructionProto::release_convolution_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::ConvolutionDimensionNumbers* released = _impl_.convolution_dimension_numbers_;
  _impl_.convolution_dimension_numbers_ = 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::ConvolutionDimensionNumbers* HloInstructionProto::unsafe_arena_release_convolution_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.convolution_dimension_numbers)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::ConvolutionDimensionNumbers* temp = _impl_.convolution_dimension_numbers_;
  _impl_.convolution_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::ConvolutionDimensionNumbers* HloInstructionProto::_internal_mutable_convolution_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.convolution_dimension_numbers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ConvolutionDimensionNumbers>(GetArena());
    _impl_.convolution_dimension_numbers_ = reinterpret_cast<::xla::ConvolutionDimensionNumbers*>(p);
  }
  return _impl_.convolution_dimension_numbers_;
}
inline ::xla::ConvolutionDimensionNumbers* HloInstructionProto::mutable_convolution_dimension_numbers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::ConvolutionDimensionNumbers* _msg = _internal_mutable_convolution_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.convolution_dimension_numbers)
  return _msg;
}
inline void HloInstructionProto::set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.convolution_dimension_numbers_);
  }

  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] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _impl_.convolution_dimension_numbers_ = reinterpret_cast<::xla::ConvolutionDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.convolution_dimension_numbers)
}

// int64 feature_group_count = 50;
inline void HloInstructionProto::clear_feature_group_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_group_count_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::feature_group_count() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.feature_group_count)
  return _internal_feature_group_count();
}
inline void HloInstructionProto::set_feature_group_count(::int64_t value) {
  _internal_set_feature_group_count(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.feature_group_count)
}
inline ::int64_t HloInstructionProto::_internal_feature_group_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_group_count_;
}
inline void HloInstructionProto::_internal_set_feature_group_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_group_count_ = value;
}

// int64 batch_group_count = 58;
inline void HloInstructionProto::clear_batch_group_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_group_count_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::batch_group_count() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.batch_group_count)
  return _internal_batch_group_count();
}
inline void HloInstructionProto::set_batch_group_count(::int64_t value) {
  _internal_set_batch_group_count(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.batch_group_count)
}
inline ::int64_t HloInstructionProto::_internal_batch_group_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.batch_group_count_;
}
inline void HloInstructionProto::_internal_set_batch_group_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_group_count_ = value;
}

// repeated .xla.HloInstructionProto.SliceDimensions slice_dimensions = 17;
inline int HloInstructionProto::_internal_slice_dimensions_size() const {
  return _internal_slice_dimensions().size();
}
inline int HloInstructionProto::slice_dimensions_size() const {
  return _internal_slice_dimensions_size();
}
inline void HloInstructionProto::clear_slice_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.slice_dimensions_.Clear();
}
inline ::xla::HloInstructionProto_SliceDimensions* HloInstructionProto::mutable_slice_dimensions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.slice_dimensions)
  return _internal_mutable_slice_dimensions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>* HloInstructionProto::mutable_slice_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.slice_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_slice_dimensions();
}
inline const ::xla::HloInstructionProto_SliceDimensions& HloInstructionProto::slice_dimensions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.slice_dimensions)
  return _internal_slice_dimensions().Get(index);
}
inline ::xla::HloInstructionProto_SliceDimensions* HloInstructionProto::add_slice_dimensions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloInstructionProto_SliceDimensions* _add = _internal_mutable_slice_dimensions()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.slice_dimensions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>& HloInstructionProto::slice_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.slice_dimensions)
  return _internal_slice_dimensions();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>&
HloInstructionProto::_internal_slice_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.slice_dimensions_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>*
HloInstructionProto::_internal_mutable_slice_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.slice_dimensions_;
}

// int32 exponent_bits = 18;
inline void HloInstructionProto::clear_exponent_bits() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exponent_bits_ = 0;
}
inline ::int32_t HloInstructionProto::exponent_bits() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.exponent_bits)
  return _internal_exponent_bits();
}
inline void HloInstructionProto::set_exponent_bits(::int32_t value) {
  _internal_set_exponent_bits(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.exponent_bits)
}
inline ::int32_t HloInstructionProto::_internal_exponent_bits() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.exponent_bits_;
}
inline void HloInstructionProto::_internal_set_exponent_bits(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exponent_bits_ = value;
}

// int32 mantissa_bits = 19;
inline void HloInstructionProto::clear_mantissa_bits() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mantissa_bits_ = 0;
}
inline ::int32_t HloInstructionProto::mantissa_bits() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.mantissa_bits)
  return _internal_mantissa_bits();
}
inline void HloInstructionProto::set_mantissa_bits(::int32_t value) {
  _internal_set_mantissa_bits(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.mantissa_bits)
}
inline ::int32_t HloInstructionProto::_internal_mantissa_bits() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mantissa_bits_;
}
inline void HloInstructionProto::_internal_set_mantissa_bits(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mantissa_bits_ = value;
}

// repeated int64 dynamic_slice_sizes = 20;
inline int HloInstructionProto::_internal_dynamic_slice_sizes_size() const {
  return _internal_dynamic_slice_sizes().size();
}
inline int HloInstructionProto::dynamic_slice_sizes_size() const {
  return _internal_dynamic_slice_sizes_size();
}
inline void HloInstructionProto::clear_dynamic_slice_sizes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dynamic_slice_sizes_.Clear();
}
inline ::int64_t HloInstructionProto::dynamic_slice_sizes(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.dynamic_slice_sizes)
  return _internal_dynamic_slice_sizes().Get(index);
}
inline void HloInstructionProto::set_dynamic_slice_sizes(int index, ::int64_t value) {
  _internal_mutable_dynamic_slice_sizes()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.dynamic_slice_sizes)
}
inline void HloInstructionProto::add_dynamic_slice_sizes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dynamic_slice_sizes()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.dynamic_slice_sizes)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::dynamic_slice_sizes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.dynamic_slice_sizes)
  return _internal_dynamic_slice_sizes();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_dynamic_slice_sizes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.dynamic_slice_sizes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dynamic_slice_sizes();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_dynamic_slice_sizes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dynamic_slice_sizes_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_dynamic_slice_sizes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dynamic_slice_sizes_;
}

// .xla.PaddingConfig padding_config = 21;
inline bool HloInstructionProto::has_padding_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.padding_config_ != nullptr);
  return value;
}
inline const ::xla::PaddingConfig& HloInstructionProto::_internal_padding_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::PaddingConfig* p = _impl_.padding_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::PaddingConfig&>(::xla::_PaddingConfig_default_instance_);
}
inline const ::xla::PaddingConfig& HloInstructionProto::padding_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.padding_config)
  return _internal_padding_config();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_padding_config(::xla::PaddingConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.padding_config_);
  }
  _impl_.padding_config_ = reinterpret_cast<::xla::PaddingConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.padding_config)
}
inline ::xla::PaddingConfig* HloInstructionProto::release_padding_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::PaddingConfig* released = _impl_.padding_config_;
  _impl_.padding_config_ = 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::PaddingConfig* HloInstructionProto::unsafe_arena_release_padding_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.padding_config)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::PaddingConfig* temp = _impl_.padding_config_;
  _impl_.padding_config_ = nullptr;
  return temp;
}
inline ::xla::PaddingConfig* HloInstructionProto::_internal_mutable_padding_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.padding_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::PaddingConfig>(GetArena());
    _impl_.padding_config_ = reinterpret_cast<::xla::PaddingConfig*>(p);
  }
  return _impl_.padding_config_;
}
inline ::xla::PaddingConfig* HloInstructionProto::mutable_padding_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::PaddingConfig* _msg = _internal_mutable_padding_config();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.padding_config)
  return _msg;
}
inline void HloInstructionProto::set_allocated_padding_config(::xla::PaddingConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.padding_config_);
  }

  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] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }

  _impl_.padding_config_ = reinterpret_cast<::xla::PaddingConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.padding_config)
}

// bytes outfeed_config = 22;
inline void HloInstructionProto::clear_outfeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outfeed_config_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::outfeed_config() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.outfeed_config)
  return _internal_outfeed_config();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_outfeed_config(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outfeed_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.outfeed_config)
}
inline std::string* HloInstructionProto::mutable_outfeed_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_outfeed_config();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.outfeed_config)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_outfeed_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.outfeed_config_.Get();
}
inline void HloInstructionProto::_internal_set_outfeed_config(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outfeed_config_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_outfeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.outfeed_config_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_outfeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.outfeed_config)
  return _impl_.outfeed_config_.Release();
}
inline void HloInstructionProto::set_allocated_outfeed_config(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outfeed_config_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.outfeed_config_.IsDefault()) {
          _impl_.outfeed_config_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.outfeed_config)
}

// .xla.RandomDistribution distribution = 23;
inline void HloInstructionProto::clear_distribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.distribution_ = 0;
}
inline ::xla::RandomDistribution HloInstructionProto::distribution() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.distribution)
  return _internal_distribution();
}
inline void HloInstructionProto::set_distribution(::xla::RandomDistribution value) {
  _internal_set_distribution(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.distribution)
}
inline ::xla::RandomDistribution HloInstructionProto::_internal_distribution() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::RandomDistribution>(_impl_.distribution_);
}
inline void HloInstructionProto::_internal_set_distribution(::xla::RandomDistribution value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.distribution_ = value;
}

// float epsilon = 24;
inline void HloInstructionProto::clear_epsilon() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epsilon_ = 0;
}
inline float HloInstructionProto::epsilon() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.epsilon)
  return _internal_epsilon();
}
inline void HloInstructionProto::set_epsilon(float value) {
  _internal_set_epsilon(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.epsilon)
}
inline float HloInstructionProto::_internal_epsilon() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.epsilon_;
}
inline void HloInstructionProto::_internal_set_epsilon(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epsilon_ = value;
}

// int64 feature_index = 25;
inline void HloInstructionProto::clear_feature_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_index_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::feature_index() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.feature_index)
  return _internal_feature_index();
}
inline void HloInstructionProto::set_feature_index(::int64_t value) {
  _internal_set_feature_index(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.feature_index)
}
inline ::int64_t HloInstructionProto::_internal_feature_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_index_;
}
inline void HloInstructionProto::_internal_set_feature_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_index_ = value;
}

// int64 channel_id = 26;
inline void HloInstructionProto::clear_channel_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::channel_id() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.channel_id)
  return _internal_channel_id();
}
inline void HloInstructionProto::set_channel_id(::int64_t value) {
  _internal_set_channel_id(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.channel_id)
}
inline ::int64_t HloInstructionProto::_internal_channel_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.channel_id_;
}
inline void HloInstructionProto::_internal_set_channel_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = value;
}

// bytes infeed_config = 27;
inline void HloInstructionProto::clear_infeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.infeed_config_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::infeed_config() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.infeed_config)
  return _internal_infeed_config();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_infeed_config(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.infeed_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.infeed_config)
}
inline std::string* HloInstructionProto::mutable_infeed_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_infeed_config();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.infeed_config)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_infeed_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.infeed_config_.Get();
}
inline void HloInstructionProto::_internal_set_infeed_config(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.infeed_config_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_infeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.infeed_config_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_infeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.infeed_config)
  return _impl_.infeed_config_.Release();
}
inline void HloInstructionProto::set_allocated_infeed_config(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.infeed_config_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.infeed_config_.IsDefault()) {
          _impl_.infeed_config_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.infeed_config)
}

// string custom_call_target = 28;
inline void HloInstructionProto::clear_custom_call_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_target_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::custom_call_target() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.custom_call_target)
  return _internal_custom_call_target();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_custom_call_target(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_target_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.custom_call_target)
}
inline std::string* HloInstructionProto::mutable_custom_call_target() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_custom_call_target();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.custom_call_target)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_custom_call_target() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.custom_call_target_.Get();
}
inline void HloInstructionProto::_internal_set_custom_call_target(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_target_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_custom_call_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.custom_call_target_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_custom_call_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.custom_call_target)
  return _impl_.custom_call_target_.Release();
}
inline void HloInstructionProto::set_allocated_custom_call_target(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_target_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.custom_call_target_.IsDefault()) {
          _impl_.custom_call_target_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.custom_call_target)
}

// .xla.ShapeProto outfeed_shape = 29;
inline bool HloInstructionProto::has_outfeed_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.outfeed_shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& HloInstructionProto::_internal_outfeed_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.outfeed_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& HloInstructionProto::outfeed_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.outfeed_shape)
  return _internal_outfeed_shape();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_outfeed_shape(::xla::ShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outfeed_shape_);
  }
  _impl_.outfeed_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.outfeed_shape)
}
inline ::xla::ShapeProto* HloInstructionProto::release_outfeed_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::ShapeProto* released = _impl_.outfeed_shape_;
  _impl_.outfeed_shape_ = 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::ShapeProto* HloInstructionProto::unsafe_arena_release_outfeed_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.outfeed_shape)

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::ShapeProto* temp = _impl_.outfeed_shape_;
  _impl_.outfeed_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* HloInstructionProto::_internal_mutable_outfeed_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.outfeed_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.outfeed_shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.outfeed_shape_;
}
inline ::xla::ShapeProto* HloInstructionProto::mutable_outfeed_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::xla::ShapeProto* _msg = _internal_mutable_outfeed_shape();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.outfeed_shape)
  return _msg;
}
inline void HloInstructionProto::set_allocated_outfeed_shape(::xla::ShapeProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outfeed_shape_);
  }

  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] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }

  _impl_.outfeed_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.outfeed_shape)
}

// .xla.DotDimensionNumbers dot_dimension_numbers = 30;
inline bool HloInstructionProto::has_dot_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dot_dimension_numbers_ != nullptr);
  return value;
}
inline const ::xla::DotDimensionNumbers& HloInstructionProto::_internal_dot_dimension_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::DotDimensionNumbers* p = _impl_.dot_dimension_numbers_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::DotDimensionNumbers&>(::xla::_DotDimensionNumbers_default_instance_);
}
inline const ::xla::DotDimensionNumbers& HloInstructionProto::dot_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.dot_dimension_numbers)
  return _internal_dot_dimension_numbers();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dot_dimension_numbers_);
  }
  _impl_.dot_dimension_numbers_ = reinterpret_cast<::xla::DotDimensionNumbers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.dot_dimension_numbers)
}
inline ::xla::DotDimensionNumbers* HloInstructionProto::release_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::DotDimensionNumbers* released = _impl_.dot_dimension_numbers_;
  _impl_.dot_dimension_numbers_ = 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::DotDimensionNumbers* HloInstructionProto::unsafe_arena_release_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.dot_dimension_numbers)

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::DotDimensionNumbers* temp = _impl_.dot_dimension_numbers_;
  _impl_.dot_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::DotDimensionNumbers* HloInstructionProto::_internal_mutable_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dot_dimension_numbers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::DotDimensionNumbers>(GetArena());
    _impl_.dot_dimension_numbers_ = reinterpret_cast<::xla::DotDimensionNumbers*>(p);
  }
  return _impl_.dot_dimension_numbers_;
}
inline ::xla::DotDimensionNumbers* HloInstructionProto::mutable_dot_dimension_numbers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000080u;
  ::xla::DotDimensionNumbers* _msg = _internal_mutable_dot_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.dot_dimension_numbers)
  return _msg;
}
inline void HloInstructionProto::set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dot_dimension_numbers_);
  }

  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] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }

  _impl_.dot_dimension_numbers_ = reinterpret_cast<::xla::DotDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.dot_dimension_numbers)
}

// .xla.RaggedDotDimensionNumbers ragged_dot_dimension_numbers = 90;
inline bool HloInstructionProto::has_ragged_dot_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00200000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.ragged_dot_dimension_numbers_ != nullptr);
  return value;
}
inline const ::xla::RaggedDotDimensionNumbers& HloInstructionProto::_internal_ragged_dot_dimension_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::RaggedDotDimensionNumbers* p = _impl_.ragged_dot_dimension_numbers_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::RaggedDotDimensionNumbers&>(::xla::_RaggedDotDimensionNumbers_default_instance_);
}
inline const ::xla::RaggedDotDimensionNumbers& HloInstructionProto::ragged_dot_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.ragged_dot_dimension_numbers)
  return _internal_ragged_dot_dimension_numbers();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ragged_dot_dimension_numbers_);
  }
  _impl_.ragged_dot_dimension_numbers_ = reinterpret_cast<::xla::RaggedDotDimensionNumbers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00200000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00200000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.ragged_dot_dimension_numbers)
}
inline ::xla::RaggedDotDimensionNumbers* HloInstructionProto::release_ragged_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00200000u;
  ::xla::RaggedDotDimensionNumbers* released = _impl_.ragged_dot_dimension_numbers_;
  _impl_.ragged_dot_dimension_numbers_ = 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::RaggedDotDimensionNumbers* HloInstructionProto::unsafe_arena_release_ragged_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.ragged_dot_dimension_numbers)

  _impl_._has_bits_[0] &= ~0x00200000u;
  ::xla::RaggedDotDimensionNumbers* temp = _impl_.ragged_dot_dimension_numbers_;
  _impl_.ragged_dot_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::RaggedDotDimensionNumbers* HloInstructionProto::_internal_mutable_ragged_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.ragged_dot_dimension_numbers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::RaggedDotDimensionNumbers>(GetArena());
    _impl_.ragged_dot_dimension_numbers_ = reinterpret_cast<::xla::RaggedDotDimensionNumbers*>(p);
  }
  return _impl_.ragged_dot_dimension_numbers_;
}
inline ::xla::RaggedDotDimensionNumbers* HloInstructionProto::mutable_ragged_dot_dimension_numbers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00200000u;
  ::xla::RaggedDotDimensionNumbers* _msg = _internal_mutable_ragged_dot_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.ragged_dot_dimension_numbers)
  return _msg;
}
inline void HloInstructionProto::set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ragged_dot_dimension_numbers_);
  }

  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] |= 0x00200000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00200000u;
  }

  _impl_.ragged_dot_dimension_numbers_ = reinterpret_cast<::xla::RaggedDotDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.ragged_dot_dimension_numbers)
}

// .xla.FftType fft_type = 31;
inline void HloInstructionProto::clear_fft_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_type_ = 0;
}
inline ::xla::FftType HloInstructionProto::fft_type() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.fft_type)
  return _internal_fft_type();
}
inline void HloInstructionProto::set_fft_type(::xla::FftType value) {
  _internal_set_fft_type(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.fft_type)
}
inline ::xla::FftType HloInstructionProto::_internal_fft_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::FftType>(_impl_.fft_type_);
}
inline void HloInstructionProto::_internal_set_fft_type(::xla::FftType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_type_ = value;
}

// repeated int64 fft_length = 32;
inline int HloInstructionProto::_internal_fft_length_size() const {
  return _internal_fft_length().size();
}
inline int HloInstructionProto::fft_length_size() const {
  return _internal_fft_length_size();
}
inline void HloInstructionProto::clear_fft_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_length_.Clear();
}
inline ::int64_t HloInstructionProto::fft_length(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.fft_length)
  return _internal_fft_length().Get(index);
}
inline void HloInstructionProto::set_fft_length(int index, ::int64_t value) {
  _internal_mutable_fft_length()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.fft_length)
}
inline void HloInstructionProto::add_fft_length(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_fft_length()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.fft_length)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::fft_length() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.fft_length)
  return _internal_fft_length();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_fft_length()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.fft_length)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_fft_length();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_fft_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fft_length_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_fft_length() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.fft_length_;
}

// string comparison_direction = 63;
inline void HloInstructionProto::clear_comparison_direction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_direction_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::comparison_direction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.comparison_direction)
  return _internal_comparison_direction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_comparison_direction(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_direction_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.comparison_direction)
}
inline std::string* HloInstructionProto::mutable_comparison_direction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_comparison_direction();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.comparison_direction)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_comparison_direction() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.comparison_direction_.Get();
}
inline void HloInstructionProto::_internal_set_comparison_direction(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_direction_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_comparison_direction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.comparison_direction_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_comparison_direction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.comparison_direction)
  return _impl_.comparison_direction_.Release();
}
inline void HloInstructionProto::set_allocated_comparison_direction(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_direction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.comparison_direction_.IsDefault()) {
          _impl_.comparison_direction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.comparison_direction)
}

// .xla.GatherDimensionNumbers gather_dimension_numbers = 33;
inline bool HloInstructionProto::has_gather_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.gather_dimension_numbers_ != nullptr);
  return value;
}
inline const ::xla::GatherDimensionNumbers& HloInstructionProto::_internal_gather_dimension_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::GatherDimensionNumbers* p = _impl_.gather_dimension_numbers_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::GatherDimensionNumbers&>(::xla::_GatherDimensionNumbers_default_instance_);
}
inline const ::xla::GatherDimensionNumbers& HloInstructionProto::gather_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.gather_dimension_numbers)
  return _internal_gather_dimension_numbers();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gather_dimension_numbers_);
  }
  _impl_.gather_dimension_numbers_ = reinterpret_cast<::xla::GatherDimensionNumbers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.gather_dimension_numbers)
}
inline ::xla::GatherDimensionNumbers* HloInstructionProto::release_gather_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::GatherDimensionNumbers* released = _impl_.gather_dimension_numbers_;
  _impl_.gather_dimension_numbers_ = 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::GatherDimensionNumbers* HloInstructionProto::unsafe_arena_release_gather_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.gather_dimension_numbers)

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::GatherDimensionNumbers* temp = _impl_.gather_dimension_numbers_;
  _impl_.gather_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::GatherDimensionNumbers* HloInstructionProto::_internal_mutable_gather_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.gather_dimension_numbers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::GatherDimensionNumbers>(GetArena());
    _impl_.gather_dimension_numbers_ = reinterpret_cast<::xla::GatherDimensionNumbers*>(p);
  }
  return _impl_.gather_dimension_numbers_;
}
inline ::xla::GatherDimensionNumbers* HloInstructionProto::mutable_gather_dimension_numbers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000100u;
  ::xla::GatherDimensionNumbers* _msg = _internal_mutable_gather_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.gather_dimension_numbers)
  return _msg;
}
inline void HloInstructionProto::set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gather_dimension_numbers_);
  }

  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] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }

  _impl_.gather_dimension_numbers_ = reinterpret_cast<::xla::GatherDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.gather_dimension_numbers)
}

// repeated int64 gather_slice_sizes = 34;
inline int HloInstructionProto::_internal_gather_slice_sizes_size() const {
  return _internal_gather_slice_sizes().size();
}
inline int HloInstructionProto::gather_slice_sizes_size() const {
  return _internal_gather_slice_sizes_size();
}
inline void HloInstructionProto::clear_gather_slice_sizes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.gather_slice_sizes_.Clear();
}
inline ::int64_t HloInstructionProto::gather_slice_sizes(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.gather_slice_sizes)
  return _internal_gather_slice_sizes().Get(index);
}
inline void HloInstructionProto::set_gather_slice_sizes(int index, ::int64_t value) {
  _internal_mutable_gather_slice_sizes()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.gather_slice_sizes)
}
inline void HloInstructionProto::add_gather_slice_sizes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_gather_slice_sizes()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.gather_slice_sizes)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::gather_slice_sizes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.gather_slice_sizes)
  return _internal_gather_slice_sizes();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_gather_slice_sizes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.gather_slice_sizes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_gather_slice_sizes();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_gather_slice_sizes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.gather_slice_sizes_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_gather_slice_sizes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.gather_slice_sizes_;
}

// int64 id = 35;
inline void HloInstructionProto::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::id() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.id)
  return _internal_id();
}
inline void HloInstructionProto::set_id(::int64_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.id)
}
inline ::int64_t HloInstructionProto::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void HloInstructionProto::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// repeated int64 operand_ids = 36;
inline int HloInstructionProto::_internal_operand_ids_size() const {
  return _internal_operand_ids().size();
}
inline int HloInstructionProto::operand_ids_size() const {
  return _internal_operand_ids_size();
}
inline void HloInstructionProto::clear_operand_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_ids_.Clear();
}
inline ::int64_t HloInstructionProto::operand_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.operand_ids)
  return _internal_operand_ids().Get(index);
}
inline void HloInstructionProto::set_operand_ids(int index, ::int64_t value) {
  _internal_mutable_operand_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.operand_ids)
}
inline void HloInstructionProto::add_operand_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_operand_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.operand_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::operand_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.operand_ids)
  return _internal_operand_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_operand_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.operand_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_operand_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_operand_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_ids_;
}

// repeated int64 control_predecessor_ids = 37;
inline int HloInstructionProto::_internal_control_predecessor_ids_size() const {
  return _internal_control_predecessor_ids().size();
}
inline int HloInstructionProto::control_predecessor_ids_size() const {
  return _internal_control_predecessor_ids_size();
}
inline void HloInstructionProto::clear_control_predecessor_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.control_predecessor_ids_.Clear();
}
inline ::int64_t HloInstructionProto::control_predecessor_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.control_predecessor_ids)
  return _internal_control_predecessor_ids().Get(index);
}
inline void HloInstructionProto::set_control_predecessor_ids(int index, ::int64_t value) {
  _internal_mutable_control_predecessor_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.control_predecessor_ids)
}
inline void HloInstructionProto::add_control_predecessor_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_control_predecessor_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.control_predecessor_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::control_predecessor_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.control_predecessor_ids)
  return _internal_control_predecessor_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_control_predecessor_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.control_predecessor_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_control_predecessor_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_control_predecessor_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.control_predecessor_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_control_predecessor_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.control_predecessor_ids_;
}

// repeated int64 called_computation_ids = 38;
inline int HloInstructionProto::_internal_called_computation_ids_size() const {
  return _internal_called_computation_ids().size();
}
inline int HloInstructionProto::called_computation_ids_size() const {
  return _internal_called_computation_ids_size();
}
inline void HloInstructionProto::clear_called_computation_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.called_computation_ids_.Clear();
}
inline ::int64_t HloInstructionProto::called_computation_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.called_computation_ids)
  return _internal_called_computation_ids().Get(index);
}
inline void HloInstructionProto::set_called_computation_ids(int index, ::int64_t value) {
  _internal_mutable_called_computation_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.called_computation_ids)
}
inline void HloInstructionProto::add_called_computation_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_called_computation_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.called_computation_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInstructionProto::called_computation_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.called_computation_ids)
  return _internal_called_computation_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::mutable_called_computation_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.called_computation_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_called_computation_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInstructionProto::_internal_called_computation_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.called_computation_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInstructionProto::_internal_mutable_called_computation_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.called_computation_ids_;
}

// .xla.OpSharding sharding = 40;
inline bool HloInstructionProto::has_sharding() const {
  bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.sharding_ != nullptr);
  return value;
}
inline const ::xla::OpSharding& HloInstructionProto::_internal_sharding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpSharding* p = _impl_.sharding_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpSharding&>(::xla::_OpSharding_default_instance_);
}
inline const ::xla::OpSharding& HloInstructionProto::sharding() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.sharding)
  return _internal_sharding();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_sharding(::xla::OpSharding* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sharding_);
  }
  _impl_.sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.sharding)
}
inline ::xla::OpSharding* HloInstructionProto::release_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::OpSharding* released = _impl_.sharding_;
  _impl_.sharding_ = 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::OpSharding* HloInstructionProto::unsafe_arena_release_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.sharding)

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::OpSharding* temp = _impl_.sharding_;
  _impl_.sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* HloInstructionProto::_internal_mutable_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sharding_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpSharding>(GetArena());
    _impl_.sharding_ = reinterpret_cast<::xla::OpSharding*>(p);
  }
  return _impl_.sharding_;
}
inline ::xla::OpSharding* HloInstructionProto::mutable_sharding() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000200u;
  ::xla::OpSharding* _msg = _internal_mutable_sharding();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.sharding)
  return _msg;
}
inline void HloInstructionProto::set_allocated_sharding(::xla::OpSharding* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sharding_);
  }

  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] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }

  _impl_.sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.sharding)
}

// bytes backend_config = 43;
inline void HloInstructionProto::clear_backend_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backend_config_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::backend_config() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.backend_config)
  return _internal_backend_config();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_backend_config(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backend_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.backend_config)
}
inline std::string* HloInstructionProto::mutable_backend_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_backend_config();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.backend_config)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_backend_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.backend_config_.Get();
}
inline void HloInstructionProto::_internal_set_backend_config(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backend_config_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_backend_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.backend_config_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_backend_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.backend_config)
  return _impl_.backend_config_.Release();
}
inline void HloInstructionProto::set_allocated_backend_config(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backend_config_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.backend_config_.IsDefault()) {
          _impl_.backend_config_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.backend_config)
}

// repeated .xla.ReplicaGroup replica_groups = 49 [deprecated = true];
inline int HloInstructionProto::_internal_replica_groups_size() const {
  return _internal_replica_groups().size();
}
inline int HloInstructionProto::replica_groups_size() const {
  return _internal_replica_groups_size();
}
inline ::xla::ReplicaGroup* HloInstructionProto::mutable_replica_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.replica_groups)
  return _internal_mutable_replica_groups()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* HloInstructionProto::mutable_replica_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.replica_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replica_groups();
}
inline const ::xla::ReplicaGroup& HloInstructionProto::replica_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.replica_groups)
  return _internal_replica_groups().Get(index);
}
inline ::xla::ReplicaGroup* HloInstructionProto::add_replica_groups() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ReplicaGroup* _add = _internal_mutable_replica_groups()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.replica_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& HloInstructionProto::replica_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.replica_groups)
  return _internal_replica_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>&
HloInstructionProto::_internal_replica_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>*
HloInstructionProto::_internal_mutable_replica_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_groups_;
}

// int64 all_reduce_id = 45 [deprecated = true];
inline void HloInstructionProto::clear_all_reduce_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.all_reduce_id_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::all_reduce_id() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.all_reduce_id)
  return _internal_all_reduce_id();
}
inline void HloInstructionProto::set_all_reduce_id(::int64_t value) {
  _internal_set_all_reduce_id(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.all_reduce_id)
}
inline ::int64_t HloInstructionProto::_internal_all_reduce_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.all_reduce_id_;
}
inline void HloInstructionProto::_internal_set_all_reduce_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.all_reduce_id_ = value;
}

// bool use_global_device_ids = 71;
inline void HloInstructionProto::clear_use_global_device_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_global_device_ids_ = false;
}
inline bool HloInstructionProto::use_global_device_ids() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.use_global_device_ids)
  return _internal_use_global_device_ids();
}
inline void HloInstructionProto::set_use_global_device_ids(bool value) {
  _internal_set_use_global_device_ids(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.use_global_device_ids)
}
inline bool HloInstructionProto::_internal_use_global_device_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_global_device_ids_;
}
inline void HloInstructionProto::_internal_set_use_global_device_ids(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_global_device_ids_ = value;
}

// bool is_host_transfer = 47;
inline void HloInstructionProto::clear_is_host_transfer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_host_transfer_ = false;
}
inline bool HloInstructionProto::is_host_transfer() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_host_transfer)
  return _internal_is_host_transfer();
}
inline void HloInstructionProto::set_is_host_transfer(bool value) {
  _internal_set_is_host_transfer(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_host_transfer)
}
inline bool HloInstructionProto::_internal_is_host_transfer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_host_transfer_;
}
inline void HloInstructionProto::_internal_set_is_host_transfer(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_host_transfer_ = value;
}

// bool is_stable = 60;
inline void HloInstructionProto::clear_is_stable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_stable_ = false;
}
inline bool HloInstructionProto::is_stable() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_stable)
  return _internal_is_stable();
}
inline void HloInstructionProto::set_is_stable(bool value) {
  _internal_set_is_stable(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_stable)
}
inline bool HloInstructionProto::_internal_is_stable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_stable_;
}
inline void HloInstructionProto::_internal_set_is_stable(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_stable_ = value;
}

// .xla.ScatterDimensionNumbers scatter_dimension_numbers = 48;
inline bool HloInstructionProto::has_scatter_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.scatter_dimension_numbers_ != nullptr);
  return value;
}
inline const ::xla::ScatterDimensionNumbers& HloInstructionProto::_internal_scatter_dimension_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ScatterDimensionNumbers* p = _impl_.scatter_dimension_numbers_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ScatterDimensionNumbers&>(::xla::_ScatterDimensionNumbers_default_instance_);
}
inline const ::xla::ScatterDimensionNumbers& HloInstructionProto::scatter_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.scatter_dimension_numbers)
  return _internal_scatter_dimension_numbers();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scatter_dimension_numbers_);
  }
  _impl_.scatter_dimension_numbers_ = reinterpret_cast<::xla::ScatterDimensionNumbers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.scatter_dimension_numbers)
}
inline ::xla::ScatterDimensionNumbers* HloInstructionProto::release_scatter_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::ScatterDimensionNumbers* released = _impl_.scatter_dimension_numbers_;
  _impl_.scatter_dimension_numbers_ = 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::ScatterDimensionNumbers* HloInstructionProto::unsafe_arena_release_scatter_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.scatter_dimension_numbers)

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::ScatterDimensionNumbers* temp = _impl_.scatter_dimension_numbers_;
  _impl_.scatter_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::ScatterDimensionNumbers* HloInstructionProto::_internal_mutable_scatter_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.scatter_dimension_numbers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ScatterDimensionNumbers>(GetArena());
    _impl_.scatter_dimension_numbers_ = reinterpret_cast<::xla::ScatterDimensionNumbers*>(p);
  }
  return _impl_.scatter_dimension_numbers_;
}
inline ::xla::ScatterDimensionNumbers* HloInstructionProto::mutable_scatter_dimension_numbers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000400u;
  ::xla::ScatterDimensionNumbers* _msg = _internal_mutable_scatter_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.scatter_dimension_numbers)
  return _msg;
}
inline void HloInstructionProto::set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scatter_dimension_numbers_);
  }

  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] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }

  _impl_.scatter_dimension_numbers_ = reinterpret_cast<::xla::ScatterDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.scatter_dimension_numbers)
}

// .xla.PrecisionConfig precision_config = 51;
inline bool HloInstructionProto::has_precision_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000800u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.precision_config_ != nullptr);
  return value;
}
inline const ::xla::PrecisionConfig& HloInstructionProto::_internal_precision_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::PrecisionConfig* p = _impl_.precision_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::PrecisionConfig&>(::xla::_PrecisionConfig_default_instance_);
}
inline const ::xla::PrecisionConfig& HloInstructionProto::precision_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.precision_config)
  return _internal_precision_config();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_precision_config(::xla::PrecisionConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.precision_config_);
  }
  _impl_.precision_config_ = reinterpret_cast<::xla::PrecisionConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000800u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000800u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.precision_config)
}
inline ::xla::PrecisionConfig* HloInstructionProto::release_precision_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::PrecisionConfig* released = _impl_.precision_config_;
  _impl_.precision_config_ = 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::PrecisionConfig* HloInstructionProto::unsafe_arena_release_precision_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.precision_config)

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::PrecisionConfig* temp = _impl_.precision_config_;
  _impl_.precision_config_ = nullptr;
  return temp;
}
inline ::xla::PrecisionConfig* HloInstructionProto::_internal_mutable_precision_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.precision_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::PrecisionConfig>(GetArena());
    _impl_.precision_config_ = reinterpret_cast<::xla::PrecisionConfig*>(p);
  }
  return _impl_.precision_config_;
}
inline ::xla::PrecisionConfig* HloInstructionProto::mutable_precision_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000800u;
  ::xla::PrecisionConfig* _msg = _internal_mutable_precision_config();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.precision_config)
  return _msg;
}
inline void HloInstructionProto::set_allocated_precision_config(::xla::PrecisionConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.precision_config_);
  }

  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] |= 0x00000800u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000800u;
  }

  _impl_.precision_config_ = reinterpret_cast<::xla::PrecisionConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.precision_config)
}

// repeated .xla.SourceTarget source_target_pairs = 52;
inline int HloInstructionProto::_internal_source_target_pairs_size() const {
  return _internal_source_target_pairs().size();
}
inline int HloInstructionProto::source_target_pairs_size() const {
  return _internal_source_target_pairs_size();
}
inline ::xla::SourceTarget* HloInstructionProto::mutable_source_target_pairs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.source_target_pairs)
  return _internal_mutable_source_target_pairs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* HloInstructionProto::mutable_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.source_target_pairs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_source_target_pairs();
}
inline const ::xla::SourceTarget& HloInstructionProto::source_target_pairs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.source_target_pairs)
  return _internal_source_target_pairs().Get(index);
}
inline ::xla::SourceTarget* HloInstructionProto::add_source_target_pairs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SourceTarget* _add = _internal_mutable_source_target_pairs()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.source_target_pairs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& HloInstructionProto::source_target_pairs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.source_target_pairs)
  return _internal_source_target_pairs();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>&
HloInstructionProto::_internal_source_target_pairs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_target_pairs_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>*
HloInstructionProto::_internal_mutable_source_target_pairs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.source_target_pairs_;
}

// .xla.OpSharding domain_entry_sharding = 54;
inline bool HloInstructionProto::has_domain_entry_sharding() const {
  bool value = (_impl_._has_bits_[0] & 0x00001000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.domain_entry_sharding_ != nullptr);
  return value;
}
inline const ::xla::OpSharding& HloInstructionProto::_internal_domain_entry_sharding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpSharding* p = _impl_.domain_entry_sharding_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpSharding&>(::xla::_OpSharding_default_instance_);
}
inline const ::xla::OpSharding& HloInstructionProto::domain_entry_sharding() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.domain_entry_sharding)
  return _internal_domain_entry_sharding();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_domain_entry_sharding(::xla::OpSharding* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_entry_sharding_);
  }
  _impl_.domain_entry_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00001000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00001000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.domain_entry_sharding)
}
inline ::xla::OpSharding* HloInstructionProto::release_domain_entry_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::OpSharding* released = _impl_.domain_entry_sharding_;
  _impl_.domain_entry_sharding_ = 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::OpSharding* HloInstructionProto::unsafe_arena_release_domain_entry_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.domain_entry_sharding)

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::OpSharding* temp = _impl_.domain_entry_sharding_;
  _impl_.domain_entry_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* HloInstructionProto::_internal_mutable_domain_entry_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.domain_entry_sharding_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpSharding>(GetArena());
    _impl_.domain_entry_sharding_ = reinterpret_cast<::xla::OpSharding*>(p);
  }
  return _impl_.domain_entry_sharding_;
}
inline ::xla::OpSharding* HloInstructionProto::mutable_domain_entry_sharding() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00001000u;
  ::xla::OpSharding* _msg = _internal_mutable_domain_entry_sharding();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.domain_entry_sharding)
  return _msg;
}
inline void HloInstructionProto::set_allocated_domain_entry_sharding(::xla::OpSharding* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_entry_sharding_);
  }

  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] |= 0x00001000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00001000u;
  }

  _impl_.domain_entry_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.domain_entry_sharding)
}

// .xla.OpSharding domain_exit_sharding = 55;
inline bool HloInstructionProto::has_domain_exit_sharding() const {
  bool value = (_impl_._has_bits_[0] & 0x00002000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.domain_exit_sharding_ != nullptr);
  return value;
}
inline const ::xla::OpSharding& HloInstructionProto::_internal_domain_exit_sharding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpSharding* p = _impl_.domain_exit_sharding_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpSharding&>(::xla::_OpSharding_default_instance_);
}
inline const ::xla::OpSharding& HloInstructionProto::domain_exit_sharding() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.domain_exit_sharding)
  return _internal_domain_exit_sharding();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_domain_exit_sharding(::xla::OpSharding* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_exit_sharding_);
  }
  _impl_.domain_exit_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00002000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00002000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.domain_exit_sharding)
}
inline ::xla::OpSharding* HloInstructionProto::release_domain_exit_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::OpSharding* released = _impl_.domain_exit_sharding_;
  _impl_.domain_exit_sharding_ = 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::OpSharding* HloInstructionProto::unsafe_arena_release_domain_exit_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.domain_exit_sharding)

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::OpSharding* temp = _impl_.domain_exit_sharding_;
  _impl_.domain_exit_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* HloInstructionProto::_internal_mutable_domain_exit_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.domain_exit_sharding_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpSharding>(GetArena());
    _impl_.domain_exit_sharding_ = reinterpret_cast<::xla::OpSharding*>(p);
  }
  return _impl_.domain_exit_sharding_;
}
inline ::xla::OpSharding* HloInstructionProto::mutable_domain_exit_sharding() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00002000u;
  ::xla::OpSharding* _msg = _internal_mutable_domain_exit_sharding();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.domain_exit_sharding)
  return _msg;
}
inline void HloInstructionProto::set_allocated_domain_exit_sharding(::xla::OpSharding* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_exit_sharding_);
  }

  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] |= 0x00002000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00002000u;
  }

  _impl_.domain_exit_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.domain_exit_sharding)
}

// bool constrain_layout = 56;
inline void HloInstructionProto::clear_constrain_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.constrain_layout_ = false;
}
inline bool HloInstructionProto::constrain_layout() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.constrain_layout)
  return _internal_constrain_layout();
}
inline void HloInstructionProto::set_constrain_layout(bool value) {
  _internal_set_constrain_layout(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.constrain_layout)
}
inline bool HloInstructionProto::_internal_constrain_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.constrain_layout_;
}
inline void HloInstructionProto::_internal_set_constrain_layout(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.constrain_layout_ = value;
}

// repeated .xla.ShapeProto operand_shapes_with_layout = 57;
inline int HloInstructionProto::_internal_operand_shapes_with_layout_size() const {
  return _internal_operand_shapes_with_layout().size();
}
inline int HloInstructionProto::operand_shapes_with_layout_size() const {
  return _internal_operand_shapes_with_layout_size();
}
inline ::xla::ShapeProto* HloInstructionProto::mutable_operand_shapes_with_layout(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.operand_shapes_with_layout)
  return _internal_mutable_operand_shapes_with_layout()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* HloInstructionProto::mutable_operand_shapes_with_layout()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.operand_shapes_with_layout)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_shapes_with_layout();
}
inline const ::xla::ShapeProto& HloInstructionProto::operand_shapes_with_layout(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.operand_shapes_with_layout)
  return _internal_operand_shapes_with_layout().Get(index);
}
inline ::xla::ShapeProto* HloInstructionProto::add_operand_shapes_with_layout() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapeProto* _add = _internal_mutable_operand_shapes_with_layout()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.operand_shapes_with_layout)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& HloInstructionProto::operand_shapes_with_layout() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.operand_shapes_with_layout)
  return _internal_operand_shapes_with_layout();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>&
HloInstructionProto::_internal_operand_shapes_with_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_shapes_with_layout_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>*
HloInstructionProto::_internal_mutable_operand_shapes_with_layout() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_shapes_with_layout_;
}

// .xla.TriangularSolveOptions triangular_solve_options = 59;
inline bool HloInstructionProto::has_triangular_solve_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00004000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.triangular_solve_options_ != nullptr);
  return value;
}
inline const ::xla::TriangularSolveOptions& HloInstructionProto::_internal_triangular_solve_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::TriangularSolveOptions* p = _impl_.triangular_solve_options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::TriangularSolveOptions&>(::xla::_TriangularSolveOptions_default_instance_);
}
inline const ::xla::TriangularSolveOptions& HloInstructionProto::triangular_solve_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.triangular_solve_options)
  return _internal_triangular_solve_options();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.triangular_solve_options_);
  }
  _impl_.triangular_solve_options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00004000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00004000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.triangular_solve_options)
}
inline ::xla::TriangularSolveOptions* HloInstructionProto::release_triangular_solve_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00004000u;
  ::xla::TriangularSolveOptions* released = _impl_.triangular_solve_options_;
  _impl_.triangular_solve_options_ = 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::TriangularSolveOptions* HloInstructionProto::unsafe_arena_release_triangular_solve_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.triangular_solve_options)

  _impl_._has_bits_[0] &= ~0x00004000u;
  ::xla::TriangularSolveOptions* temp = _impl_.triangular_solve_options_;
  _impl_.triangular_solve_options_ = nullptr;
  return temp;
}
inline ::xla::TriangularSolveOptions* HloInstructionProto::_internal_mutable_triangular_solve_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.triangular_solve_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::TriangularSolveOptions>(GetArena());
    _impl_.triangular_solve_options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(p);
  }
  return _impl_.triangular_solve_options_;
}
inline ::xla::TriangularSolveOptions* HloInstructionProto::mutable_triangular_solve_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00004000u;
  ::xla::TriangularSolveOptions* _msg = _internal_mutable_triangular_solve_options();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.triangular_solve_options)
  return _msg;
}
inline void HloInstructionProto::set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.triangular_solve_options_);
  }

  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] |= 0x00004000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00004000u;
  }

  _impl_.triangular_solve_options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.triangular_solve_options)
}

// .xla.CholeskyOptions cholesky_options = 62;
inline bool HloInstructionProto::has_cholesky_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00010000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.cholesky_options_ != nullptr);
  return value;
}
inline const ::xla::CholeskyOptions& HloInstructionProto::_internal_cholesky_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::CholeskyOptions* p = _impl_.cholesky_options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::CholeskyOptions&>(::xla::_CholeskyOptions_default_instance_);
}
inline const ::xla::CholeskyOptions& HloInstructionProto::cholesky_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.cholesky_options)
  return _internal_cholesky_options();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_cholesky_options(::xla::CholeskyOptions* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cholesky_options_);
  }
  _impl_.cholesky_options_ = reinterpret_cast<::xla::CholeskyOptions*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00010000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00010000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.cholesky_options)
}
inline ::xla::CholeskyOptions* HloInstructionProto::release_cholesky_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00010000u;
  ::xla::CholeskyOptions* released = _impl_.cholesky_options_;
  _impl_.cholesky_options_ = 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::CholeskyOptions* HloInstructionProto::unsafe_arena_release_cholesky_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.cholesky_options)

  _impl_._has_bits_[0] &= ~0x00010000u;
  ::xla::CholeskyOptions* temp = _impl_.cholesky_options_;
  _impl_.cholesky_options_ = nullptr;
  return temp;
}
inline ::xla::CholeskyOptions* HloInstructionProto::_internal_mutable_cholesky_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cholesky_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::CholeskyOptions>(GetArena());
    _impl_.cholesky_options_ = reinterpret_cast<::xla::CholeskyOptions*>(p);
  }
  return _impl_.cholesky_options_;
}
inline ::xla::CholeskyOptions* HloInstructionProto::mutable_cholesky_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00010000u;
  ::xla::CholeskyOptions* _msg = _internal_mutable_cholesky_options();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.cholesky_options)
  return _msg;
}
inline void HloInstructionProto::set_allocated_cholesky_options(::xla::CholeskyOptions* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cholesky_options_);
  }

  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] |= 0x00010000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00010000u;
  }

  _impl_.cholesky_options_ = reinterpret_cast<::xla::CholeskyOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.cholesky_options)
}

// .xla.ParameterReplication parameter_replication = 61;
inline bool HloInstructionProto::has_parameter_replication() const {
  bool value = (_impl_._has_bits_[0] & 0x00008000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.parameter_replication_ != nullptr);
  return value;
}
inline const ::xla::ParameterReplication& HloInstructionProto::_internal_parameter_replication() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ParameterReplication* p = _impl_.parameter_replication_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ParameterReplication&>(::xla::_ParameterReplication_default_instance_);
}
inline const ::xla::ParameterReplication& HloInstructionProto::parameter_replication() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.parameter_replication)
  return _internal_parameter_replication();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_parameter_replication(::xla::ParameterReplication* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.parameter_replication_);
  }
  _impl_.parameter_replication_ = reinterpret_cast<::xla::ParameterReplication*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00008000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00008000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.parameter_replication)
}
inline ::xla::ParameterReplication* HloInstructionProto::release_parameter_replication() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00008000u;
  ::xla::ParameterReplication* released = _impl_.parameter_replication_;
  _impl_.parameter_replication_ = 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::ParameterReplication* HloInstructionProto::unsafe_arena_release_parameter_replication() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.parameter_replication)

  _impl_._has_bits_[0] &= ~0x00008000u;
  ::xla::ParameterReplication* temp = _impl_.parameter_replication_;
  _impl_.parameter_replication_ = nullptr;
  return temp;
}
inline ::xla::ParameterReplication* HloInstructionProto::_internal_mutable_parameter_replication() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.parameter_replication_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ParameterReplication>(GetArena());
    _impl_.parameter_replication_ = reinterpret_cast<::xla::ParameterReplication*>(p);
  }
  return _impl_.parameter_replication_;
}
inline ::xla::ParameterReplication* HloInstructionProto::mutable_parameter_replication() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00008000u;
  ::xla::ParameterReplication* _msg = _internal_mutable_parameter_replication();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.parameter_replication)
  return _msg;
}
inline void HloInstructionProto::set_allocated_parameter_replication(::xla::ParameterReplication* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.parameter_replication_);
  }

  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] |= 0x00008000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00008000u;
  }

  _impl_.parameter_replication_ = reinterpret_cast<::xla::ParameterReplication*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.parameter_replication)
}

// bool custom_call_has_side_effect = 65;
inline void HloInstructionProto::clear_custom_call_has_side_effect() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_has_side_effect_ = false;
}
inline bool HloInstructionProto::custom_call_has_side_effect() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.custom_call_has_side_effect)
  return _internal_custom_call_has_side_effect();
}
inline void HloInstructionProto::set_custom_call_has_side_effect(bool value) {
  _internal_set_custom_call_has_side_effect(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.custom_call_has_side_effect)
}
inline bool HloInstructionProto::_internal_custom_call_has_side_effect() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.custom_call_has_side_effect_;
}
inline void HloInstructionProto::_internal_set_custom_call_has_side_effect(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_has_side_effect_ = value;
}

// repeated .xla.OutputOperandAliasing output_operand_aliasing = 74;
inline int HloInstructionProto::_internal_output_operand_aliasing_size() const {
  return _internal_output_operand_aliasing().size();
}
inline int HloInstructionProto::output_operand_aliasing_size() const {
  return _internal_output_operand_aliasing_size();
}
inline ::xla::OutputOperandAliasing* HloInstructionProto::mutable_output_operand_aliasing(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.output_operand_aliasing)
  return _internal_mutable_output_operand_aliasing()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>* HloInstructionProto::mutable_output_operand_aliasing()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.output_operand_aliasing)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_operand_aliasing();
}
inline const ::xla::OutputOperandAliasing& HloInstructionProto::output_operand_aliasing(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.output_operand_aliasing)
  return _internal_output_operand_aliasing().Get(index);
}
inline ::xla::OutputOperandAliasing* HloInstructionProto::add_output_operand_aliasing() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OutputOperandAliasing* _add = _internal_mutable_output_operand_aliasing()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.output_operand_aliasing)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>& HloInstructionProto::output_operand_aliasing() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.output_operand_aliasing)
  return _internal_output_operand_aliasing();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>&
HloInstructionProto::_internal_output_operand_aliasing() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_operand_aliasing_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>*
HloInstructionProto::_internal_mutable_output_operand_aliasing() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_operand_aliasing_;
}

// .xla.CustomCallSchedule custom_call_schedule = 76;
inline void HloInstructionProto::clear_custom_call_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_schedule_ = 0;
}
inline ::xla::CustomCallSchedule HloInstructionProto::custom_call_schedule() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.custom_call_schedule)
  return _internal_custom_call_schedule();
}
inline void HloInstructionProto::set_custom_call_schedule(::xla::CustomCallSchedule value) {
  _internal_set_custom_call_schedule(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.custom_call_schedule)
}
inline ::xla::CustomCallSchedule HloInstructionProto::_internal_custom_call_schedule() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CustomCallSchedule>(_impl_.custom_call_schedule_);
}
inline void HloInstructionProto::_internal_set_custom_call_schedule(::xla::CustomCallSchedule value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_schedule_ = value;
}

// int64 delta = 66;
inline void HloInstructionProto::clear_delta() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.delta_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::delta() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.delta)
  return _internal_delta();
}
inline void HloInstructionProto::set_delta(::int64_t value) {
  _internal_set_delta(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.delta)
}
inline ::int64_t HloInstructionProto::_internal_delta() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.delta_;
}
inline void HloInstructionProto::_internal_set_delta(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.delta_ = value;
}

// bool indices_are_sorted = 67;
inline void HloInstructionProto::clear_indices_are_sorted() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.indices_are_sorted_ = false;
}
inline bool HloInstructionProto::indices_are_sorted() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.indices_are_sorted)
  return _internal_indices_are_sorted();
}
inline void HloInstructionProto::set_indices_are_sorted(bool value) {
  _internal_set_indices_are_sorted(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.indices_are_sorted)
}
inline bool HloInstructionProto::_internal_indices_are_sorted() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.indices_are_sorted_;
}
inline void HloInstructionProto::_internal_set_indices_are_sorted(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.indices_are_sorted_ = value;
}

// .xla.FrontendAttributes frontend_attributes = 68;
inline bool HloInstructionProto::has_frontend_attributes() const {
  bool value = (_impl_._has_bits_[0] & 0x00020000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.frontend_attributes_ != nullptr);
  return value;
}
inline const ::xla::FrontendAttributes& HloInstructionProto::_internal_frontend_attributes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::FrontendAttributes* p = _impl_.frontend_attributes_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::FrontendAttributes&>(::xla::_FrontendAttributes_default_instance_);
}
inline const ::xla::FrontendAttributes& HloInstructionProto::frontend_attributes() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.frontend_attributes)
  return _internal_frontend_attributes();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }
  _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00020000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00020000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.frontend_attributes)
}
inline ::xla::FrontendAttributes* HloInstructionProto::release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00020000u;
  ::xla::FrontendAttributes* released = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = 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::FrontendAttributes* HloInstructionProto::unsafe_arena_release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.frontend_attributes)

  _impl_._has_bits_[0] &= ~0x00020000u;
  ::xla::FrontendAttributes* temp = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  return temp;
}
inline ::xla::FrontendAttributes* HloInstructionProto::_internal_mutable_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.frontend_attributes_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::FrontendAttributes>(GetArena());
    _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(p);
  }
  return _impl_.frontend_attributes_;
}
inline ::xla::FrontendAttributes* HloInstructionProto::mutable_frontend_attributes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00020000u;
  ::xla::FrontendAttributes* _msg = _internal_mutable_frontend_attributes();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.frontend_attributes)
  return _msg;
}
inline void HloInstructionProto::set_allocated_frontend_attributes(::xla::FrontendAttributes* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }

  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] |= 0x00020000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00020000u;
  }

  _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.frontend_attributes)
}

// bool unique_indices = 69;
inline void HloInstructionProto::clear_unique_indices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unique_indices_ = false;
}
inline bool HloInstructionProto::unique_indices() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.unique_indices)
  return _internal_unique_indices();
}
inline void HloInstructionProto::set_unique_indices(bool value) {
  _internal_set_unique_indices(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.unique_indices)
}
inline bool HloInstructionProto::_internal_unique_indices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.unique_indices_;
}
inline void HloInstructionProto::_internal_set_unique_indices(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unique_indices_ = value;
}

// .xla.RandomAlgorithm rng_algorithm = 70;
inline void HloInstructionProto::clear_rng_algorithm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rng_algorithm_ = 0;
}
inline ::xla::RandomAlgorithm HloInstructionProto::rng_algorithm() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.rng_algorithm)
  return _internal_rng_algorithm();
}
inline void HloInstructionProto::set_rng_algorithm(::xla::RandomAlgorithm value) {
  _internal_set_rng_algorithm(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.rng_algorithm)
}
inline ::xla::RandomAlgorithm HloInstructionProto::_internal_rng_algorithm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::RandomAlgorithm>(_impl_.rng_algorithm_);
}
inline void HloInstructionProto::_internal_set_rng_algorithm(::xla::RandomAlgorithm value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rng_algorithm_ = value;
}

// string comparison_type = 72;
inline void HloInstructionProto::clear_comparison_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_type_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::comparison_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.comparison_type)
  return _internal_comparison_type();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_comparison_type(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.comparison_type)
}
inline std::string* HloInstructionProto::mutable_comparison_type() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_comparison_type();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.comparison_type)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_comparison_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.comparison_type_.Get();
}
inline void HloInstructionProto::_internal_set_comparison_type(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_type_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_comparison_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.comparison_type_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_comparison_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.comparison_type)
  return _impl_.comparison_type_.Release();
}
inline void HloInstructionProto::set_allocated_comparison_type(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.comparison_type_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.comparison_type_.IsDefault()) {
          _impl_.comparison_type_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.comparison_type)
}

// bool is_cross_program_prefetch = 73 [deprecated = true];
inline void HloInstructionProto::clear_is_cross_program_prefetch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_cross_program_prefetch_ = false;
}
inline bool HloInstructionProto::is_cross_program_prefetch() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_cross_program_prefetch)
  return _internal_is_cross_program_prefetch();
}
inline void HloInstructionProto::set_is_cross_program_prefetch(bool value) {
  _internal_set_is_cross_program_prefetch(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_cross_program_prefetch)
}
inline bool HloInstructionProto::_internal_is_cross_program_prefetch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_cross_program_prefetch_;
}
inline void HloInstructionProto::_internal_set_is_cross_program_prefetch(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_cross_program_prefetch_ = value;
}

// int32 cross_program_prefetch_index = 80;
inline bool HloInstructionProto::has_cross_program_prefetch_index() const {
  return optional_cross_program_prefetch_index_case() == kCrossProgramPrefetchIndex;
}
inline void HloInstructionProto::set_has_cross_program_prefetch_index() {
  _impl_._oneof_case_[0] = kCrossProgramPrefetchIndex;
}
inline void HloInstructionProto::clear_cross_program_prefetch_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (optional_cross_program_prefetch_index_case() == kCrossProgramPrefetchIndex) {
    _impl_.optional_cross_program_prefetch_index_.cross_program_prefetch_index_ = 0;
    clear_has_optional_cross_program_prefetch_index();
  }
}
inline ::int32_t HloInstructionProto::cross_program_prefetch_index() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.cross_program_prefetch_index)
  return _internal_cross_program_prefetch_index();
}
inline void HloInstructionProto::set_cross_program_prefetch_index(::int32_t value) {
  if (optional_cross_program_prefetch_index_case() != kCrossProgramPrefetchIndex) {
    clear_optional_cross_program_prefetch_index();
    set_has_cross_program_prefetch_index();
  }
  _impl_.optional_cross_program_prefetch_index_.cross_program_prefetch_index_ = value;
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.cross_program_prefetch_index)
}
inline ::int32_t HloInstructionProto::_internal_cross_program_prefetch_index() const {
  if (optional_cross_program_prefetch_index_case() == kCrossProgramPrefetchIndex) {
    return _impl_.optional_cross_program_prefetch_index_.cross_program_prefetch_index_;
  }
  return 0;
}

// .xla.PaddingType padding_type = 75;
inline void HloInstructionProto::clear_padding_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_type_ = 0;
}
inline ::xla::PaddingType HloInstructionProto::padding_type() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.padding_type)
  return _internal_padding_type();
}
inline void HloInstructionProto::set_padding_type(::xla::PaddingType value) {
  _internal_set_padding_type(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.padding_type)
}
inline ::xla::PaddingType HloInstructionProto::_internal_padding_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PaddingType>(_impl_.padding_type_);
}
inline void HloInstructionProto::_internal_set_padding_type(::xla::PaddingType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_type_ = value;
}

// .xla.CustomCallApiVersion custom_call_api_version = 77;
inline void HloInstructionProto::clear_custom_call_api_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_api_version_ = 0;
}
inline ::xla::CustomCallApiVersion HloInstructionProto::custom_call_api_version() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.custom_call_api_version)
  return _internal_custom_call_api_version();
}
inline void HloInstructionProto::set_custom_call_api_version(::xla::CustomCallApiVersion value) {
  _internal_set_custom_call_api_version(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.custom_call_api_version)
}
inline ::xla::CustomCallApiVersion HloInstructionProto::_internal_custom_call_api_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CustomCallApiVersion>(_impl_.custom_call_api_version_);
}
inline void HloInstructionProto::_internal_set_custom_call_api_version(::xla::CustomCallApiVersion value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.custom_call_api_version_ = value;
}

// string async_execution_thread = 79;
inline void HloInstructionProto::clear_async_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_execution_thread_.ClearToEmpty();
}
inline const std::string& HloInstructionProto::async_execution_thread() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.async_execution_thread)
  return _internal_async_execution_thread();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_async_execution_thread(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_execution_thread_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.async_execution_thread)
}
inline std::string* HloInstructionProto::mutable_async_execution_thread() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_async_execution_thread();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.async_execution_thread)
  return _s;
}
inline const std::string& HloInstructionProto::_internal_async_execution_thread() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_execution_thread_.Get();
}
inline void HloInstructionProto::_internal_set_async_execution_thread(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_execution_thread_.Set(value, GetArena());
}
inline std::string* HloInstructionProto::_internal_mutable_async_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.async_execution_thread_.Mutable( GetArena());
}
inline std::string* HloInstructionProto::release_async_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.async_execution_thread)
  return _impl_.async_execution_thread_.Release();
}
inline void HloInstructionProto::set_allocated_async_execution_thread(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_execution_thread_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.async_execution_thread_.IsDefault()) {
          _impl_.async_execution_thread_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.async_execution_thread)
}

// int64 k = 81;
inline void HloInstructionProto::clear_k() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = ::int64_t{0};
}
inline ::int64_t HloInstructionProto::k() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.k)
  return _internal_k();
}
inline void HloInstructionProto::set_k(::int64_t value) {
  _internal_set_k(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.k)
}
inline ::int64_t HloInstructionProto::_internal_k() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.k_;
}
inline void HloInstructionProto::_internal_set_k(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = value;
}

// bool largest = 85;
inline void HloInstructionProto::clear_largest() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.largest_ = false;
}
inline bool HloInstructionProto::largest() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.largest)
  return _internal_largest();
}
inline void HloInstructionProto::set_largest(bool value) {
  _internal_set_largest(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.largest)
}
inline bool HloInstructionProto::_internal_largest() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.largest_;
}
inline void HloInstructionProto::_internal_set_largest(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.largest_ = value;
}

// .xla.StatisticsViz statistics_viz = 82;
inline bool HloInstructionProto::has_statistics_viz() const {
  bool value = (_impl_._has_bits_[0] & 0x00040000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.statistics_viz_ != nullptr);
  return value;
}
inline const ::xla::StatisticsViz& HloInstructionProto::_internal_statistics_viz() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::StatisticsViz* p = _impl_.statistics_viz_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::StatisticsViz&>(::xla::_StatisticsViz_default_instance_);
}
inline const ::xla::StatisticsViz& HloInstructionProto::statistics_viz() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.statistics_viz)
  return _internal_statistics_viz();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_statistics_viz(::xla::StatisticsViz* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.statistics_viz_);
  }
  _impl_.statistics_viz_ = reinterpret_cast<::xla::StatisticsViz*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00040000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00040000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.statistics_viz)
}
inline ::xla::StatisticsViz* HloInstructionProto::release_statistics_viz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00040000u;
  ::xla::StatisticsViz* released = _impl_.statistics_viz_;
  _impl_.statistics_viz_ = 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::StatisticsViz* HloInstructionProto::unsafe_arena_release_statistics_viz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.statistics_viz)

  _impl_._has_bits_[0] &= ~0x00040000u;
  ::xla::StatisticsViz* temp = _impl_.statistics_viz_;
  _impl_.statistics_viz_ = nullptr;
  return temp;
}
inline ::xla::StatisticsViz* HloInstructionProto::_internal_mutable_statistics_viz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.statistics_viz_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::StatisticsViz>(GetArena());
    _impl_.statistics_viz_ = reinterpret_cast<::xla::StatisticsViz*>(p);
  }
  return _impl_.statistics_viz_;
}
inline ::xla::StatisticsViz* HloInstructionProto::mutable_statistics_viz() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00040000u;
  ::xla::StatisticsViz* _msg = _internal_mutable_statistics_viz();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.statistics_viz)
  return _msg;
}
inline void HloInstructionProto::set_allocated_statistics_viz(::xla::StatisticsViz* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.statistics_viz_);
  }

  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] |= 0x00040000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00040000u;
  }

  _impl_.statistics_viz_ = reinterpret_cast<::xla::StatisticsViz*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.statistics_viz)
}

// repeated .xla.SparsityDescriptor dot_sparsity = 86;
inline int HloInstructionProto::_internal_dot_sparsity_size() const {
  return _internal_dot_sparsity().size();
}
inline int HloInstructionProto::dot_sparsity_size() const {
  return _internal_dot_sparsity_size();
}
inline ::xla::SparsityDescriptor* HloInstructionProto::mutable_dot_sparsity(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.dot_sparsity)
  return _internal_mutable_dot_sparsity()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>* HloInstructionProto::mutable_dot_sparsity()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInstructionProto.dot_sparsity)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dot_sparsity();
}
inline const ::xla::SparsityDescriptor& HloInstructionProto::dot_sparsity(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.dot_sparsity)
  return _internal_dot_sparsity().Get(index);
}
inline ::xla::SparsityDescriptor* HloInstructionProto::add_dot_sparsity() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SparsityDescriptor* _add = _internal_mutable_dot_sparsity()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInstructionProto.dot_sparsity)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>& HloInstructionProto::dot_sparsity() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInstructionProto.dot_sparsity)
  return _internal_dot_sparsity();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>&
HloInstructionProto::_internal_dot_sparsity() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dot_sparsity_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SparsityDescriptor>*
HloInstructionProto::_internal_mutable_dot_sparsity() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dot_sparsity_;
}

// .xla.CollectiveDeviceListProto collective_device_list = 87;
inline bool HloInstructionProto::has_collective_device_list() const {
  bool value = (_impl_._has_bits_[0] & 0x00080000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_device_list_ != nullptr);
  return value;
}
inline const ::xla::CollectiveDeviceListProto& HloInstructionProto::_internal_collective_device_list() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::CollectiveDeviceListProto* p = _impl_.collective_device_list_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::CollectiveDeviceListProto&>(::xla::_CollectiveDeviceListProto_default_instance_);
}
inline const ::xla::CollectiveDeviceListProto& HloInstructionProto::collective_device_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.collective_device_list)
  return _internal_collective_device_list();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_device_list_);
  }
  _impl_.collective_device_list_ = reinterpret_cast<::xla::CollectiveDeviceListProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00080000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00080000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.collective_device_list)
}
inline ::xla::CollectiveDeviceListProto* HloInstructionProto::release_collective_device_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00080000u;
  ::xla::CollectiveDeviceListProto* released = _impl_.collective_device_list_;
  _impl_.collective_device_list_ = 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::CollectiveDeviceListProto* HloInstructionProto::unsafe_arena_release_collective_device_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.collective_device_list)

  _impl_._has_bits_[0] &= ~0x00080000u;
  ::xla::CollectiveDeviceListProto* temp = _impl_.collective_device_list_;
  _impl_.collective_device_list_ = nullptr;
  return temp;
}
inline ::xla::CollectiveDeviceListProto* HloInstructionProto::_internal_mutable_collective_device_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_device_list_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::CollectiveDeviceListProto>(GetArena());
    _impl_.collective_device_list_ = reinterpret_cast<::xla::CollectiveDeviceListProto*>(p);
  }
  return _impl_.collective_device_list_;
}
inline ::xla::CollectiveDeviceListProto* HloInstructionProto::mutable_collective_device_list() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00080000u;
  ::xla::CollectiveDeviceListProto* _msg = _internal_mutable_collective_device_list();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.collective_device_list)
  return _msg;
}
inline void HloInstructionProto::set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_device_list_);
  }

  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] |= 0x00080000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00080000u;
  }

  _impl_.collective_device_list_ = reinterpret_cast<::xla::CollectiveDeviceListProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.collective_device_list)
}

// .xla.OriginalValueProto original_value = 88;
inline bool HloInstructionProto::has_original_value() const {
  bool value = (_impl_._has_bits_[0] & 0x00100000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.original_value_ != nullptr);
  return value;
}
inline const ::xla::OriginalValueProto& HloInstructionProto::_internal_original_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalValueProto* p = _impl_.original_value_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalValueProto&>(::xla::_OriginalValueProto_default_instance_);
}
inline const ::xla::OriginalValueProto& HloInstructionProto::original_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.original_value)
  return _internal_original_value();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_original_value(::xla::OriginalValueProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.original_value_);
  }
  _impl_.original_value_ = reinterpret_cast<::xla::OriginalValueProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00100000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00100000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.original_value)
}
inline ::xla::OriginalValueProto* HloInstructionProto::release_original_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00100000u;
  ::xla::OriginalValueProto* released = _impl_.original_value_;
  _impl_.original_value_ = 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::OriginalValueProto* HloInstructionProto::unsafe_arena_release_original_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.original_value)

  _impl_._has_bits_[0] &= ~0x00100000u;
  ::xla::OriginalValueProto* temp = _impl_.original_value_;
  _impl_.original_value_ = nullptr;
  return temp;
}
inline ::xla::OriginalValueProto* HloInstructionProto::_internal_mutable_original_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.original_value_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalValueProto>(GetArena());
    _impl_.original_value_ = reinterpret_cast<::xla::OriginalValueProto*>(p);
  }
  return _impl_.original_value_;
}
inline ::xla::OriginalValueProto* HloInstructionProto::mutable_original_value() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00100000u;
  ::xla::OriginalValueProto* _msg = _internal_mutable_original_value();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.original_value)
  return _msg;
}
inline void HloInstructionProto::set_allocated_original_value(::xla::OriginalValueProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.original_value_);
  }

  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] |= 0x00100000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00100000u;
  }

  _impl_.original_value_ = reinterpret_cast<::xla::OriginalValueProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.original_value)
}

// bool is_composite = 89;
inline void HloInstructionProto::clear_is_composite() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_composite_ = false;
}
inline bool HloInstructionProto::is_composite() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_composite)
  return _internal_is_composite();
}
inline void HloInstructionProto::set_is_composite(bool value) {
  _internal_set_is_composite(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_composite)
}
inline bool HloInstructionProto::_internal_is_composite() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_composite_;
}
inline void HloInstructionProto::_internal_set_is_composite(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_composite_ = value;
}

// .xla.ResultAccuracy result_accuracy = 91;
inline bool HloInstructionProto::has_result_accuracy() const {
  bool value = (_impl_._has_bits_[0] & 0x00400000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_accuracy_ != nullptr);
  return value;
}
inline const ::xla::ResultAccuracy& HloInstructionProto::_internal_result_accuracy() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ResultAccuracy* p = _impl_.result_accuracy_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ResultAccuracy&>(::xla::_ResultAccuracy_default_instance_);
}
inline const ::xla::ResultAccuracy& HloInstructionProto::result_accuracy() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.result_accuracy)
  return _internal_result_accuracy();
}
inline void HloInstructionProto::unsafe_arena_set_allocated_result_accuracy(::xla::ResultAccuracy* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_accuracy_);
  }
  _impl_.result_accuracy_ = reinterpret_cast<::xla::ResultAccuracy*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00400000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00400000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.result_accuracy)
}
inline ::xla::ResultAccuracy* HloInstructionProto::release_result_accuracy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00400000u;
  ::xla::ResultAccuracy* released = _impl_.result_accuracy_;
  _impl_.result_accuracy_ = 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::ResultAccuracy* HloInstructionProto::unsafe_arena_release_result_accuracy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.result_accuracy)

  _impl_._has_bits_[0] &= ~0x00400000u;
  ::xla::ResultAccuracy* temp = _impl_.result_accuracy_;
  _impl_.result_accuracy_ = nullptr;
  return temp;
}
inline ::xla::ResultAccuracy* HloInstructionProto::_internal_mutable_result_accuracy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_accuracy_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ResultAccuracy>(GetArena());
    _impl_.result_accuracy_ = reinterpret_cast<::xla::ResultAccuracy*>(p);
  }
  return _impl_.result_accuracy_;
}
inline ::xla::ResultAccuracy* HloInstructionProto::mutable_result_accuracy() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00400000u;
  ::xla::ResultAccuracy* _msg = _internal_mutable_result_accuracy();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.result_accuracy)
  return _msg;
}
inline void HloInstructionProto::set_allocated_result_accuracy(::xla::ResultAccuracy* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_accuracy_);
  }

  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] |= 0x00400000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00400000u;
  }

  _impl_.result_accuracy_ = reinterpret_cast<::xla::ResultAccuracy*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.result_accuracy)
}

// .xla.CollectiveOpGroupModeProto collective_op_group_mode = 92;
inline void HloInstructionProto::clear_collective_op_group_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collective_op_group_mode_ = 0;
}
inline ::xla::CollectiveOpGroupModeProto HloInstructionProto::collective_op_group_mode() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.collective_op_group_mode)
  return _internal_collective_op_group_mode();
}
inline void HloInstructionProto::set_collective_op_group_mode(::xla::CollectiveOpGroupModeProto value) {
  _internal_set_collective_op_group_mode(value);
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.collective_op_group_mode)
}
inline ::xla::CollectiveOpGroupModeProto HloInstructionProto::_internal_collective_op_group_mode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CollectiveOpGroupModeProto>(_impl_.collective_op_group_mode_);
}
inline void HloInstructionProto::_internal_set_collective_op_group_mode(::xla::CollectiveOpGroupModeProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collective_op_group_mode_ = value;
}

inline bool HloInstructionProto::has_optional_cross_program_prefetch_index() const {
  return optional_cross_program_prefetch_index_case() != OPTIONAL_CROSS_PROGRAM_PREFETCH_INDEX_NOT_SET;
}
inline void HloInstructionProto::clear_has_optional_cross_program_prefetch_index() {
  _impl_._oneof_case_[0] = OPTIONAL_CROSS_PROGRAM_PREFETCH_INDEX_NOT_SET;
}
inline HloInstructionProto::OptionalCrossProgramPrefetchIndexCase HloInstructionProto::optional_cross_program_prefetch_index_case() const {
  return HloInstructionProto::OptionalCrossProgramPrefetchIndexCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// HloComputationProto

// string name = 1;
inline void HloComputationProto::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& HloComputationProto::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloComputationProto::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.name)
}
inline std::string* HloComputationProto::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.HloComputationProto.name)
  return _s;
}
inline const std::string& HloComputationProto::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void HloComputationProto::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline std::string* HloComputationProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* HloComputationProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.name)
  return _impl_.name_.Release();
}
inline void HloComputationProto::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloComputationProto.name)
}

// repeated .xla.HloInstructionProto instructions = 2;
inline int HloComputationProto::_internal_instructions_size() const {
  return _internal_instructions().size();
}
inline int HloComputationProto::instructions_size() const {
  return _internal_instructions_size();
}
inline void HloComputationProto::clear_instructions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instructions_.Clear();
}
inline ::xla::HloInstructionProto* HloComputationProto::mutable_instructions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloComputationProto.instructions)
  return _internal_mutable_instructions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>* HloComputationProto::mutable_instructions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloComputationProto.instructions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_instructions();
}
inline const ::xla::HloInstructionProto& HloComputationProto::instructions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.instructions)
  return _internal_instructions().Get(index);
}
inline ::xla::HloInstructionProto* HloComputationProto::add_instructions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloInstructionProto* _add = _internal_mutable_instructions()->Add();
  // @@protoc_insertion_point(field_add:xla.HloComputationProto.instructions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>& HloComputationProto::instructions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloComputationProto.instructions)
  return _internal_instructions();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>&
HloComputationProto::_internal_instructions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instructions_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>*
HloComputationProto::_internal_mutable_instructions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.instructions_;
}

// .xla.ProgramShapeProto program_shape = 4;
inline bool HloComputationProto::has_program_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.program_shape_ != nullptr);
  return value;
}
inline const ::xla::ProgramShapeProto& HloComputationProto::_internal_program_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ProgramShapeProto* p = _impl_.program_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ProgramShapeProto&>(::xla::_ProgramShapeProto_default_instance_);
}
inline const ::xla::ProgramShapeProto& HloComputationProto::program_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.program_shape)
  return _internal_program_shape();
}
inline void HloComputationProto::unsafe_arena_set_allocated_program_shape(::xla::ProgramShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.program_shape_);
  }
  _impl_.program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloComputationProto.program_shape)
}
inline ::xla::ProgramShapeProto* HloComputationProto::release_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ProgramShapeProto* released = _impl_.program_shape_;
  _impl_.program_shape_ = 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::ProgramShapeProto* HloComputationProto::unsafe_arena_release_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.program_shape)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ProgramShapeProto* temp = _impl_.program_shape_;
  _impl_.program_shape_ = nullptr;
  return temp;
}
inline ::xla::ProgramShapeProto* HloComputationProto::_internal_mutable_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.program_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ProgramShapeProto>(GetArena());
    _impl_.program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(p);
  }
  return _impl_.program_shape_;
}
inline ::xla::ProgramShapeProto* HloComputationProto::mutable_program_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ProgramShapeProto* _msg = _internal_mutable_program_shape();
  // @@protoc_insertion_point(field_mutable:xla.HloComputationProto.program_shape)
  return _msg;
}
inline void HloComputationProto::set_allocated_program_shape(::xla::ProgramShapeProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.program_shape_);
  }

  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_.program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloComputationProto.program_shape)
}

// int64 id = 5;
inline void HloComputationProto::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
}
inline ::int64_t HloComputationProto::id() const {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.id)
  return _internal_id();
}
inline void HloComputationProto::set_id(::int64_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.id)
}
inline ::int64_t HloComputationProto::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void HloComputationProto::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// int64 root_id = 6;
inline void HloComputationProto::clear_root_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.root_id_ = ::int64_t{0};
}
inline ::int64_t HloComputationProto::root_id() const {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.root_id)
  return _internal_root_id();
}
inline void HloComputationProto::set_root_id(::int64_t value) {
  _internal_set_root_id(value);
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.root_id)
}
inline ::int64_t HloComputationProto::_internal_root_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.root_id_;
}
inline void HloComputationProto::_internal_set_root_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.root_id_ = value;
}

// bool is_fusion_computation = 7;
inline void HloComputationProto::clear_is_fusion_computation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_fusion_computation_ = false;
}
inline bool HloComputationProto::is_fusion_computation() const {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.is_fusion_computation)
  return _internal_is_fusion_computation();
}
inline void HloComputationProto::set_is_fusion_computation(bool value) {
  _internal_set_is_fusion_computation(value);
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.is_fusion_computation)
}
inline bool HloComputationProto::_internal_is_fusion_computation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_fusion_computation_;
}
inline void HloComputationProto::_internal_set_is_fusion_computation(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_fusion_computation_ = value;
}

// string execution_thread = 8;
inline void HloComputationProto::clear_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_thread_.ClearToEmpty();
}
inline const std::string& HloComputationProto::execution_thread() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloComputationProto.execution_thread)
  return _internal_execution_thread();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloComputationProto::set_execution_thread(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_thread_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.execution_thread)
}
inline std::string* HloComputationProto::mutable_execution_thread() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_execution_thread();
  // @@protoc_insertion_point(field_mutable:xla.HloComputationProto.execution_thread)
  return _s;
}
inline const std::string& HloComputationProto::_internal_execution_thread() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.execution_thread_.Get();
}
inline void HloComputationProto::_internal_set_execution_thread(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_thread_.Set(value, GetArena());
}
inline std::string* HloComputationProto::_internal_mutable_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.execution_thread_.Mutable( GetArena());
}
inline std::string* HloComputationProto::release_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.execution_thread)
  return _impl_.execution_thread_.Release();
}
inline void HloComputationProto::set_allocated_execution_thread(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_thread_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.execution_thread_.IsDefault()) {
          _impl_.execution_thread_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloComputationProto.execution_thread)
}

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

// HloScheduleProto_InstructionSequence

// repeated int64 instruction_ids = 1;
inline int HloScheduleProto_InstructionSequence::_internal_instruction_ids_size() const {
  return _internal_instruction_ids().size();
}
inline int HloScheduleProto_InstructionSequence::instruction_ids_size() const {
  return _internal_instruction_ids_size();
}
inline void HloScheduleProto_InstructionSequence::clear_instruction_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_ids_.Clear();
}
inline ::int64_t HloScheduleProto_InstructionSequence::instruction_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloScheduleProto.InstructionSequence.instruction_ids)
  return _internal_instruction_ids().Get(index);
}
inline void HloScheduleProto_InstructionSequence::set_instruction_ids(int index, ::int64_t value) {
  _internal_mutable_instruction_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloScheduleProto.InstructionSequence.instruction_ids)
}
inline void HloScheduleProto_InstructionSequence::add_instruction_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_instruction_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloScheduleProto.InstructionSequence.instruction_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloScheduleProto_InstructionSequence::instruction_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloScheduleProto.InstructionSequence.instruction_ids)
  return _internal_instruction_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloScheduleProto_InstructionSequence::mutable_instruction_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloScheduleProto.InstructionSequence.instruction_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_instruction_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloScheduleProto_InstructionSequence::_internal_instruction_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloScheduleProto_InstructionSequence::_internal_mutable_instruction_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.instruction_ids_;
}

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

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

// HloScheduleProto

// map<int64, .xla.HloScheduleProto.InstructionSequence> sequences = 1;
inline int HloScheduleProto::_internal_sequences_size() const {
  return _internal_sequences().size();
}
inline int HloScheduleProto::sequences_size() const {
  return _internal_sequences_size();
}
inline void HloScheduleProto::clear_sequences() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sequences_.Clear();
}
inline const ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>& HloScheduleProto::_internal_sequences() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sequences_.GetMap();
}
inline const ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>& HloScheduleProto::sequences() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.HloScheduleProto.sequences)
  return _internal_sequences();
}
inline ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* HloScheduleProto::_internal_mutable_sequences() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sequences_.MutableMap();
}
inline ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* HloScheduleProto::mutable_sequences() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.HloScheduleProto.sequences)
  return _internal_mutable_sequences();
}

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

// HloInputOutputAliasProto_AliasEntryProto

// repeated int64 output_shape_index = 1;
inline int HloInputOutputAliasProto_AliasEntryProto::_internal_output_shape_index_size() const {
  return _internal_output_shape_index().size();
}
inline int HloInputOutputAliasProto_AliasEntryProto::output_shape_index_size() const {
  return _internal_output_shape_index_size();
}
inline void HloInputOutputAliasProto_AliasEntryProto::clear_output_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_shape_index_.Clear();
}
inline ::int64_t HloInputOutputAliasProto_AliasEntryProto::output_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInputOutputAliasProto.AliasEntryProto.output_shape_index)
  return _internal_output_shape_index().Get(index);
}
inline void HloInputOutputAliasProto_AliasEntryProto::set_output_shape_index(int index, ::int64_t value) {
  _internal_mutable_output_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInputOutputAliasProto.AliasEntryProto.output_shape_index)
}
inline void HloInputOutputAliasProto_AliasEntryProto::add_output_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_output_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInputOutputAliasProto.AliasEntryProto.output_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInputOutputAliasProto_AliasEntryProto::output_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInputOutputAliasProto.AliasEntryProto.output_shape_index)
  return _internal_output_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInputOutputAliasProto_AliasEntryProto::mutable_output_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInputOutputAliasProto.AliasEntryProto.output_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInputOutputAliasProto_AliasEntryProto::_internal_output_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInputOutputAliasProto_AliasEntryProto::_internal_mutable_output_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_shape_index_;
}

// int64 parameter_number = 2;
inline void HloInputOutputAliasProto_AliasEntryProto::clear_parameter_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = ::int64_t{0};
}
inline ::int64_t HloInputOutputAliasProto_AliasEntryProto::parameter_number() const {
  // @@protoc_insertion_point(field_get:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_number)
  return _internal_parameter_number();
}
inline void HloInputOutputAliasProto_AliasEntryProto::set_parameter_number(::int64_t value) {
  _internal_set_parameter_number(value);
  // @@protoc_insertion_point(field_set:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_number)
}
inline ::int64_t HloInputOutputAliasProto_AliasEntryProto::_internal_parameter_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_number_;
}
inline void HloInputOutputAliasProto_AliasEntryProto::_internal_set_parameter_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = value;
}

// repeated int64 parameter_shape_index = 3;
inline int HloInputOutputAliasProto_AliasEntryProto::_internal_parameter_shape_index_size() const {
  return _internal_parameter_shape_index().size();
}
inline int HloInputOutputAliasProto_AliasEntryProto::parameter_shape_index_size() const {
  return _internal_parameter_shape_index_size();
}
inline void HloInputOutputAliasProto_AliasEntryProto::clear_parameter_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_shape_index_.Clear();
}
inline ::int64_t HloInputOutputAliasProto_AliasEntryProto::parameter_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_shape_index)
  return _internal_parameter_shape_index().Get(index);
}
inline void HloInputOutputAliasProto_AliasEntryProto::set_parameter_shape_index(int index, ::int64_t value) {
  _internal_mutable_parameter_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_shape_index)
}
inline void HloInputOutputAliasProto_AliasEntryProto::add_parameter_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_parameter_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloInputOutputAliasProto_AliasEntryProto::parameter_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_shape_index)
  return _internal_parameter_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInputOutputAliasProto_AliasEntryProto::mutable_parameter_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInputOutputAliasProto.AliasEntryProto.parameter_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_parameter_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloInputOutputAliasProto_AliasEntryProto::_internal_parameter_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloInputOutputAliasProto_AliasEntryProto::_internal_mutable_parameter_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.parameter_shape_index_;
}

// .xla.Kind kind = 4;
inline void HloInputOutputAliasProto_AliasEntryProto::clear_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = 0;
}
inline ::xla::Kind HloInputOutputAliasProto_AliasEntryProto::kind() const {
  // @@protoc_insertion_point(field_get:xla.HloInputOutputAliasProto.AliasEntryProto.kind)
  return _internal_kind();
}
inline void HloInputOutputAliasProto_AliasEntryProto::set_kind(::xla::Kind value) {
  _internal_set_kind(value);
  // @@protoc_insertion_point(field_set:xla.HloInputOutputAliasProto.AliasEntryProto.kind)
}
inline ::xla::Kind HloInputOutputAliasProto_AliasEntryProto::_internal_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::Kind>(_impl_.kind_);
}
inline void HloInputOutputAliasProto_AliasEntryProto::_internal_set_kind(::xla::Kind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = value;
}

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

// HloInputOutputAliasProto

// repeated .xla.HloInputOutputAliasProto.AliasEntryProto entries = 1;
inline int HloInputOutputAliasProto::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int HloInputOutputAliasProto::entries_size() const {
  return _internal_entries_size();
}
inline void HloInputOutputAliasProto::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline ::xla::HloInputOutputAliasProto_AliasEntryProto* HloInputOutputAliasProto::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInputOutputAliasProto.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>* HloInputOutputAliasProto::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInputOutputAliasProto.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::xla::HloInputOutputAliasProto_AliasEntryProto& HloInputOutputAliasProto::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInputOutputAliasProto.entries)
  return _internal_entries().Get(index);
}
inline ::xla::HloInputOutputAliasProto_AliasEntryProto* HloInputOutputAliasProto::add_entries() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloInputOutputAliasProto_AliasEntryProto* _add = _internal_mutable_entries()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInputOutputAliasProto.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>& HloInputOutputAliasProto::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInputOutputAliasProto.entries)
  return _internal_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>&
HloInputOutputAliasProto::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>*
HloInputOutputAliasProto::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

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

// HloBufferDonorProto_BufferDonorEntryProto

// int64 parameter_number = 1;
inline void HloBufferDonorProto_BufferDonorEntryProto::clear_parameter_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = ::int64_t{0};
}
inline ::int64_t HloBufferDonorProto_BufferDonorEntryProto::parameter_number() const {
  // @@protoc_insertion_point(field_get:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_number)
  return _internal_parameter_number();
}
inline void HloBufferDonorProto_BufferDonorEntryProto::set_parameter_number(::int64_t value) {
  _internal_set_parameter_number(value);
  // @@protoc_insertion_point(field_set:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_number)
}
inline ::int64_t HloBufferDonorProto_BufferDonorEntryProto::_internal_parameter_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_number_;
}
inline void HloBufferDonorProto_BufferDonorEntryProto::_internal_set_parameter_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = value;
}

// repeated int64 parameter_shape_index = 2;
inline int HloBufferDonorProto_BufferDonorEntryProto::_internal_parameter_shape_index_size() const {
  return _internal_parameter_shape_index().size();
}
inline int HloBufferDonorProto_BufferDonorEntryProto::parameter_shape_index_size() const {
  return _internal_parameter_shape_index_size();
}
inline void HloBufferDonorProto_BufferDonorEntryProto::clear_parameter_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_shape_index_.Clear();
}
inline ::int64_t HloBufferDonorProto_BufferDonorEntryProto::parameter_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_shape_index)
  return _internal_parameter_shape_index().Get(index);
}
inline void HloBufferDonorProto_BufferDonorEntryProto::set_parameter_shape_index(int index, ::int64_t value) {
  _internal_mutable_parameter_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_shape_index)
}
inline void HloBufferDonorProto_BufferDonorEntryProto::add_parameter_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_parameter_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloBufferDonorProto_BufferDonorEntryProto::parameter_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_shape_index)
  return _internal_parameter_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloBufferDonorProto_BufferDonorEntryProto::mutable_parameter_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloBufferDonorProto.BufferDonorEntryProto.parameter_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_parameter_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloBufferDonorProto_BufferDonorEntryProto::_internal_parameter_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloBufferDonorProto_BufferDonorEntryProto::_internal_mutable_parameter_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.parameter_shape_index_;
}

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

// HloBufferDonorProto

// repeated .xla.HloBufferDonorProto.BufferDonorEntryProto entries = 1;
inline int HloBufferDonorProto::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int HloBufferDonorProto::entries_size() const {
  return _internal_entries_size();
}
inline void HloBufferDonorProto::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline ::xla::HloBufferDonorProto_BufferDonorEntryProto* HloBufferDonorProto::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloBufferDonorProto.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>* HloBufferDonorProto::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloBufferDonorProto.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::xla::HloBufferDonorProto_BufferDonorEntryProto& HloBufferDonorProto::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloBufferDonorProto.entries)
  return _internal_entries().Get(index);
}
inline ::xla::HloBufferDonorProto_BufferDonorEntryProto* HloBufferDonorProto::add_entries() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloBufferDonorProto_BufferDonorEntryProto* _add = _internal_mutable_entries()->Add();
  // @@protoc_insertion_point(field_add:xla.HloBufferDonorProto.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>& HloBufferDonorProto::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloBufferDonorProto.entries)
  return _internal_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>&
HloBufferDonorProto::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>*
HloBufferDonorProto::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

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

// CrossProgramPrefetch

// int64 parameter = 1;
inline void CrossProgramPrefetch::clear_parameter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_ = ::int64_t{0};
}
inline ::int64_t CrossProgramPrefetch::parameter() const {
  // @@protoc_insertion_point(field_get:xla.CrossProgramPrefetch.parameter)
  return _internal_parameter();
}
inline void CrossProgramPrefetch::set_parameter(::int64_t value) {
  _internal_set_parameter(value);
  // @@protoc_insertion_point(field_set:xla.CrossProgramPrefetch.parameter)
}
inline ::int64_t CrossProgramPrefetch::_internal_parameter() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_;
}
inline void CrossProgramPrefetch::_internal_set_parameter(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_ = value;
}

// repeated int64 index = 2;
inline int CrossProgramPrefetch::_internal_index_size() const {
  return _internal_index().size();
}
inline int CrossProgramPrefetch::index_size() const {
  return _internal_index_size();
}
inline void CrossProgramPrefetch::clear_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_.Clear();
}
inline ::int64_t CrossProgramPrefetch::index(int index) const {
  // @@protoc_insertion_point(field_get:xla.CrossProgramPrefetch.index)
  return _internal_index().Get(index);
}
inline void CrossProgramPrefetch::set_index(int index, ::int64_t value) {
  _internal_mutable_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.CrossProgramPrefetch.index)
}
inline void CrossProgramPrefetch::add_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.CrossProgramPrefetch.index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& CrossProgramPrefetch::index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.CrossProgramPrefetch.index)
  return _internal_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* CrossProgramPrefetch::mutable_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.CrossProgramPrefetch.index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
CrossProgramPrefetch::_internal_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* CrossProgramPrefetch::_internal_mutable_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.index_;
}

// int64 offset = 3;
inline void CrossProgramPrefetch::clear_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = ::int64_t{0};
}
inline ::int64_t CrossProgramPrefetch::offset() const {
  // @@protoc_insertion_point(field_get:xla.CrossProgramPrefetch.offset)
  return _internal_offset();
}
inline void CrossProgramPrefetch::set_offset(::int64_t value) {
  _internal_set_offset(value);
  // @@protoc_insertion_point(field_set:xla.CrossProgramPrefetch.offset)
}
inline ::int64_t CrossProgramPrefetch::_internal_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_;
}
inline void CrossProgramPrefetch::_internal_set_offset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = value;
}

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

// StackFrameIndexProto_FileLocation

// int32 file_name_id = 1;
inline void StackFrameIndexProto_FileLocation::clear_file_name_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_id_ = 0;
}
inline ::int32_t StackFrameIndexProto_FileLocation::file_name_id() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.file_name_id)
  return _internal_file_name_id();
}
inline void StackFrameIndexProto_FileLocation::set_file_name_id(::int32_t value) {
  _internal_set_file_name_id(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.file_name_id)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_file_name_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_id_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_file_name_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_id_ = value;
}

// int32 function_name_id = 2;
inline void StackFrameIndexProto_FileLocation::clear_function_name_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.function_name_id_ = 0;
}
inline ::int32_t StackFrameIndexProto_FileLocation::function_name_id() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.function_name_id)
  return _internal_function_name_id();
}
inline void StackFrameIndexProto_FileLocation::set_function_name_id(::int32_t value) {
  _internal_set_function_name_id(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.function_name_id)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_function_name_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.function_name_id_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_function_name_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.function_name_id_ = value;
}

// int32 line = 3;
inline void StackFrameIndexProto_FileLocation::clear_line() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.line_ = 0;
}
inline ::int32_t StackFrameIndexProto_FileLocation::line() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.line)
  return _internal_line();
}
inline void StackFrameIndexProto_FileLocation::set_line(::int32_t value) {
  _internal_set_line(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.line)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_line() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.line_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_line(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.line_ = value;
}

// int32 column = 4;
inline void StackFrameIndexProto_FileLocation::clear_column() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.column_ = 0;
}
inline ::int32_t StackFrameIndexProto_FileLocation::column() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.column)
  return _internal_column();
}
inline void StackFrameIndexProto_FileLocation::set_column(::int32_t value) {
  _internal_set_column(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.column)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_column() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.column_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_column(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.column_ = value;
}

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

// StackFrameIndexProto_StackFrame

// int32 file_location_id = 1;
inline void StackFrameIndexProto_StackFrame::clear_file_location_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_location_id_ = 0;
}
inline ::int32_t StackFrameIndexProto_StackFrame::file_location_id() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.StackFrame.file_location_id)
  return _internal_file_location_id();
}
inline void StackFrameIndexProto_StackFrame::set_file_location_id(::int32_t value) {
  _internal_set_file_location_id(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.StackFrame.file_location_id)
}
inline ::int32_t StackFrameIndexProto_StackFrame::_internal_file_location_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_location_id_;
}
inline void StackFrameIndexProto_StackFrame::_internal_set_file_location_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_location_id_ = value;
}

// int32 parent_frame_id = 2;
inline void StackFrameIndexProto_StackFrame::clear_parent_frame_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parent_frame_id_ = 0;
}
inline ::int32_t StackFrameIndexProto_StackFrame::parent_frame_id() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.StackFrame.parent_frame_id)
  return _internal_parent_frame_id();
}
inline void StackFrameIndexProto_StackFrame::set_parent_frame_id(::int32_t value) {
  _internal_set_parent_frame_id(value);
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.StackFrame.parent_frame_id)
}
inline ::int32_t StackFrameIndexProto_StackFrame::_internal_parent_frame_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parent_frame_id_;
}
inline void StackFrameIndexProto_StackFrame::_internal_set_parent_frame_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parent_frame_id_ = value;
}

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

// StackFrameIndexProto

// repeated string file_names = 1;
inline int StackFrameIndexProto::_internal_file_names_size() const {
  return _internal_file_names().size();
}
inline int StackFrameIndexProto::file_names_size() const {
  return _internal_file_names_size();
}
inline void StackFrameIndexProto::clear_file_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_names_.Clear();
}
inline std::string* StackFrameIndexProto::add_file_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_file_names()->Add();
  // @@protoc_insertion_point(field_add_mutable:xla.StackFrameIndexProto.file_names)
  return _s;
}
inline const std::string& StackFrameIndexProto::file_names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.file_names)
  return _internal_file_names().Get(index);
}
inline std::string* StackFrameIndexProto::mutable_file_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.StackFrameIndexProto.file_names)
  return _internal_mutable_file_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void StackFrameIndexProto::set_file_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_file_names()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.file_names)
}
template <typename Arg_, typename... Args_>
inline void StackFrameIndexProto::add_file_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_file_names(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:xla.StackFrameIndexProto.file_names)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
StackFrameIndexProto::file_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.StackFrameIndexProto.file_names)
  return _internal_file_names();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
StackFrameIndexProto::mutable_file_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.StackFrameIndexProto.file_names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_file_names();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
StackFrameIndexProto::_internal_file_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_names_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
StackFrameIndexProto::_internal_mutable_file_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.file_names_;
}

// repeated string function_names = 2;
inline int StackFrameIndexProto::_internal_function_names_size() const {
  return _internal_function_names().size();
}
inline int StackFrameIndexProto::function_names_size() const {
  return _internal_function_names_size();
}
inline void StackFrameIndexProto::clear_function_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.function_names_.Clear();
}
inline std::string* StackFrameIndexProto::add_function_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_function_names()->Add();
  // @@protoc_insertion_point(field_add_mutable:xla.StackFrameIndexProto.function_names)
  return _s;
}
inline const std::string& StackFrameIndexProto::function_names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.function_names)
  return _internal_function_names().Get(index);
}
inline std::string* StackFrameIndexProto::mutable_function_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.StackFrameIndexProto.function_names)
  return _internal_mutable_function_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void StackFrameIndexProto::set_function_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_function_names()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.function_names)
}
template <typename Arg_, typename... Args_>
inline void StackFrameIndexProto::add_function_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_function_names(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:xla.StackFrameIndexProto.function_names)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
StackFrameIndexProto::function_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.StackFrameIndexProto.function_names)
  return _internal_function_names();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
StackFrameIndexProto::mutable_function_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.StackFrameIndexProto.function_names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_function_names();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
StackFrameIndexProto::_internal_function_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.function_names_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
StackFrameIndexProto::_internal_mutable_function_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.function_names_;
}

// repeated .xla.StackFrameIndexProto.FileLocation file_locations = 3;
inline int StackFrameIndexProto::_internal_file_locations_size() const {
  return _internal_file_locations().size();
}
inline int StackFrameIndexProto::file_locations_size() const {
  return _internal_file_locations_size();
}
inline void StackFrameIndexProto::clear_file_locations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_locations_.Clear();
}
inline ::xla::StackFrameIndexProto_FileLocation* StackFrameIndexProto::mutable_file_locations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.StackFrameIndexProto.file_locations)
  return _internal_mutable_file_locations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>* StackFrameIndexProto::mutable_file_locations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.StackFrameIndexProto.file_locations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_file_locations();
}
inline const ::xla::StackFrameIndexProto_FileLocation& StackFrameIndexProto::file_locations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.file_locations)
  return _internal_file_locations().Get(index);
}
inline ::xla::StackFrameIndexProto_FileLocation* StackFrameIndexProto::add_file_locations() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::StackFrameIndexProto_FileLocation* _add = _internal_mutable_file_locations()->Add();
  // @@protoc_insertion_point(field_add:xla.StackFrameIndexProto.file_locations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>& StackFrameIndexProto::file_locations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.StackFrameIndexProto.file_locations)
  return _internal_file_locations();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>&
StackFrameIndexProto::_internal_file_locations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_locations_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>*
StackFrameIndexProto::_internal_mutable_file_locations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.file_locations_;
}

// repeated .xla.StackFrameIndexProto.StackFrame stack_frames = 4;
inline int StackFrameIndexProto::_internal_stack_frames_size() const {
  return _internal_stack_frames().size();
}
inline int StackFrameIndexProto::stack_frames_size() const {
  return _internal_stack_frames_size();
}
inline void StackFrameIndexProto::clear_stack_frames() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stack_frames_.Clear();
}
inline ::xla::StackFrameIndexProto_StackFrame* StackFrameIndexProto::mutable_stack_frames(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.StackFrameIndexProto.stack_frames)
  return _internal_mutable_stack_frames()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>* StackFrameIndexProto::mutable_stack_frames()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.StackFrameIndexProto.stack_frames)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_stack_frames();
}
inline const ::xla::StackFrameIndexProto_StackFrame& StackFrameIndexProto::stack_frames(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.stack_frames)
  return _internal_stack_frames().Get(index);
}
inline ::xla::StackFrameIndexProto_StackFrame* StackFrameIndexProto::add_stack_frames() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::StackFrameIndexProto_StackFrame* _add = _internal_mutable_stack_frames()->Add();
  // @@protoc_insertion_point(field_add:xla.StackFrameIndexProto.stack_frames)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>& StackFrameIndexProto::stack_frames() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.StackFrameIndexProto.stack_frames)
  return _internal_stack_frames();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>&
StackFrameIndexProto::_internal_stack_frames() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stack_frames_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>*
StackFrameIndexProto::_internal_mutable_stack_frames() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.stack_frames_;
}

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

// HloModuleProto_ProfileInfo

// .xla.HloModuleProto.ProfileType profile_type = 1;
inline void HloModuleProto_ProfileInfo::clear_profile_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_type_ = 0;
}
inline ::xla::HloModuleProto_ProfileType HloModuleProto_ProfileInfo::profile_type() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.profile_type)
  return _internal_profile_type();
}
inline void HloModuleProto_ProfileInfo::set_profile_type(::xla::HloModuleProto_ProfileType value) {
  _internal_set_profile_type(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.profile_type)
}
inline ::xla::HloModuleProto_ProfileType HloModuleProto_ProfileInfo::_internal_profile_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::HloModuleProto_ProfileType>(_impl_.profile_type_);
}
inline void HloModuleProto_ProfileInfo::_internal_set_profile_type(::xla::HloModuleProto_ProfileType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_type_ = value;
}

// double relative_speedup = 2;
inline void HloModuleProto_ProfileInfo::clear_relative_speedup() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.relative_speedup_ = 0;
}
inline double HloModuleProto_ProfileInfo::relative_speedup() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.relative_speedup)
  return _internal_relative_speedup();
}
inline void HloModuleProto_ProfileInfo::set_relative_speedup(double value) {
  _internal_set_relative_speedup(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.relative_speedup)
}
inline double HloModuleProto_ProfileInfo::_internal_relative_speedup() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.relative_speedup_;
}
inline void HloModuleProto_ProfileInfo::_internal_set_relative_speedup(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.relative_speedup_ = value;
}

// .xla.ProfileSource profile_source = 3;
inline void HloModuleProto_ProfileInfo::clear_profile_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_source_ = 0;
}
inline ::xla::ProfileSource HloModuleProto_ProfileInfo::profile_source() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.profile_source)
  return _internal_profile_source();
}
inline void HloModuleProto_ProfileInfo::set_profile_source(::xla::ProfileSource value) {
  _internal_set_profile_source(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.profile_source)
}
inline ::xla::ProfileSource HloModuleProto_ProfileInfo::_internal_profile_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ProfileSource>(_impl_.profile_source_);
}
inline void HloModuleProto_ProfileInfo::_internal_set_profile_source(::xla::ProfileSource value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_source_ = value;
}

// .xla.CompilationEvent compilation_event = 4;
inline void HloModuleProto_ProfileInfo::clear_compilation_event() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_event_ = 0;
}
inline ::xla::CompilationEvent HloModuleProto_ProfileInfo::compilation_event() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.compilation_event)
  return _internal_compilation_event();
}
inline void HloModuleProto_ProfileInfo::set_compilation_event(::xla::CompilationEvent value) {
  _internal_set_compilation_event(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.compilation_event)
}
inline ::xla::CompilationEvent HloModuleProto_ProfileInfo::_internal_compilation_event() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CompilationEvent>(_impl_.compilation_event_);
}
inline void HloModuleProto_ProfileInfo::_internal_set_compilation_event(::xla::CompilationEvent value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_event_ = value;
}

// string fingerprint = 5;
inline void HloModuleProto_ProfileInfo::clear_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fingerprint_.ClearToEmpty();
}
inline const std::string& HloModuleProto_ProfileInfo::fingerprint() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.fingerprint)
  return _internal_fingerprint();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloModuleProto_ProfileInfo::set_fingerprint(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fingerprint_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.fingerprint)
}
inline std::string* HloModuleProto_ProfileInfo::mutable_fingerprint() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_fingerprint();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.ProfileInfo.fingerprint)
  return _s;
}
inline const std::string& HloModuleProto_ProfileInfo::_internal_fingerprint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fingerprint_.Get();
}
inline void HloModuleProto_ProfileInfo::_internal_set_fingerprint(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fingerprint_.Set(value, GetArena());
}
inline std::string* HloModuleProto_ProfileInfo::_internal_mutable_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.fingerprint_.Mutable( GetArena());
}
inline std::string* HloModuleProto_ProfileInfo::release_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.ProfileInfo.fingerprint)
  return _impl_.fingerprint_.Release();
}
inline void HloModuleProto_ProfileInfo::set_allocated_fingerprint(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fingerprint_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.fingerprint_.IsDefault()) {
          _impl_.fingerprint_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.ProfileInfo.fingerprint)
}

// .xla.HloModuleProto.ProfileGenerationStrategy profile_generation_strategy = 6;
inline void HloModuleProto_ProfileInfo::clear_profile_generation_strategy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_generation_strategy_ = 0;
}
inline ::xla::HloModuleProto_ProfileGenerationStrategy HloModuleProto_ProfileInfo::profile_generation_strategy() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.profile_generation_strategy)
  return _internal_profile_generation_strategy();
}
inline void HloModuleProto_ProfileInfo::set_profile_generation_strategy(::xla::HloModuleProto_ProfileGenerationStrategy value) {
  _internal_set_profile_generation_strategy(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.profile_generation_strategy)
}
inline ::xla::HloModuleProto_ProfileGenerationStrategy HloModuleProto_ProfileInfo::_internal_profile_generation_strategy() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::HloModuleProto_ProfileGenerationStrategy>(_impl_.profile_generation_strategy_);
}
inline void HloModuleProto_ProfileInfo::_internal_set_profile_generation_strategy(::xla::HloModuleProto_ProfileGenerationStrategy value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_generation_strategy_ = value;
}

// int64 original_changelist = 7;
inline void HloModuleProto_ProfileInfo::clear_original_changelist() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_changelist_ = ::int64_t{0};
}
inline ::int64_t HloModuleProto_ProfileInfo::original_changelist() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.original_changelist)
  return _internal_original_changelist();
}
inline void HloModuleProto_ProfileInfo::set_original_changelist(::int64_t value) {
  _internal_set_original_changelist(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.original_changelist)
}
inline ::int64_t HloModuleProto_ProfileInfo::_internal_original_changelist() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.original_changelist_;
}
inline void HloModuleProto_ProfileInfo::_internal_set_original_changelist(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_changelist_ = value;
}

// int64 changelist = 8;
inline void HloModuleProto_ProfileInfo::clear_changelist() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changelist_ = ::int64_t{0};
}
inline ::int64_t HloModuleProto_ProfileInfo::changelist() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.ProfileInfo.changelist)
  return _internal_changelist();
}
inline void HloModuleProto_ProfileInfo::set_changelist(::int64_t value) {
  _internal_set_changelist(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.changelist)
}
inline ::int64_t HloModuleProto_ProfileInfo::_internal_changelist() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.changelist_;
}
inline void HloModuleProto_ProfileInfo::_internal_set_changelist(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changelist_ = value;
}

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

// HloModuleProto

// string name = 1;
inline void HloModuleProto::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& HloModuleProto::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloModuleProto::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.name)
}
inline std::string* HloModuleProto::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.name)
  return _s;
}
inline const std::string& HloModuleProto::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void HloModuleProto::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline std::string* HloModuleProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* HloModuleProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.name)
  return _impl_.name_.Release();
}
inline void HloModuleProto::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.name)
}

// string entry_computation_name = 2;
inline void HloModuleProto::clear_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_name_.ClearToEmpty();
}
inline const std::string& HloModuleProto::entry_computation_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.entry_computation_name)
  return _internal_entry_computation_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloModuleProto::set_entry_computation_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.entry_computation_name)
}
inline std::string* HloModuleProto::mutable_entry_computation_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_entry_computation_name();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.entry_computation_name)
  return _s;
}
inline const std::string& HloModuleProto::_internal_entry_computation_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entry_computation_name_.Get();
}
inline void HloModuleProto::_internal_set_entry_computation_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_name_.Set(value, GetArena());
}
inline std::string* HloModuleProto::_internal_mutable_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.entry_computation_name_.Mutable( GetArena());
}
inline std::string* HloModuleProto::release_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.entry_computation_name)
  return _impl_.entry_computation_name_.Release();
}
inline void HloModuleProto::set_allocated_entry_computation_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.entry_computation_name_.IsDefault()) {
          _impl_.entry_computation_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.entry_computation_name)
}

// int64 entry_computation_id = 6;
inline void HloModuleProto::clear_entry_computation_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_id_ = ::int64_t{0};
}
inline ::int64_t HloModuleProto::entry_computation_id() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.entry_computation_id)
  return _internal_entry_computation_id();
}
inline void HloModuleProto::set_entry_computation_id(::int64_t value) {
  _internal_set_entry_computation_id(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.entry_computation_id)
}
inline ::int64_t HloModuleProto::_internal_entry_computation_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entry_computation_id_;
}
inline void HloModuleProto::_internal_set_entry_computation_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_id_ = value;
}

// repeated .xla.HloComputationProto computations = 3;
inline int HloModuleProto::_internal_computations_size() const {
  return _internal_computations().size();
}
inline int HloModuleProto::computations_size() const {
  return _internal_computations_size();
}
inline void HloModuleProto::clear_computations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computations_.Clear();
}
inline ::xla::HloComputationProto* HloModuleProto::mutable_computations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.computations)
  return _internal_mutable_computations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>* HloModuleProto::mutable_computations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleProto.computations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_computations();
}
inline const ::xla::HloComputationProto& HloModuleProto::computations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.computations)
  return _internal_computations().Get(index);
}
inline ::xla::HloComputationProto* HloModuleProto::add_computations() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloComputationProto* _add = _internal_mutable_computations()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleProto.computations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>& HloModuleProto::computations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleProto.computations)
  return _internal_computations();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>&
HloModuleProto::_internal_computations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.computations_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>*
HloModuleProto::_internal_mutable_computations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.computations_;
}

// .xla.ProgramShapeProto host_program_shape = 4;
inline bool HloModuleProto::has_host_program_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.host_program_shape_ != nullptr);
  return value;
}
inline const ::xla::ProgramShapeProto& HloModuleProto::_internal_host_program_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ProgramShapeProto* p = _impl_.host_program_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ProgramShapeProto&>(::xla::_ProgramShapeProto_default_instance_);
}
inline const ::xla::ProgramShapeProto& HloModuleProto::host_program_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.host_program_shape)
  return _internal_host_program_shape();
}
inline void HloModuleProto::unsafe_arena_set_allocated_host_program_shape(::xla::ProgramShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.host_program_shape_);
  }
  _impl_.host_program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.host_program_shape)
}
inline ::xla::ProgramShapeProto* HloModuleProto::release_host_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ProgramShapeProto* released = _impl_.host_program_shape_;
  _impl_.host_program_shape_ = 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::ProgramShapeProto* HloModuleProto::unsafe_arena_release_host_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.host_program_shape)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ProgramShapeProto* temp = _impl_.host_program_shape_;
  _impl_.host_program_shape_ = nullptr;
  return temp;
}
inline ::xla::ProgramShapeProto* HloModuleProto::_internal_mutable_host_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.host_program_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ProgramShapeProto>(GetArena());
    _impl_.host_program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(p);
  }
  return _impl_.host_program_shape_;
}
inline ::xla::ProgramShapeProto* HloModuleProto::mutable_host_program_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ProgramShapeProto* _msg = _internal_mutable_host_program_shape();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.host_program_shape)
  return _msg;
}
inline void HloModuleProto::set_allocated_host_program_shape(::xla::ProgramShapeProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.host_program_shape_);
  }

  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_.host_program_shape_ = reinterpret_cast<::xla::ProgramShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.host_program_shape)
}

// int64 id = 5;
inline void HloModuleProto::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
}
inline ::int64_t HloModuleProto::id() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.id)
  return _internal_id();
}
inline void HloModuleProto::set_id(::int64_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.id)
}
inline ::int64_t HloModuleProto::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void HloModuleProto::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// .xla.HloScheduleProto schedule = 7;
inline bool HloModuleProto::has_schedule() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.schedule_ != nullptr);
  return value;
}
inline void HloModuleProto::clear_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.schedule_ != nullptr) _impl_.schedule_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::HloScheduleProto& HloModuleProto::_internal_schedule() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloScheduleProto* p = _impl_.schedule_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloScheduleProto&>(::xla::_HloScheduleProto_default_instance_);
}
inline const ::xla::HloScheduleProto& HloModuleProto::schedule() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.schedule)
  return _internal_schedule();
}
inline void HloModuleProto::unsafe_arena_set_allocated_schedule(::xla::HloScheduleProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.schedule_);
  }
  _impl_.schedule_ = reinterpret_cast<::xla::HloScheduleProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.schedule)
}
inline ::xla::HloScheduleProto* HloModuleProto::release_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::HloScheduleProto* released = _impl_.schedule_;
  _impl_.schedule_ = 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::HloScheduleProto* HloModuleProto::unsafe_arena_release_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.schedule)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::HloScheduleProto* temp = _impl_.schedule_;
  _impl_.schedule_ = nullptr;
  return temp;
}
inline ::xla::HloScheduleProto* HloModuleProto::_internal_mutable_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.schedule_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloScheduleProto>(GetArena());
    _impl_.schedule_ = reinterpret_cast<::xla::HloScheduleProto*>(p);
  }
  return _impl_.schedule_;
}
inline ::xla::HloScheduleProto* HloModuleProto::mutable_schedule() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::HloScheduleProto* _msg = _internal_mutable_schedule();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.schedule)
  return _msg;
}
inline void HloModuleProto::set_allocated_schedule(::xla::HloScheduleProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.schedule_);
  }

  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_.schedule_ = reinterpret_cast<::xla::HloScheduleProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.schedule)
}

// .xla.HloInputOutputAliasProto input_output_alias = 8;
inline bool HloModuleProto::has_input_output_alias() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.input_output_alias_ != nullptr);
  return value;
}
inline void HloModuleProto::clear_input_output_alias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_output_alias_ != nullptr) _impl_.input_output_alias_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::HloInputOutputAliasProto& HloModuleProto::_internal_input_output_alias() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloInputOutputAliasProto* p = _impl_.input_output_alias_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloInputOutputAliasProto&>(::xla::_HloInputOutputAliasProto_default_instance_);
}
inline const ::xla::HloInputOutputAliasProto& HloModuleProto::input_output_alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.input_output_alias)
  return _internal_input_output_alias();
}
inline void HloModuleProto::unsafe_arena_set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_output_alias_);
  }
  _impl_.input_output_alias_ = reinterpret_cast<::xla::HloInputOutputAliasProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.input_output_alias)
}
inline ::xla::HloInputOutputAliasProto* HloModuleProto::release_input_output_alias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::HloInputOutputAliasProto* released = _impl_.input_output_alias_;
  _impl_.input_output_alias_ = 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::HloInputOutputAliasProto* HloModuleProto::unsafe_arena_release_input_output_alias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.input_output_alias)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::HloInputOutputAliasProto* temp = _impl_.input_output_alias_;
  _impl_.input_output_alias_ = nullptr;
  return temp;
}
inline ::xla::HloInputOutputAliasProto* HloModuleProto::_internal_mutable_input_output_alias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_output_alias_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloInputOutputAliasProto>(GetArena());
    _impl_.input_output_alias_ = reinterpret_cast<::xla::HloInputOutputAliasProto*>(p);
  }
  return _impl_.input_output_alias_;
}
inline ::xla::HloInputOutputAliasProto* HloModuleProto::mutable_input_output_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::HloInputOutputAliasProto* _msg = _internal_mutable_input_output_alias();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.input_output_alias)
  return _msg;
}
inline void HloModuleProto::set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.input_output_alias_);
  }

  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_.input_output_alias_ = reinterpret_cast<::xla::HloInputOutputAliasProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.input_output_alias)
}

// .xla.HloBufferDonorProto buffer_donor = 18;
inline bool HloModuleProto::has_buffer_donor() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_donor_ != nullptr);
  return value;
}
inline void HloModuleProto::clear_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_donor_ != nullptr) _impl_.buffer_donor_->Clear();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline const ::xla::HloBufferDonorProto& HloModuleProto::_internal_buffer_donor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloBufferDonorProto* p = _impl_.buffer_donor_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloBufferDonorProto&>(::xla::_HloBufferDonorProto_default_instance_);
}
inline const ::xla::HloBufferDonorProto& HloModuleProto::buffer_donor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.buffer_donor)
  return _internal_buffer_donor();
}
inline void HloModuleProto::unsafe_arena_set_allocated_buffer_donor(::xla::HloBufferDonorProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_donor_);
  }
  _impl_.buffer_donor_ = reinterpret_cast<::xla::HloBufferDonorProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.buffer_donor)
}
inline ::xla::HloBufferDonorProto* HloModuleProto::release_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::HloBufferDonorProto* released = _impl_.buffer_donor_;
  _impl_.buffer_donor_ = 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::HloBufferDonorProto* HloModuleProto::unsafe_arena_release_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.buffer_donor)

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::HloBufferDonorProto* temp = _impl_.buffer_donor_;
  _impl_.buffer_donor_ = nullptr;
  return temp;
}
inline ::xla::HloBufferDonorProto* HloModuleProto::_internal_mutable_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_donor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloBufferDonorProto>(GetArena());
    _impl_.buffer_donor_ = reinterpret_cast<::xla::HloBufferDonorProto*>(p);
  }
  return _impl_.buffer_donor_;
}
inline ::xla::HloBufferDonorProto* HloModuleProto::mutable_buffer_donor() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::xla::HloBufferDonorProto* _msg = _internal_mutable_buffer_donor();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.buffer_donor)
  return _msg;
}
inline void HloModuleProto::set_allocated_buffer_donor(::xla::HloBufferDonorProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.buffer_donor_);
  }

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

  _impl_.buffer_donor_ = reinterpret_cast<::xla::HloBufferDonorProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.buffer_donor)
}

// repeated .xla.CrossProgramPrefetch cross_program_prefetches = 10;
inline int HloModuleProto::_internal_cross_program_prefetches_size() const {
  return _internal_cross_program_prefetches().size();
}
inline int HloModuleProto::cross_program_prefetches_size() const {
  return _internal_cross_program_prefetches_size();
}
inline void HloModuleProto::clear_cross_program_prefetches() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.cross_program_prefetches_.Clear();
}
inline ::xla::CrossProgramPrefetch* HloModuleProto::mutable_cross_program_prefetches(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.cross_program_prefetches)
  return _internal_mutable_cross_program_prefetches()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>* HloModuleProto::mutable_cross_program_prefetches()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleProto.cross_program_prefetches)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_cross_program_prefetches();
}
inline const ::xla::CrossProgramPrefetch& HloModuleProto::cross_program_prefetches(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.cross_program_prefetches)
  return _internal_cross_program_prefetches().Get(index);
}
inline ::xla::CrossProgramPrefetch* HloModuleProto::add_cross_program_prefetches() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::CrossProgramPrefetch* _add = _internal_mutable_cross_program_prefetches()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleProto.cross_program_prefetches)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>& HloModuleProto::cross_program_prefetches() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleProto.cross_program_prefetches)
  return _internal_cross_program_prefetches();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>&
HloModuleProto::_internal_cross_program_prefetches() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.cross_program_prefetches_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>*
HloModuleProto::_internal_mutable_cross_program_prefetches() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.cross_program_prefetches_;
}

// bool is_dynamic = 11;
inline void HloModuleProto::clear_is_dynamic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_dynamic_ = false;
}
inline bool HloModuleProto::is_dynamic() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.is_dynamic)
  return _internal_is_dynamic();
}
inline void HloModuleProto::set_is_dynamic(bool value) {
  _internal_set_is_dynamic(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.is_dynamic)
}
inline bool HloModuleProto::_internal_is_dynamic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_dynamic_;
}
inline void HloModuleProto::_internal_set_is_dynamic(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_dynamic_ = value;
}

// .xla.OpSharding spmd_output_sharding = 12;
inline bool HloModuleProto::has_spmd_output_sharding() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.spmd_output_sharding_ != nullptr);
  return value;
}
inline const ::xla::OpSharding& HloModuleProto::_internal_spmd_output_sharding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpSharding* p = _impl_.spmd_output_sharding_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpSharding&>(::xla::_OpSharding_default_instance_);
}
inline const ::xla::OpSharding& HloModuleProto::spmd_output_sharding() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.spmd_output_sharding)
  return _internal_spmd_output_sharding();
}
inline void HloModuleProto::unsafe_arena_set_allocated_spmd_output_sharding(::xla::OpSharding* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.spmd_output_sharding_);
  }
  _impl_.spmd_output_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.spmd_output_sharding)
}
inline ::xla::OpSharding* HloModuleProto::release_spmd_output_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::OpSharding* released = _impl_.spmd_output_sharding_;
  _impl_.spmd_output_sharding_ = 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::OpSharding* HloModuleProto::unsafe_arena_release_spmd_output_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.spmd_output_sharding)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::OpSharding* temp = _impl_.spmd_output_sharding_;
  _impl_.spmd_output_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* HloModuleProto::_internal_mutable_spmd_output_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.spmd_output_sharding_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpSharding>(GetArena());
    _impl_.spmd_output_sharding_ = reinterpret_cast<::xla::OpSharding*>(p);
  }
  return _impl_.spmd_output_sharding_;
}
inline ::xla::OpSharding* HloModuleProto::mutable_spmd_output_sharding() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::OpSharding* _msg = _internal_mutable_spmd_output_sharding();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.spmd_output_sharding)
  return _msg;
}
inline void HloModuleProto::set_allocated_spmd_output_sharding(::xla::OpSharding* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.spmd_output_sharding_);
  }

  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] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }

  _impl_.spmd_output_sharding_ = reinterpret_cast<::xla::OpSharding*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.spmd_output_sharding)
}

// repeated .xla.OpSharding spmd_parameters_shardings = 14;
inline int HloModuleProto::_internal_spmd_parameters_shardings_size() const {
  return _internal_spmd_parameters_shardings().size();
}
inline int HloModuleProto::spmd_parameters_shardings_size() const {
  return _internal_spmd_parameters_shardings_size();
}
inline ::xla::OpSharding* HloModuleProto::mutable_spmd_parameters_shardings(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.spmd_parameters_shardings)
  return _internal_mutable_spmd_parameters_shardings()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* HloModuleProto::mutable_spmd_parameters_shardings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleProto.spmd_parameters_shardings)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_spmd_parameters_shardings();
}
inline const ::xla::OpSharding& HloModuleProto::spmd_parameters_shardings(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.spmd_parameters_shardings)
  return _internal_spmd_parameters_shardings().Get(index);
}
inline ::xla::OpSharding* HloModuleProto::add_spmd_parameters_shardings() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OpSharding* _add = _internal_mutable_spmd_parameters_shardings()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleProto.spmd_parameters_shardings)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& HloModuleProto::spmd_parameters_shardings() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleProto.spmd_parameters_shardings)
  return _internal_spmd_parameters_shardings();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>&
HloModuleProto::_internal_spmd_parameters_shardings() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.spmd_parameters_shardings_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpSharding>*
HloModuleProto::_internal_mutable_spmd_parameters_shardings() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.spmd_parameters_shardings_;
}

// bool use_auto_spmd_partitioning = 16;
inline void HloModuleProto::clear_use_auto_spmd_partitioning() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_auto_spmd_partitioning_ = false;
}
inline bool HloModuleProto::use_auto_spmd_partitioning() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.use_auto_spmd_partitioning)
  return _internal_use_auto_spmd_partitioning();
}
inline void HloModuleProto::set_use_auto_spmd_partitioning(bool value) {
  _internal_set_use_auto_spmd_partitioning(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.use_auto_spmd_partitioning)
}
inline bool HloModuleProto::_internal_use_auto_spmd_partitioning() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_auto_spmd_partitioning_;
}
inline void HloModuleProto::_internal_set_use_auto_spmd_partitioning(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_auto_spmd_partitioning_ = value;
}

// repeated .xla.HloModuleProto.ProfileInfo profile_info = 13;
inline int HloModuleProto::_internal_profile_info_size() const {
  return _internal_profile_info().size();
}
inline int HloModuleProto::profile_info_size() const {
  return _internal_profile_info_size();
}
inline void HloModuleProto::clear_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_info_.Clear();
}
inline ::xla::HloModuleProto_ProfileInfo* HloModuleProto::mutable_profile_info(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.profile_info)
  return _internal_mutable_profile_info()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>* HloModuleProto::mutable_profile_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleProto.profile_info)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_profile_info();
}
inline const ::xla::HloModuleProto_ProfileInfo& HloModuleProto::profile_info(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.profile_info)
  return _internal_profile_info().Get(index);
}
inline ::xla::HloModuleProto_ProfileInfo* HloModuleProto::add_profile_info() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloModuleProto_ProfileInfo* _add = _internal_mutable_profile_info()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleProto.profile_info)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>& HloModuleProto::profile_info() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleProto.profile_info)
  return _internal_profile_info();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>&
HloModuleProto::_internal_profile_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_info_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>*
HloModuleProto::_internal_mutable_profile_info() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.profile_info_;
}

// .xla.DeviceAssignmentProto device_assignment = 15;
inline bool HloModuleProto::has_device_assignment() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.device_assignment_ != nullptr);
  return value;
}
inline const ::xla::DeviceAssignmentProto& HloModuleProto::_internal_device_assignment() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::DeviceAssignmentProto* p = _impl_.device_assignment_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::DeviceAssignmentProto&>(::xla::_DeviceAssignmentProto_default_instance_);
}
inline const ::xla::DeviceAssignmentProto& HloModuleProto::device_assignment() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.device_assignment)
  return _internal_device_assignment();
}
inline void HloModuleProto::unsafe_arena_set_allocated_device_assignment(::xla::DeviceAssignmentProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.device_assignment_);
  }
  _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.device_assignment)
}
inline ::xla::DeviceAssignmentProto* HloModuleProto::release_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::DeviceAssignmentProto* released = _impl_.device_assignment_;
  _impl_.device_assignment_ = 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::DeviceAssignmentProto* HloModuleProto::unsafe_arena_release_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.device_assignment)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::DeviceAssignmentProto* temp = _impl_.device_assignment_;
  _impl_.device_assignment_ = nullptr;
  return temp;
}
inline ::xla::DeviceAssignmentProto* HloModuleProto::_internal_mutable_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.device_assignment_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::DeviceAssignmentProto>(GetArena());
    _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(p);
  }
  return _impl_.device_assignment_;
}
inline ::xla::DeviceAssignmentProto* HloModuleProto::mutable_device_assignment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::DeviceAssignmentProto* _msg = _internal_mutable_device_assignment();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.device_assignment)
  return _msg;
}
inline void HloModuleProto::set_allocated_device_assignment(::xla::DeviceAssignmentProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.device_assignment_);
  }

  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] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.device_assignment)
}

// .xla.StackFrameIndexProto stack_frame_index = 17;
inline bool HloModuleProto::has_stack_frame_index() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.stack_frame_index_ != nullptr);
  return value;
}
inline void HloModuleProto::clear_stack_frame_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.stack_frame_index_ != nullptr) _impl_.stack_frame_index_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const ::xla::StackFrameIndexProto& HloModuleProto::_internal_stack_frame_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::StackFrameIndexProto* p = _impl_.stack_frame_index_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::StackFrameIndexProto&>(::xla::_StackFrameIndexProto_default_instance_);
}
inline const ::xla::StackFrameIndexProto& HloModuleProto::stack_frame_index() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.stack_frame_index)
  return _internal_stack_frame_index();
}
inline void HloModuleProto::unsafe_arena_set_allocated_stack_frame_index(::xla::StackFrameIndexProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.stack_frame_index_);
  }
  _impl_.stack_frame_index_ = reinterpret_cast<::xla::StackFrameIndexProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.stack_frame_index)
}
inline ::xla::StackFrameIndexProto* HloModuleProto::release_stack_frame_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::StackFrameIndexProto* released = _impl_.stack_frame_index_;
  _impl_.stack_frame_index_ = 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::StackFrameIndexProto* HloModuleProto::unsafe_arena_release_stack_frame_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.stack_frame_index)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::StackFrameIndexProto* temp = _impl_.stack_frame_index_;
  _impl_.stack_frame_index_ = nullptr;
  return temp;
}
inline ::xla::StackFrameIndexProto* HloModuleProto::_internal_mutable_stack_frame_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.stack_frame_index_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::StackFrameIndexProto>(GetArena());
    _impl_.stack_frame_index_ = reinterpret_cast<::xla::StackFrameIndexProto*>(p);
  }
  return _impl_.stack_frame_index_;
}
inline ::xla::StackFrameIndexProto* HloModuleProto::mutable_stack_frame_index() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::StackFrameIndexProto* _msg = _internal_mutable_stack_frame_index();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.stack_frame_index)
  return _msg;
}
inline void HloModuleProto::set_allocated_stack_frame_index(::xla::StackFrameIndexProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.stack_frame_index_);
  }

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

  _impl_.stack_frame_index_ = reinterpret_cast<::xla::StackFrameIndexProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.stack_frame_index)
}

// .xla.FrontendAttributes frontend_attributes = 19;
inline bool HloModuleProto::has_frontend_attributes() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.frontend_attributes_ != nullptr);
  return value;
}
inline const ::xla::FrontendAttributes& HloModuleProto::_internal_frontend_attributes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::FrontendAttributes* p = _impl_.frontend_attributes_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::FrontendAttributes&>(::xla::_FrontendAttributes_default_instance_);
}
inline const ::xla::FrontendAttributes& HloModuleProto::frontend_attributes() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.frontend_attributes)
  return _internal_frontend_attributes();
}
inline void HloModuleProto::unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }
  _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.frontend_attributes)
}
inline ::xla::FrontendAttributes* HloModuleProto::release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::FrontendAttributes* released = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = 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::FrontendAttributes* HloModuleProto::unsafe_arena_release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.frontend_attributes)

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::FrontendAttributes* temp = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  return temp;
}
inline ::xla::FrontendAttributes* HloModuleProto::_internal_mutable_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.frontend_attributes_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::FrontendAttributes>(GetArena());
    _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(p);
  }
  return _impl_.frontend_attributes_;
}
inline ::xla::FrontendAttributes* HloModuleProto::mutable_frontend_attributes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000080u;
  ::xla::FrontendAttributes* _msg = _internal_mutable_frontend_attributes();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.frontend_attributes)
  return _msg;
}
inline void HloModuleProto::set_allocated_frontend_attributes(::xla::FrontendAttributes* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }

  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] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }

  _impl_.frontend_attributes_ = reinterpret_cast<::xla::FrontendAttributes*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.frontend_attributes)
}

// .xla.OriginalValueRecoveryTableProto original_value_recovery_table = 20;
inline bool HloModuleProto::has_original_value_recovery_table() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.original_value_recovery_table_ != nullptr);
  return value;
}
inline void HloModuleProto::clear_original_value_recovery_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.original_value_recovery_table_ != nullptr) _impl_.original_value_recovery_table_->Clear();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline const ::xla::OriginalValueRecoveryTableProto& HloModuleProto::_internal_original_value_recovery_table() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalValueRecoveryTableProto* p = _impl_.original_value_recovery_table_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalValueRecoveryTableProto&>(::xla::_OriginalValueRecoveryTableProto_default_instance_);
}
inline const ::xla::OriginalValueRecoveryTableProto& HloModuleProto::original_value_recovery_table() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleProto.original_value_recovery_table)
  return _internal_original_value_recovery_table();
}
inline void HloModuleProto::unsafe_arena_set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.original_value_recovery_table_);
  }
  _impl_.original_value_recovery_table_ = reinterpret_cast<::xla::OriginalValueRecoveryTableProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.original_value_recovery_table)
}
inline ::xla::OriginalValueRecoveryTableProto* HloModuleProto::release_original_value_recovery_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::OriginalValueRecoveryTableProto* released = _impl_.original_value_recovery_table_;
  _impl_.original_value_recovery_table_ = 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::OriginalValueRecoveryTableProto* HloModuleProto::unsafe_arena_release_original_value_recovery_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.original_value_recovery_table)

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::OriginalValueRecoveryTableProto* temp = _impl_.original_value_recovery_table_;
  _impl_.original_value_recovery_table_ = nullptr;
  return temp;
}
inline ::xla::OriginalValueRecoveryTableProto* HloModuleProto::_internal_mutable_original_value_recovery_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.original_value_recovery_table_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalValueRecoveryTableProto>(GetArena());
    _impl_.original_value_recovery_table_ = reinterpret_cast<::xla::OriginalValueRecoveryTableProto*>(p);
  }
  return _impl_.original_value_recovery_table_;
}
inline ::xla::OriginalValueRecoveryTableProto* HloModuleProto::mutable_original_value_recovery_table() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000100u;
  ::xla::OriginalValueRecoveryTableProto* _msg = _internal_mutable_original_value_recovery_table();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.original_value_recovery_table)
  return _msg;
}
inline void HloModuleProto::set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.original_value_recovery_table_);
  }

  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] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }

  _impl_.original_value_recovery_table_ = reinterpret_cast<::xla::OriginalValueRecoveryTableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.original_value_recovery_table)
}

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

// LogicalBufferProto_Location

// string instruction_name = 2 [deprecated = true];
inline void LogicalBufferProto_Location::clear_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.ClearToEmpty();
}
inline const std::string& LogicalBufferProto_Location::instruction_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.Location.instruction_name)
  return _internal_instruction_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void LogicalBufferProto_Location::set_instruction_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.Location.instruction_name)
}
inline std::string* LogicalBufferProto_Location::mutable_instruction_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_instruction_name();
  // @@protoc_insertion_point(field_mutable:xla.LogicalBufferProto.Location.instruction_name)
  return _s;
}
inline const std::string& LogicalBufferProto_Location::_internal_instruction_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_name_.Get();
}
inline void LogicalBufferProto_Location::_internal_set_instruction_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.Set(value, GetArena());
}
inline std::string* LogicalBufferProto_Location::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline std::string* LogicalBufferProto_Location::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LogicalBufferProto.Location.instruction_name)
  return _impl_.instruction_name_.Release();
}
inline void LogicalBufferProto_Location::set_allocated_instruction_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.instruction_name_.IsDefault()) {
          _impl_.instruction_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.LogicalBufferProto.Location.instruction_name)
}

// int64 instruction_id = 4;
inline void LogicalBufferProto_Location::clear_instruction_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_id_ = ::int64_t{0};
}
inline ::int64_t LogicalBufferProto_Location::instruction_id() const {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.Location.instruction_id)
  return _internal_instruction_id();
}
inline void LogicalBufferProto_Location::set_instruction_id(::int64_t value) {
  _internal_set_instruction_id(value);
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.Location.instruction_id)
}
inline ::int64_t LogicalBufferProto_Location::_internal_instruction_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_id_;
}
inline void LogicalBufferProto_Location::_internal_set_instruction_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_id_ = value;
}

// repeated int64 shape_index = 3;
inline int LogicalBufferProto_Location::_internal_shape_index_size() const {
  return _internal_shape_index().size();
}
inline int LogicalBufferProto_Location::shape_index_size() const {
  return _internal_shape_index_size();
}
inline void LogicalBufferProto_Location::clear_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_index_.Clear();
}
inline ::int64_t LogicalBufferProto_Location::shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.Location.shape_index)
  return _internal_shape_index().Get(index);
}
inline void LogicalBufferProto_Location::set_shape_index(int index, ::int64_t value) {
  _internal_mutable_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.Location.shape_index)
}
inline void LogicalBufferProto_Location::add_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LogicalBufferProto.Location.shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& LogicalBufferProto_Location::shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LogicalBufferProto.Location.shape_index)
  return _internal_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* LogicalBufferProto_Location::mutable_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LogicalBufferProto.Location.shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
LogicalBufferProto_Location::_internal_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* LogicalBufferProto_Location::_internal_mutable_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_index_;
}

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

// LogicalBufferProto

// int64 id = 1;
inline void LogicalBufferProto::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
}
inline ::int64_t LogicalBufferProto::id() const {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.id)
  return _internal_id();
}
inline void LogicalBufferProto::set_id(::int64_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.id)
}
inline ::int64_t LogicalBufferProto::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void LogicalBufferProto::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// int64 size = 2;
inline void LogicalBufferProto::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
}
inline ::int64_t LogicalBufferProto::size() const {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.size)
  return _internal_size();
}
inline void LogicalBufferProto::set_size(::int64_t value) {
  _internal_set_size(value);
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.size)
}
inline ::int64_t LogicalBufferProto::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void LogicalBufferProto::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

// .xla.LogicalBufferProto.Location defined_at = 3;
inline bool LogicalBufferProto::has_defined_at() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.defined_at_ != nullptr);
  return value;
}
inline void LogicalBufferProto::clear_defined_at() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.defined_at_ != nullptr) _impl_.defined_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::LogicalBufferProto_Location& LogicalBufferProto::_internal_defined_at() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::LogicalBufferProto_Location* p = _impl_.defined_at_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::LogicalBufferProto_Location&>(::xla::_LogicalBufferProto_Location_default_instance_);
}
inline const ::xla::LogicalBufferProto_Location& LogicalBufferProto::defined_at() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.defined_at)
  return _internal_defined_at();
}
inline void LogicalBufferProto::unsafe_arena_set_allocated_defined_at(::xla::LogicalBufferProto_Location* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.defined_at_);
  }
  _impl_.defined_at_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.LogicalBufferProto.defined_at)
}
inline ::xla::LogicalBufferProto_Location* LogicalBufferProto::release_defined_at() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LogicalBufferProto_Location* released = _impl_.defined_at_;
  _impl_.defined_at_ = 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::LogicalBufferProto_Location* LogicalBufferProto::unsafe_arena_release_defined_at() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LogicalBufferProto.defined_at)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LogicalBufferProto_Location* temp = _impl_.defined_at_;
  _impl_.defined_at_ = nullptr;
  return temp;
}
inline ::xla::LogicalBufferProto_Location* LogicalBufferProto::_internal_mutable_defined_at() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.defined_at_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::LogicalBufferProto_Location>(GetArena());
    _impl_.defined_at_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(p);
  }
  return _impl_.defined_at_;
}
inline ::xla::LogicalBufferProto_Location* LogicalBufferProto::mutable_defined_at() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::LogicalBufferProto_Location* _msg = _internal_mutable_defined_at();
  // @@protoc_insertion_point(field_mutable:xla.LogicalBufferProto.defined_at)
  return _msg;
}
inline void LogicalBufferProto::set_allocated_defined_at(::xla::LogicalBufferProto_Location* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.defined_at_);
  }

  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_.defined_at_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.LogicalBufferProto.defined_at)
}

// int64 color = 4;
inline void LogicalBufferProto::clear_color() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = ::int64_t{0};
}
inline ::int64_t LogicalBufferProto::color() const {
  // @@protoc_insertion_point(field_get:xla.LogicalBufferProto.color)
  return _internal_color();
}
inline void LogicalBufferProto::set_color(::int64_t value) {
  _internal_set_color(value);
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.color)
}
inline ::int64_t LogicalBufferProto::_internal_color() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.color_;
}
inline void LogicalBufferProto::_internal_set_color(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = value;
}

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

// BufferAllocationProto_Assigned

// int64 logical_buffer_id = 1;
inline void BufferAllocationProto_Assigned::clear_logical_buffer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.logical_buffer_id_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto_Assigned::logical_buffer_id() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.Assigned.logical_buffer_id)
  return _internal_logical_buffer_id();
}
inline void BufferAllocationProto_Assigned::set_logical_buffer_id(::int64_t value) {
  _internal_set_logical_buffer_id(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.Assigned.logical_buffer_id)
}
inline ::int64_t BufferAllocationProto_Assigned::_internal_logical_buffer_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.logical_buffer_id_;
}
inline void BufferAllocationProto_Assigned::_internal_set_logical_buffer_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.logical_buffer_id_ = value;
}

// int64 offset = 2;
inline void BufferAllocationProto_Assigned::clear_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto_Assigned::offset() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.Assigned.offset)
  return _internal_offset();
}
inline void BufferAllocationProto_Assigned::set_offset(::int64_t value) {
  _internal_set_offset(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.Assigned.offset)
}
inline ::int64_t BufferAllocationProto_Assigned::_internal_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_;
}
inline void BufferAllocationProto_Assigned::_internal_set_offset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = value;
}

// int64 size = 3;
inline void BufferAllocationProto_Assigned::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto_Assigned::size() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.Assigned.size)
  return _internal_size();
}
inline void BufferAllocationProto_Assigned::set_size(::int64_t value) {
  _internal_set_size(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.Assigned.size)
}
inline ::int64_t BufferAllocationProto_Assigned::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void BufferAllocationProto_Assigned::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

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

// BufferAllocationProto

// int64 index = 1;
inline void BufferAllocationProto::clear_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto::index() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.index)
  return _internal_index();
}
inline void BufferAllocationProto::set_index(::int64_t value) {
  _internal_set_index(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.index)
}
inline ::int64_t BufferAllocationProto::_internal_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.index_;
}
inline void BufferAllocationProto::_internal_set_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_ = value;
}

// int64 size = 2;
inline void BufferAllocationProto::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto::size() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.size)
  return _internal_size();
}
inline void BufferAllocationProto::set_size(::int64_t value) {
  _internal_set_size(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.size)
}
inline ::int64_t BufferAllocationProto::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void BufferAllocationProto::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

// bool is_thread_local = 3;
inline void BufferAllocationProto::clear_is_thread_local() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_thread_local_ = false;
}
inline bool BufferAllocationProto::is_thread_local() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.is_thread_local)
  return _internal_is_thread_local();
}
inline void BufferAllocationProto::set_is_thread_local(bool value) {
  _internal_set_is_thread_local(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.is_thread_local)
}
inline bool BufferAllocationProto::_internal_is_thread_local() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_thread_local_;
}
inline void BufferAllocationProto::_internal_set_is_thread_local(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_thread_local_ = value;
}

// bool is_tuple = 11;
inline void BufferAllocationProto::clear_is_tuple() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_tuple_ = false;
}
inline bool BufferAllocationProto::is_tuple() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.is_tuple)
  return _internal_is_tuple();
}
inline void BufferAllocationProto::set_is_tuple(bool value) {
  _internal_set_is_tuple(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.is_tuple)
}
inline bool BufferAllocationProto::_internal_is_tuple() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_tuple_;
}
inline void BufferAllocationProto::_internal_set_is_tuple(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_tuple_ = value;
}

// bool is_entry_computation_parameter = 5;
inline void BufferAllocationProto::clear_is_entry_computation_parameter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_entry_computation_parameter_ = false;
}
inline bool BufferAllocationProto::is_entry_computation_parameter() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.is_entry_computation_parameter)
  return _internal_is_entry_computation_parameter();
}
inline void BufferAllocationProto::set_is_entry_computation_parameter(bool value) {
  _internal_set_is_entry_computation_parameter(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.is_entry_computation_parameter)
}
inline bool BufferAllocationProto::_internal_is_entry_computation_parameter() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_entry_computation_parameter_;
}
inline void BufferAllocationProto::_internal_set_is_entry_computation_parameter(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_entry_computation_parameter_ = value;
}

// bool is_constant = 12;
inline void BufferAllocationProto::clear_is_constant() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_constant_ = false;
}
inline bool BufferAllocationProto::is_constant() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.is_constant)
  return _internal_is_constant();
}
inline void BufferAllocationProto::set_is_constant(bool value) {
  _internal_set_is_constant(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.is_constant)
}
inline bool BufferAllocationProto::_internal_is_constant() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_constant_;
}
inline void BufferAllocationProto::_internal_set_is_constant(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_constant_ = value;
}

// int64 parameter_number = 6;
inline void BufferAllocationProto::clear_parameter_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto::parameter_number() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.parameter_number)
  return _internal_parameter_number();
}
inline void BufferAllocationProto::set_parameter_number(::int64_t value) {
  _internal_set_parameter_number(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.parameter_number)
}
inline ::int64_t BufferAllocationProto::_internal_parameter_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_number_;
}
inline void BufferAllocationProto::_internal_set_parameter_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_number_ = value;
}

// repeated int64 parameter_shape_index = 10;
inline int BufferAllocationProto::_internal_parameter_shape_index_size() const {
  return _internal_parameter_shape_index().size();
}
inline int BufferAllocationProto::parameter_shape_index_size() const {
  return _internal_parameter_shape_index_size();
}
inline void BufferAllocationProto::clear_parameter_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_shape_index_.Clear();
}
inline ::int64_t BufferAllocationProto::parameter_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.parameter_shape_index)
  return _internal_parameter_shape_index().Get(index);
}
inline void BufferAllocationProto::set_parameter_shape_index(int index, ::int64_t value) {
  _internal_mutable_parameter_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.parameter_shape_index)
}
inline void BufferAllocationProto::add_parameter_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_parameter_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.BufferAllocationProto.parameter_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& BufferAllocationProto::parameter_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAllocationProto.parameter_shape_index)
  return _internal_parameter_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* BufferAllocationProto::mutable_parameter_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAllocationProto.parameter_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_parameter_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
BufferAllocationProto::_internal_parameter_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* BufferAllocationProto::_internal_mutable_parameter_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.parameter_shape_index_;
}

// bool is_parameter_aliased_with_output = 13;
inline void BufferAllocationProto::clear_is_parameter_aliased_with_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_parameter_aliased_with_output_ = false;
}
inline bool BufferAllocationProto::is_parameter_aliased_with_output() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.is_parameter_aliased_with_output)
  return _internal_is_parameter_aliased_with_output();
}
inline void BufferAllocationProto::set_is_parameter_aliased_with_output(bool value) {
  _internal_set_is_parameter_aliased_with_output(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.is_parameter_aliased_with_output)
}
inline bool BufferAllocationProto::_internal_is_parameter_aliased_with_output() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_parameter_aliased_with_output_;
}
inline void BufferAllocationProto::_internal_set_is_parameter_aliased_with_output(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_parameter_aliased_with_output_ = value;
}

// bool maybe_live_out = 7;
inline void BufferAllocationProto::clear_maybe_live_out() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.maybe_live_out_ = false;
}
inline bool BufferAllocationProto::maybe_live_out() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.maybe_live_out)
  return _internal_maybe_live_out();
}
inline void BufferAllocationProto::set_maybe_live_out(bool value) {
  _internal_set_maybe_live_out(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.maybe_live_out)
}
inline bool BufferAllocationProto::_internal_maybe_live_out() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.maybe_live_out_;
}
inline void BufferAllocationProto::_internal_set_maybe_live_out(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.maybe_live_out_ = value;
}

// int64 color = 8;
inline void BufferAllocationProto::clear_color() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = ::int64_t{0};
}
inline ::int64_t BufferAllocationProto::color() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.color)
  return _internal_color();
}
inline void BufferAllocationProto::set_color(::int64_t value) {
  _internal_set_color(value);
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.color)
}
inline ::int64_t BufferAllocationProto::_internal_color() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.color_;
}
inline void BufferAllocationProto::_internal_set_color(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = value;
}

// repeated .xla.BufferAllocationProto.Assigned assigned = 9;
inline int BufferAllocationProto::_internal_assigned_size() const {
  return _internal_assigned().size();
}
inline int BufferAllocationProto::assigned_size() const {
  return _internal_assigned_size();
}
inline void BufferAllocationProto::clear_assigned() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_.Clear();
}
inline ::xla::BufferAllocationProto_Assigned* BufferAllocationProto::mutable_assigned(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.BufferAllocationProto.assigned)
  return _internal_mutable_assigned()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>* BufferAllocationProto::mutable_assigned()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAllocationProto.assigned)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_assigned();
}
inline const ::xla::BufferAllocationProto_Assigned& BufferAllocationProto::assigned(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.assigned)
  return _internal_assigned().Get(index);
}
inline ::xla::BufferAllocationProto_Assigned* BufferAllocationProto::add_assigned() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::BufferAllocationProto_Assigned* _add = _internal_mutable_assigned()->Add();
  // @@protoc_insertion_point(field_add:xla.BufferAllocationProto.assigned)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>& BufferAllocationProto::assigned() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAllocationProto.assigned)
  return _internal_assigned();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>&
BufferAllocationProto::_internal_assigned() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.assigned_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>*
BufferAllocationProto::_internal_mutable_assigned() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.assigned_;
}

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

// HeapSimulatorTrace_Event

// .xla.HeapSimulatorTrace.Event.Kind kind = 1;
inline void HeapSimulatorTrace_Event::clear_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = 0;
}
inline ::xla::HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event::kind() const {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.Event.kind)
  return _internal_kind();
}
inline void HeapSimulatorTrace_Event::set_kind(::xla::HeapSimulatorTrace_Event_Kind value) {
  _internal_set_kind(value);
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.kind)
}
inline ::xla::HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event::_internal_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::HeapSimulatorTrace_Event_Kind>(_impl_.kind_);
}
inline void HeapSimulatorTrace_Event::_internal_set_kind(::xla::HeapSimulatorTrace_Event_Kind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = value;
}

// int64 buffer_id = 2;
inline void HeapSimulatorTrace_Event::clear_buffer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_id_ = ::int64_t{0};
}
inline ::int64_t HeapSimulatorTrace_Event::buffer_id() const {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.Event.buffer_id)
  return _internal_buffer_id();
}
inline void HeapSimulatorTrace_Event::set_buffer_id(::int64_t value) {
  _internal_set_buffer_id(value);
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.buffer_id)
}
inline ::int64_t HeapSimulatorTrace_Event::_internal_buffer_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffer_id_;
}
inline void HeapSimulatorTrace_Event::_internal_set_buffer_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_id_ = value;
}

// string computation_name = 3;
inline void HeapSimulatorTrace_Event::clear_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_name_.ClearToEmpty();
}
inline const std::string& HeapSimulatorTrace_Event::computation_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.Event.computation_name)
  return _internal_computation_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HeapSimulatorTrace_Event::set_computation_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.computation_name)
}
inline std::string* HeapSimulatorTrace_Event::mutable_computation_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_computation_name();
  // @@protoc_insertion_point(field_mutable:xla.HeapSimulatorTrace.Event.computation_name)
  return _s;
}
inline const std::string& HeapSimulatorTrace_Event::_internal_computation_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.computation_name_.Get();
}
inline void HeapSimulatorTrace_Event::_internal_set_computation_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_name_.Set(value, GetArena());
}
inline std::string* HeapSimulatorTrace_Event::_internal_mutable_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.computation_name_.Mutable( GetArena());
}
inline std::string* HeapSimulatorTrace_Event::release_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HeapSimulatorTrace.Event.computation_name)
  return _impl_.computation_name_.Release();
}
inline void HeapSimulatorTrace_Event::set_allocated_computation_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.computation_name_.IsDefault()) {
          _impl_.computation_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HeapSimulatorTrace.Event.computation_name)
}

// string instruction_name = 4;
inline void HeapSimulatorTrace_Event::clear_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.ClearToEmpty();
}
inline const std::string& HeapSimulatorTrace_Event::instruction_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.Event.instruction_name)
  return _internal_instruction_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HeapSimulatorTrace_Event::set_instruction_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.instruction_name)
}
inline std::string* HeapSimulatorTrace_Event::mutable_instruction_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_instruction_name();
  // @@protoc_insertion_point(field_mutable:xla.HeapSimulatorTrace.Event.instruction_name)
  return _s;
}
inline const std::string& HeapSimulatorTrace_Event::_internal_instruction_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_name_.Get();
}
inline void HeapSimulatorTrace_Event::_internal_set_instruction_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.Set(value, GetArena());
}
inline std::string* HeapSimulatorTrace_Event::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline std::string* HeapSimulatorTrace_Event::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HeapSimulatorTrace.Event.instruction_name)
  return _impl_.instruction_name_.Release();
}
inline void HeapSimulatorTrace_Event::set_allocated_instruction_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.instruction_name_.IsDefault()) {
          _impl_.instruction_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HeapSimulatorTrace.Event.instruction_name)
}

// int64 share_with_canonical_id = 5;
inline void HeapSimulatorTrace_Event::clear_share_with_canonical_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.share_with_canonical_id_ = ::int64_t{0};
}
inline ::int64_t HeapSimulatorTrace_Event::share_with_canonical_id() const {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.Event.share_with_canonical_id)
  return _internal_share_with_canonical_id();
}
inline void HeapSimulatorTrace_Event::set_share_with_canonical_id(::int64_t value) {
  _internal_set_share_with_canonical_id(value);
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.share_with_canonical_id)
}
inline ::int64_t HeapSimulatorTrace_Event::_internal_share_with_canonical_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.share_with_canonical_id_;
}
inline void HeapSimulatorTrace_Event::_internal_set_share_with_canonical_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.share_with_canonical_id_ = value;
}

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

// HeapSimulatorTrace

// repeated .xla.HeapSimulatorTrace.Event events = 1;
inline int HeapSimulatorTrace::_internal_events_size() const {
  return _internal_events().size();
}
inline int HeapSimulatorTrace::events_size() const {
  return _internal_events_size();
}
inline void HeapSimulatorTrace::clear_events() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.events_.Clear();
}
inline ::xla::HeapSimulatorTrace_Event* HeapSimulatorTrace::mutable_events(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HeapSimulatorTrace.events)
  return _internal_mutable_events()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>* HeapSimulatorTrace::mutable_events()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HeapSimulatorTrace.events)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_events();
}
inline const ::xla::HeapSimulatorTrace_Event& HeapSimulatorTrace::events(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.events)
  return _internal_events().Get(index);
}
inline ::xla::HeapSimulatorTrace_Event* HeapSimulatorTrace::add_events() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HeapSimulatorTrace_Event* _add = _internal_mutable_events()->Add();
  // @@protoc_insertion_point(field_add:xla.HeapSimulatorTrace.events)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>& HeapSimulatorTrace::events() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HeapSimulatorTrace.events)
  return _internal_events();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>&
HeapSimulatorTrace::_internal_events() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.events_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>*
HeapSimulatorTrace::_internal_mutable_events() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.events_;
}

// bool whole_module_simulation = 2;
inline void HeapSimulatorTrace::clear_whole_module_simulation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.whole_module_simulation_ = false;
}
inline bool HeapSimulatorTrace::whole_module_simulation() const {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.whole_module_simulation)
  return _internal_whole_module_simulation();
}
inline void HeapSimulatorTrace::set_whole_module_simulation(bool value) {
  _internal_set_whole_module_simulation(value);
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.whole_module_simulation)
}
inline bool HeapSimulatorTrace::_internal_whole_module_simulation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.whole_module_simulation_;
}
inline void HeapSimulatorTrace::_internal_set_whole_module_simulation(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.whole_module_simulation_ = value;
}

// int64 buffer_allocation_index = 3;
inline void HeapSimulatorTrace::clear_buffer_allocation_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_allocation_index_ = ::int64_t{0};
}
inline ::int64_t HeapSimulatorTrace::buffer_allocation_index() const {
  // @@protoc_insertion_point(field_get:xla.HeapSimulatorTrace.buffer_allocation_index)
  return _internal_buffer_allocation_index();
}
inline void HeapSimulatorTrace::set_buffer_allocation_index(::int64_t value) {
  _internal_set_buffer_allocation_index(value);
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.buffer_allocation_index)
}
inline ::int64_t HeapSimulatorTrace::_internal_buffer_allocation_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffer_allocation_index_;
}
inline void HeapSimulatorTrace::_internal_set_buffer_allocation_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_allocation_index_ = value;
}

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

// HloModuleGroupProto

// string name = 1;
inline void HloModuleGroupProto::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& HloModuleGroupProto::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleGroupProto.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloModuleGroupProto::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleGroupProto.name)
}
inline std::string* HloModuleGroupProto::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleGroupProto.name)
  return _s;
}
inline const std::string& HloModuleGroupProto::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void HloModuleGroupProto::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline std::string* HloModuleGroupProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* HloModuleGroupProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleGroupProto.name)
  return _impl_.name_.Release();
}
inline void HloModuleGroupProto::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleGroupProto.name)
}

// repeated .xla.HloModuleProto hlo_modules = 2;
inline int HloModuleGroupProto::_internal_hlo_modules_size() const {
  return _internal_hlo_modules().size();
}
inline int HloModuleGroupProto::hlo_modules_size() const {
  return _internal_hlo_modules_size();
}
inline void HloModuleGroupProto::clear_hlo_modules() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.hlo_modules_.Clear();
}
inline ::xla::HloModuleProto* HloModuleGroupProto::mutable_hlo_modules(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleGroupProto.hlo_modules)
  return _internal_mutable_hlo_modules()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>* HloModuleGroupProto::mutable_hlo_modules()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleGroupProto.hlo_modules)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_hlo_modules();
}
inline const ::xla::HloModuleProto& HloModuleGroupProto::hlo_modules(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleGroupProto.hlo_modules)
  return _internal_hlo_modules().Get(index);
}
inline ::xla::HloModuleProto* HloModuleGroupProto::add_hlo_modules() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloModuleProto* _add = _internal_mutable_hlo_modules()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleGroupProto.hlo_modules)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>& HloModuleGroupProto::hlo_modules() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleGroupProto.hlo_modules)
  return _internal_hlo_modules();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>&
HloModuleGroupProto::_internal_hlo_modules() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.hlo_modules_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>*
HloModuleGroupProto::_internal_mutable_hlo_modules() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.hlo_modules_;
}

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

// BufferAssignmentProto_BufferAlias

// int64 source_buffer_id = 1;
inline void BufferAssignmentProto_BufferAlias::clear_source_buffer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_buffer_id_ = ::int64_t{0};
}
inline ::int64_t BufferAssignmentProto_BufferAlias::source_buffer_id() const {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.BufferAlias.source_buffer_id)
  return _internal_source_buffer_id();
}
inline void BufferAssignmentProto_BufferAlias::set_source_buffer_id(::int64_t value) {
  _internal_set_source_buffer_id(value);
  // @@protoc_insertion_point(field_set:xla.BufferAssignmentProto.BufferAlias.source_buffer_id)
}
inline ::int64_t BufferAssignmentProto_BufferAlias::_internal_source_buffer_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_buffer_id_;
}
inline void BufferAssignmentProto_BufferAlias::_internal_set_source_buffer_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_buffer_id_ = value;
}

// .xla.LogicalBufferProto.Location location = 2;
inline bool BufferAssignmentProto_BufferAlias::has_location() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.location_ != nullptr);
  return value;
}
inline void BufferAssignmentProto_BufferAlias::clear_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.location_ != nullptr) _impl_.location_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::LogicalBufferProto_Location& BufferAssignmentProto_BufferAlias::_internal_location() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::LogicalBufferProto_Location* p = _impl_.location_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::LogicalBufferProto_Location&>(::xla::_LogicalBufferProto_Location_default_instance_);
}
inline const ::xla::LogicalBufferProto_Location& BufferAssignmentProto_BufferAlias::location() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.BufferAlias.location)
  return _internal_location();
}
inline void BufferAssignmentProto_BufferAlias::unsafe_arena_set_allocated_location(::xla::LogicalBufferProto_Location* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.location_);
  }
  _impl_.location_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.BufferAssignmentProto.BufferAlias.location)
}
inline ::xla::LogicalBufferProto_Location* BufferAssignmentProto_BufferAlias::release_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LogicalBufferProto_Location* released = _impl_.location_;
  _impl_.location_ = 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::LogicalBufferProto_Location* BufferAssignmentProto_BufferAlias::unsafe_arena_release_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.BufferAssignmentProto.BufferAlias.location)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LogicalBufferProto_Location* temp = _impl_.location_;
  _impl_.location_ = nullptr;
  return temp;
}
inline ::xla::LogicalBufferProto_Location* BufferAssignmentProto_BufferAlias::_internal_mutable_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.location_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::LogicalBufferProto_Location>(GetArena());
    _impl_.location_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(p);
  }
  return _impl_.location_;
}
inline ::xla::LogicalBufferProto_Location* BufferAssignmentProto_BufferAlias::mutable_location() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::LogicalBufferProto_Location* _msg = _internal_mutable_location();
  // @@protoc_insertion_point(field_mutable:xla.BufferAssignmentProto.BufferAlias.location)
  return _msg;
}
inline void BufferAssignmentProto_BufferAlias::set_allocated_location(::xla::LogicalBufferProto_Location* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.location_);
  }

  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_.location_ = reinterpret_cast<::xla::LogicalBufferProto_Location*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.BufferAssignmentProto.BufferAlias.location)
}

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

// BufferAssignmentProto

// repeated .xla.LogicalBufferProto logical_buffers = 1;
inline int BufferAssignmentProto::_internal_logical_buffers_size() const {
  return _internal_logical_buffers().size();
}
inline int BufferAssignmentProto::logical_buffers_size() const {
  return _internal_logical_buffers_size();
}
inline void BufferAssignmentProto::clear_logical_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.logical_buffers_.Clear();
}
inline ::xla::LogicalBufferProto* BufferAssignmentProto::mutable_logical_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.BufferAssignmentProto.logical_buffers)
  return _internal_mutable_logical_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>* BufferAssignmentProto::mutable_logical_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAssignmentProto.logical_buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_logical_buffers();
}
inline const ::xla::LogicalBufferProto& BufferAssignmentProto::logical_buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.logical_buffers)
  return _internal_logical_buffers().Get(index);
}
inline ::xla::LogicalBufferProto* BufferAssignmentProto::add_logical_buffers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::LogicalBufferProto* _add = _internal_mutable_logical_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.BufferAssignmentProto.logical_buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>& BufferAssignmentProto::logical_buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAssignmentProto.logical_buffers)
  return _internal_logical_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>&
BufferAssignmentProto::_internal_logical_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.logical_buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>*
BufferAssignmentProto::_internal_mutable_logical_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.logical_buffers_;
}

// repeated .xla.BufferAssignmentProto.BufferAlias buffer_aliases = 2;
inline int BufferAssignmentProto::_internal_buffer_aliases_size() const {
  return _internal_buffer_aliases().size();
}
inline int BufferAssignmentProto::buffer_aliases_size() const {
  return _internal_buffer_aliases_size();
}
inline void BufferAssignmentProto::clear_buffer_aliases() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_aliases_.Clear();
}
inline ::xla::BufferAssignmentProto_BufferAlias* BufferAssignmentProto::mutable_buffer_aliases(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.BufferAssignmentProto.buffer_aliases)
  return _internal_mutable_buffer_aliases()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>* BufferAssignmentProto::mutable_buffer_aliases()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAssignmentProto.buffer_aliases)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffer_aliases();
}
inline const ::xla::BufferAssignmentProto_BufferAlias& BufferAssignmentProto::buffer_aliases(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.buffer_aliases)
  return _internal_buffer_aliases().Get(index);
}
inline ::xla::BufferAssignmentProto_BufferAlias* BufferAssignmentProto::add_buffer_aliases() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::BufferAssignmentProto_BufferAlias* _add = _internal_mutable_buffer_aliases()->Add();
  // @@protoc_insertion_point(field_add:xla.BufferAssignmentProto.buffer_aliases)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>& BufferAssignmentProto::buffer_aliases() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAssignmentProto.buffer_aliases)
  return _internal_buffer_aliases();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>&
BufferAssignmentProto::_internal_buffer_aliases() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffer_aliases_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>*
BufferAssignmentProto::_internal_mutable_buffer_aliases() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffer_aliases_;
}

// repeated .xla.BufferAllocationProto buffer_allocations = 3;
inline int BufferAssignmentProto::_internal_buffer_allocations_size() const {
  return _internal_buffer_allocations().size();
}
inline int BufferAssignmentProto::buffer_allocations_size() const {
  return _internal_buffer_allocations_size();
}
inline void BufferAssignmentProto::clear_buffer_allocations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffer_allocations_.Clear();
}
inline ::xla::BufferAllocationProto* BufferAssignmentProto::mutable_buffer_allocations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.BufferAssignmentProto.buffer_allocations)
  return _internal_mutable_buffer_allocations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* BufferAssignmentProto::mutable_buffer_allocations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAssignmentProto.buffer_allocations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffer_allocations();
}
inline const ::xla::BufferAllocationProto& BufferAssignmentProto::buffer_allocations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.buffer_allocations)
  return _internal_buffer_allocations().Get(index);
}
inline ::xla::BufferAllocationProto* BufferAssignmentProto::add_buffer_allocations() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::BufferAllocationProto* _add = _internal_mutable_buffer_allocations()->Add();
  // @@protoc_insertion_point(field_add:xla.BufferAssignmentProto.buffer_allocations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& BufferAssignmentProto::buffer_allocations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAssignmentProto.buffer_allocations)
  return _internal_buffer_allocations();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>&
BufferAssignmentProto::_internal_buffer_allocations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffer_allocations_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>*
BufferAssignmentProto::_internal_mutable_buffer_allocations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffer_allocations_;
}

// repeated .xla.HeapSimulatorTrace heap_simulator_traces = 4;
inline int BufferAssignmentProto::_internal_heap_simulator_traces_size() const {
  return _internal_heap_simulator_traces().size();
}
inline int BufferAssignmentProto::heap_simulator_traces_size() const {
  return _internal_heap_simulator_traces_size();
}
inline void BufferAssignmentProto::clear_heap_simulator_traces() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.heap_simulator_traces_.Clear();
}
inline ::xla::HeapSimulatorTrace* BufferAssignmentProto::mutable_heap_simulator_traces(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.BufferAssignmentProto.heap_simulator_traces)
  return _internal_mutable_heap_simulator_traces()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>* BufferAssignmentProto::mutable_heap_simulator_traces()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.BufferAssignmentProto.heap_simulator_traces)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_heap_simulator_traces();
}
inline const ::xla::HeapSimulatorTrace& BufferAssignmentProto::heap_simulator_traces(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.BufferAssignmentProto.heap_simulator_traces)
  return _internal_heap_simulator_traces().Get(index);
}
inline ::xla::HeapSimulatorTrace* BufferAssignmentProto::add_heap_simulator_traces() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HeapSimulatorTrace* _add = _internal_mutable_heap_simulator_traces()->Add();
  // @@protoc_insertion_point(field_add:xla.BufferAssignmentProto.heap_simulator_traces)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>& BufferAssignmentProto::heap_simulator_traces() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.BufferAssignmentProto.heap_simulator_traces)
  return _internal_heap_simulator_traces();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>&
BufferAssignmentProto::_internal_heap_simulator_traces() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.heap_simulator_traces_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>*
BufferAssignmentProto::_internal_mutable_heap_simulator_traces() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.heap_simulator_traces_;
}

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

// HloProto

// .xla.HloModuleProto hlo_module = 1;
inline bool HloProto::has_hlo_module() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.hlo_module_ != nullptr);
  return value;
}
inline void HloProto::clear_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_module_ != nullptr) _impl_.hlo_module_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::HloModuleProto& HloProto::_internal_hlo_module() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloModuleProto* p = _impl_.hlo_module_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloModuleProto&>(::xla::_HloModuleProto_default_instance_);
}
inline const ::xla::HloModuleProto& HloProto::hlo_module() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloProto.hlo_module)
  return _internal_hlo_module();
}
inline void HloProto::unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.hlo_module_);
  }
  _impl_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloProto.hlo_module)
}
inline ::xla::HloModuleProto* HloProto::release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* released = _impl_.hlo_module_;
  _impl_.hlo_module_ = 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::HloModuleProto* HloProto::unsafe_arena_release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloProto.hlo_module)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* temp = _impl_.hlo_module_;
  _impl_.hlo_module_ = nullptr;
  return temp;
}
inline ::xla::HloModuleProto* HloProto::_internal_mutable_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_module_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloModuleProto>(GetArena());
    _impl_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(p);
  }
  return _impl_.hlo_module_;
}
inline ::xla::HloModuleProto* HloProto::mutable_hlo_module() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::HloModuleProto* _msg = _internal_mutable_hlo_module();
  // @@protoc_insertion_point(field_mutable:xla.HloProto.hlo_module)
  return _msg;
}
inline void HloProto::set_allocated_hlo_module(::xla::HloModuleProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.hlo_module_);
  }

  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_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloProto.hlo_module)
}

// .xla.BufferAssignmentProto buffer_assignment = 3;
inline bool HloProto::has_buffer_assignment() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_assignment_ != nullptr);
  return value;
}
inline void HloProto::clear_buffer_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_assignment_ != nullptr) _impl_.buffer_assignment_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::BufferAssignmentProto& HloProto::_internal_buffer_assignment() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::BufferAssignmentProto* p = _impl_.buffer_assignment_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::BufferAssignmentProto&>(::xla::_BufferAssignmentProto_default_instance_);
}
inline const ::xla::BufferAssignmentProto& HloProto::buffer_assignment() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloProto.buffer_assignment)
  return _internal_buffer_assignment();
}
inline void HloProto::unsafe_arena_set_allocated_buffer_assignment(::xla::BufferAssignmentProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_assignment_);
  }
  _impl_.buffer_assignment_ = reinterpret_cast<::xla::BufferAssignmentProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloProto.buffer_assignment)
}
inline ::xla::BufferAssignmentProto* HloProto::release_buffer_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::BufferAssignmentProto* released = _impl_.buffer_assignment_;
  _impl_.buffer_assignment_ = 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::BufferAssignmentProto* HloProto::unsafe_arena_release_buffer_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloProto.buffer_assignment)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::BufferAssignmentProto* temp = _impl_.buffer_assignment_;
  _impl_.buffer_assignment_ = nullptr;
  return temp;
}
inline ::xla::BufferAssignmentProto* HloProto::_internal_mutable_buffer_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_assignment_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::BufferAssignmentProto>(GetArena());
    _impl_.buffer_assignment_ = reinterpret_cast<::xla::BufferAssignmentProto*>(p);
  }
  return _impl_.buffer_assignment_;
}
inline ::xla::BufferAssignmentProto* HloProto::mutable_buffer_assignment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::BufferAssignmentProto* _msg = _internal_mutable_buffer_assignment();
  // @@protoc_insertion_point(field_mutable:xla.HloProto.buffer_assignment)
  return _msg;
}
inline void HloProto::set_allocated_buffer_assignment(::xla::BufferAssignmentProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.buffer_assignment_);
  }

  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_.buffer_assignment_ = reinterpret_cast<::xla::BufferAssignmentProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloProto.buffer_assignment)
}

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

// HloSnapshot

// .xla.HloProto hlo = 1;
inline bool HloSnapshot::has_hlo() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.hlo_ != nullptr);
  return value;
}
inline void HloSnapshot::clear_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_ != nullptr) _impl_.hlo_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::HloProto& HloSnapshot::_internal_hlo() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloProto* p = _impl_.hlo_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloProto&>(::xla::_HloProto_default_instance_);
}
inline const ::xla::HloProto& HloSnapshot::hlo() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloSnapshot.hlo)
  return _internal_hlo();
}
inline void HloSnapshot::unsafe_arena_set_allocated_hlo(::xla::HloProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.hlo_);
  }
  _impl_.hlo_ = reinterpret_cast<::xla::HloProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloSnapshot.hlo)
}
inline ::xla::HloProto* HloSnapshot::release_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloProto* released = _impl_.hlo_;
  _impl_.hlo_ = 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::HloProto* HloSnapshot::unsafe_arena_release_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloSnapshot.hlo)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloProto* temp = _impl_.hlo_;
  _impl_.hlo_ = nullptr;
  return temp;
}
inline ::xla::HloProto* HloSnapshot::_internal_mutable_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloProto>(GetArena());
    _impl_.hlo_ = reinterpret_cast<::xla::HloProto*>(p);
  }
  return _impl_.hlo_;
}
inline ::xla::HloProto* HloSnapshot::mutable_hlo() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::HloProto* _msg = _internal_mutable_hlo();
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.hlo)
  return _msg;
}
inline void HloSnapshot::set_allocated_hlo(::xla::HloProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.hlo_);
  }

  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_.hlo_ = reinterpret_cast<::xla::HloProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloSnapshot.hlo)
}

// repeated .xla.LiteralProto arguments = 2;
inline int HloSnapshot::_internal_arguments_size() const {
  return _internal_arguments().size();
}
inline int HloSnapshot::arguments_size() const {
  return _internal_arguments_size();
}
inline ::xla::LiteralProto* HloSnapshot::mutable_arguments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.arguments)
  return _internal_mutable_arguments()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* HloSnapshot::mutable_arguments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloSnapshot.arguments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_arguments();
}
inline const ::xla::LiteralProto& HloSnapshot::arguments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloSnapshot.arguments)
  return _internal_arguments().Get(index);
}
inline ::xla::LiteralProto* HloSnapshot::add_arguments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::LiteralProto* _add = _internal_mutable_arguments()->Add();
  // @@protoc_insertion_point(field_add:xla.HloSnapshot.arguments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& HloSnapshot::arguments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloSnapshot.arguments)
  return _internal_arguments();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>&
HloSnapshot::_internal_arguments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.arguments_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>*
HloSnapshot::_internal_mutable_arguments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.arguments_;
}

// .xla.LiteralProto result = 3;
inline bool HloSnapshot::has_result() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_ != nullptr);
  return value;
}
inline const ::xla::LiteralProto& HloSnapshot::_internal_result() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::LiteralProto* p = _impl_.result_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::LiteralProto&>(::xla::_LiteralProto_default_instance_);
}
inline const ::xla::LiteralProto& HloSnapshot::result() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloSnapshot.result)
  return _internal_result();
}
inline void HloSnapshot::unsafe_arena_set_allocated_result(::xla::LiteralProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }
  _impl_.result_ = reinterpret_cast<::xla::LiteralProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloSnapshot.result)
}
inline ::xla::LiteralProto* HloSnapshot::release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::LiteralProto* released = _impl_.result_;
  _impl_.result_ = 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::LiteralProto* HloSnapshot::unsafe_arena_release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloSnapshot.result)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::LiteralProto* temp = _impl_.result_;
  _impl_.result_ = nullptr;
  return temp;
}
inline ::xla::LiteralProto* HloSnapshot::_internal_mutable_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::LiteralProto>(GetArena());
    _impl_.result_ = reinterpret_cast<::xla::LiteralProto*>(p);
  }
  return _impl_.result_;
}
inline ::xla::LiteralProto* HloSnapshot::mutable_result() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::LiteralProto* _msg = _internal_mutable_result();
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.result)
  return _msg;
}
inline void HloSnapshot::set_allocated_result(::xla::LiteralProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }

  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_.result_ = reinterpret_cast<::xla::LiteralProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloSnapshot.result)
}

// string execution_platform = 4;
inline void HloSnapshot::clear_execution_platform() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_platform_.ClearToEmpty();
}
inline const std::string& HloSnapshot::execution_platform() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloSnapshot.execution_platform)
  return _internal_execution_platform();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloSnapshot::set_execution_platform(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_platform_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloSnapshot.execution_platform)
}
inline std::string* HloSnapshot::mutable_execution_platform() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_execution_platform();
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.execution_platform)
  return _s;
}
inline const std::string& HloSnapshot::_internal_execution_platform() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.execution_platform_.Get();
}
inline void HloSnapshot::_internal_set_execution_platform(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_platform_.Set(value, GetArena());
}
inline std::string* HloSnapshot::_internal_mutable_execution_platform() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.execution_platform_.Mutable( GetArena());
}
inline std::string* HloSnapshot::release_execution_platform() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloSnapshot.execution_platform)
  return _impl_.execution_platform_.Release();
}
inline void HloSnapshot::set_allocated_execution_platform(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_platform_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.execution_platform_.IsDefault()) {
          _impl_.execution_platform_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloSnapshot.execution_platform)
}

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

// HloInputs_LiteralDescriptor

// int32 version = 1;
inline void HloInputs_LiteralDescriptor::clear_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = 0;
}
inline ::int32_t HloInputs_LiteralDescriptor::version() const {
  // @@protoc_insertion_point(field_get:xla.HloInputs.LiteralDescriptor.version)
  return _internal_version();
}
inline void HloInputs_LiteralDescriptor::set_version(::int32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:xla.HloInputs.LiteralDescriptor.version)
}
inline ::int32_t HloInputs_LiteralDescriptor::_internal_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_;
}
inline void HloInputs_LiteralDescriptor::_internal_set_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = value;
}

// uint64 argument_size_bytes = 2;
inline void HloInputs_LiteralDescriptor::clear_argument_size_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.argument_size_bytes_ = ::uint64_t{0u};
}
inline ::uint64_t HloInputs_LiteralDescriptor::argument_size_bytes() const {
  // @@protoc_insertion_point(field_get:xla.HloInputs.LiteralDescriptor.argument_size_bytes)
  return _internal_argument_size_bytes();
}
inline void HloInputs_LiteralDescriptor::set_argument_size_bytes(::uint64_t value) {
  _internal_set_argument_size_bytes(value);
  // @@protoc_insertion_point(field_set:xla.HloInputs.LiteralDescriptor.argument_size_bytes)
}
inline ::uint64_t HloInputs_LiteralDescriptor::_internal_argument_size_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.argument_size_bytes_;
}
inline void HloInputs_LiteralDescriptor::_internal_set_argument_size_bytes(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.argument_size_bytes_ = value;
}

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

// HloInputs

// repeated .xla.LiteralProto arguments = 1;
inline int HloInputs::_internal_arguments_size() const {
  return _internal_arguments().size();
}
inline int HloInputs::arguments_size() const {
  return _internal_arguments_size();
}
inline ::xla::LiteralProto* HloInputs::mutable_arguments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInputs.arguments)
  return _internal_mutable_arguments()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* HloInputs::mutable_arguments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInputs.arguments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_arguments();
}
inline const ::xla::LiteralProto& HloInputs::arguments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInputs.arguments)
  return _internal_arguments().Get(index);
}
inline ::xla::LiteralProto* HloInputs::add_arguments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::LiteralProto* _add = _internal_mutable_arguments()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInputs.arguments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& HloInputs::arguments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInputs.arguments)
  return _internal_arguments();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>&
HloInputs::_internal_arguments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.arguments_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>*
HloInputs::_internal_mutable_arguments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.arguments_;
}

// repeated .xla.HloInputs.LiteralDescriptor arguments_descriptors = 2;
inline int HloInputs::_internal_arguments_descriptors_size() const {
  return _internal_arguments_descriptors().size();
}
inline int HloInputs::arguments_descriptors_size() const {
  return _internal_arguments_descriptors_size();
}
inline void HloInputs::clear_arguments_descriptors() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.arguments_descriptors_.Clear();
}
inline ::xla::HloInputs_LiteralDescriptor* HloInputs::mutable_arguments_descriptors(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloInputs.arguments_descriptors)
  return _internal_mutable_arguments_descriptors()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>* HloInputs::mutable_arguments_descriptors()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloInputs.arguments_descriptors)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_arguments_descriptors();
}
inline const ::xla::HloInputs_LiteralDescriptor& HloInputs::arguments_descriptors(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInputs.arguments_descriptors)
  return _internal_arguments_descriptors().Get(index);
}
inline ::xla::HloInputs_LiteralDescriptor* HloInputs::add_arguments_descriptors() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloInputs_LiteralDescriptor* _add = _internal_mutable_arguments_descriptors()->Add();
  // @@protoc_insertion_point(field_add:xla.HloInputs.arguments_descriptors)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>& HloInputs::arguments_descriptors() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloInputs.arguments_descriptors)
  return _internal_arguments_descriptors();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>&
HloInputs::_internal_arguments_descriptors() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.arguments_descriptors_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>*
HloInputs::_internal_mutable_arguments_descriptors() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.arguments_descriptors_;
}

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

// HloUnoptimizedSnapshot

// .xla.HloModuleProto hlo_module = 1;
inline bool HloUnoptimizedSnapshot::has_hlo_module() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.hlo_module_ != nullptr);
  return value;
}
inline void HloUnoptimizedSnapshot::clear_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_module_ != nullptr) _impl_.hlo_module_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::HloModuleProto& HloUnoptimizedSnapshot::_internal_hlo_module() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloModuleProto* p = _impl_.hlo_module_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloModuleProto&>(::xla::_HloModuleProto_default_instance_);
}
inline const ::xla::HloModuleProto& HloUnoptimizedSnapshot::hlo_module() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloUnoptimizedSnapshot.hlo_module)
  return _internal_hlo_module();
}
inline void HloUnoptimizedSnapshot::unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.hlo_module_);
  }
  _impl_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloUnoptimizedSnapshot.hlo_module)
}
inline ::xla::HloModuleProto* HloUnoptimizedSnapshot::release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* released = _impl_.hlo_module_;
  _impl_.hlo_module_ = 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::HloModuleProto* HloUnoptimizedSnapshot::unsafe_arena_release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloUnoptimizedSnapshot.hlo_module)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* temp = _impl_.hlo_module_;
  _impl_.hlo_module_ = nullptr;
  return temp;
}
inline ::xla::HloModuleProto* HloUnoptimizedSnapshot::_internal_mutable_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.hlo_module_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloModuleProto>(GetArena());
    _impl_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(p);
  }
  return _impl_.hlo_module_;
}
inline ::xla::HloModuleProto* HloUnoptimizedSnapshot::mutable_hlo_module() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::HloModuleProto* _msg = _internal_mutable_hlo_module();
  // @@protoc_insertion_point(field_mutable:xla.HloUnoptimizedSnapshot.hlo_module)
  return _msg;
}
inline void HloUnoptimizedSnapshot::set_allocated_hlo_module(::xla::HloModuleProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.hlo_module_);
  }

  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_.hlo_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloUnoptimizedSnapshot.hlo_module)
}

// repeated .xla.HloInputs partitions = 2;
inline int HloUnoptimizedSnapshot::_internal_partitions_size() const {
  return _internal_partitions().size();
}
inline int HloUnoptimizedSnapshot::partitions_size() const {
  return _internal_partitions_size();
}
inline void HloUnoptimizedSnapshot::clear_partitions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.partitions_.Clear();
}
inline ::xla::HloInputs* HloUnoptimizedSnapshot::mutable_partitions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloUnoptimizedSnapshot.partitions)
  return _internal_mutable_partitions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputs>* HloUnoptimizedSnapshot::mutable_partitions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloUnoptimizedSnapshot.partitions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_partitions();
}
inline const ::xla::HloInputs& HloUnoptimizedSnapshot::partitions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloUnoptimizedSnapshot.partitions)
  return _internal_partitions().Get(index);
}
inline ::xla::HloInputs* HloUnoptimizedSnapshot::add_partitions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloInputs* _add = _internal_mutable_partitions()->Add();
  // @@protoc_insertion_point(field_add:xla.HloUnoptimizedSnapshot.partitions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputs>& HloUnoptimizedSnapshot::partitions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloUnoptimizedSnapshot.partitions)
  return _internal_partitions();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloInputs>&
HloUnoptimizedSnapshot::_internal_partitions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.partitions_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloInputs>*
HloUnoptimizedSnapshot::_internal_mutable_partitions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.partitions_;
}

// int32 version = 3;
inline void HloUnoptimizedSnapshot::clear_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = 0;
}
inline ::int32_t HloUnoptimizedSnapshot::version() const {
  // @@protoc_insertion_point(field_get:xla.HloUnoptimizedSnapshot.version)
  return _internal_version();
}
inline void HloUnoptimizedSnapshot::set_version(::int32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:xla.HloUnoptimizedSnapshot.version)
}
inline ::int32_t HloUnoptimizedSnapshot::_internal_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_;
}
inline void HloUnoptimizedSnapshot::_internal_set_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = value;
}

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

// HloModuleMetadataProto

// int64 canonical_module_id = 1;
inline void HloModuleMetadataProto::clear_canonical_module_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.canonical_module_id_ = ::int64_t{0};
}
inline ::int64_t HloModuleMetadataProto::canonical_module_id() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleMetadataProto.canonical_module_id)
  return _internal_canonical_module_id();
}
inline void HloModuleMetadataProto::set_canonical_module_id(::int64_t value) {
  _internal_set_canonical_module_id(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleMetadataProto.canonical_module_id)
}
inline ::int64_t HloModuleMetadataProto::_internal_canonical_module_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.canonical_module_id_;
}
inline void HloModuleMetadataProto::_internal_set_canonical_module_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.canonical_module_id_ = value;
}

// string module_group_name = 2;
inline void HloModuleMetadataProto::clear_module_group_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_group_name_.ClearToEmpty();
}
inline const std::string& HloModuleMetadataProto::module_group_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleMetadataProto.module_group_name)
  return _internal_module_group_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloModuleMetadataProto::set_module_group_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_group_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleMetadataProto.module_group_name)
}
inline std::string* HloModuleMetadataProto::mutable_module_group_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_module_group_name();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleMetadataProto.module_group_name)
  return _s;
}
inline const std::string& HloModuleMetadataProto::_internal_module_group_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.module_group_name_.Get();
}
inline void HloModuleMetadataProto::_internal_set_module_group_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_group_name_.Set(value, GetArena());
}
inline std::string* HloModuleMetadataProto::_internal_mutable_module_group_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.module_group_name_.Mutable( GetArena());
}
inline std::string* HloModuleMetadataProto::release_module_group_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleMetadataProto.module_group_name)
  return _impl_.module_group_name_.Release();
}
inline void HloModuleMetadataProto::set_allocated_module_group_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_group_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.module_group_name_.IsDefault()) {
          _impl_.module_group_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleMetadataProto.module_group_name)
}

// int64 original_module_id = 3;
inline void HloModuleMetadataProto::clear_original_module_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_module_id_ = ::int64_t{0};
}
inline ::int64_t HloModuleMetadataProto::original_module_id() const {
  // @@protoc_insertion_point(field_get:xla.HloModuleMetadataProto.original_module_id)
  return _internal_original_module_id();
}
inline void HloModuleMetadataProto::set_original_module_id(::int64_t value) {
  _internal_set_original_module_id(value);
  // @@protoc_insertion_point(field_set:xla.HloModuleMetadataProto.original_module_id)
}
inline ::int64_t HloModuleMetadataProto::_internal_original_module_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.original_module_id_;
}
inline void HloModuleMetadataProto::_internal_set_original_module_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_module_id_ = value;
}

// repeated int64 partitioned_module_ids = 4;
inline int HloModuleMetadataProto::_internal_partitioned_module_ids_size() const {
  return _internal_partitioned_module_ids().size();
}
inline int HloModuleMetadataProto::partitioned_module_ids_size() const {
  return _internal_partitioned_module_ids_size();
}
inline void HloModuleMetadataProto::clear_partitioned_module_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.partitioned_module_ids_.Clear();
}
inline ::int64_t HloModuleMetadataProto::partitioned_module_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloModuleMetadataProto.partitioned_module_ids)
  return _internal_partitioned_module_ids().Get(index);
}
inline void HloModuleMetadataProto::set_partitioned_module_ids(int index, ::int64_t value) {
  _internal_mutable_partitioned_module_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloModuleMetadataProto.partitioned_module_ids)
}
inline void HloModuleMetadataProto::add_partitioned_module_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_partitioned_module_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloModuleMetadataProto.partitioned_module_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloModuleMetadataProto::partitioned_module_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleMetadataProto.partitioned_module_ids)
  return _internal_partitioned_module_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloModuleMetadataProto::mutable_partitioned_module_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleMetadataProto.partitioned_module_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_partitioned_module_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloModuleMetadataProto::_internal_partitioned_module_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.partitioned_module_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloModuleMetadataProto::_internal_mutable_partitioned_module_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.partitioned_module_ids_;
}

// repeated .xla.HloPassMetadata pass_metadata = 5;
inline int HloModuleMetadataProto::_internal_pass_metadata_size() const {
  return _internal_pass_metadata().size();
}
inline int HloModuleMetadataProto::pass_metadata_size() const {
  return _internal_pass_metadata_size();
}
inline void HloModuleMetadataProto::clear_pass_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_metadata_.Clear();
}
inline ::xla::HloPassMetadata* HloModuleMetadataProto::mutable_pass_metadata(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloModuleMetadataProto.pass_metadata)
  return _internal_mutable_pass_metadata()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>* HloModuleMetadataProto::mutable_pass_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloModuleMetadataProto.pass_metadata)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_pass_metadata();
}
inline const ::xla::HloPassMetadata& HloModuleMetadataProto::pass_metadata(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloModuleMetadataProto.pass_metadata)
  return _internal_pass_metadata().Get(index);
}
inline ::xla::HloPassMetadata* HloModuleMetadataProto::add_pass_metadata() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::HloPassMetadata* _add = _internal_mutable_pass_metadata()->Add();
  // @@protoc_insertion_point(field_add:xla.HloModuleMetadataProto.pass_metadata)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>& HloModuleMetadataProto::pass_metadata() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloModuleMetadataProto.pass_metadata)
  return _internal_pass_metadata();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>&
HloModuleMetadataProto::_internal_pass_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pass_metadata_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>*
HloModuleMetadataProto::_internal_mutable_pass_metadata() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.pass_metadata_;
}

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

// HloPassMetadata

// int64 pass_id = 1;
inline void HloPassMetadata::clear_pass_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_id_ = ::int64_t{0};
}
inline ::int64_t HloPassMetadata::pass_id() const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.pass_id)
  return _internal_pass_id();
}
inline void HloPassMetadata::set_pass_id(::int64_t value) {
  _internal_set_pass_id(value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.pass_id)
}
inline ::int64_t HloPassMetadata::_internal_pass_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pass_id_;
}
inline void HloPassMetadata::_internal_set_pass_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_id_ = value;
}

// string pass_name = 2;
inline void HloPassMetadata::clear_pass_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_name_.ClearToEmpty();
}
inline const std::string& HloPassMetadata::pass_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.pass_name)
  return _internal_pass_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloPassMetadata::set_pass_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.pass_name)
}
inline std::string* HloPassMetadata::mutable_pass_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_pass_name();
  // @@protoc_insertion_point(field_mutable:xla.HloPassMetadata.pass_name)
  return _s;
}
inline const std::string& HloPassMetadata::_internal_pass_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pass_name_.Get();
}
inline void HloPassMetadata::_internal_set_pass_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_name_.Set(value, GetArena());
}
inline std::string* HloPassMetadata::_internal_mutable_pass_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.pass_name_.Mutable( GetArena());
}
inline std::string* HloPassMetadata::release_pass_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloPassMetadata.pass_name)
  return _impl_.pass_name_.Release();
}
inline void HloPassMetadata::set_allocated_pass_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pass_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.pass_name_.IsDefault()) {
          _impl_.pass_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloPassMetadata.pass_name)
}

// string pipeline_name = 3;
inline void HloPassMetadata::clear_pipeline_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pipeline_name_.ClearToEmpty();
}
inline const std::string& HloPassMetadata::pipeline_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.pipeline_name)
  return _internal_pipeline_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void HloPassMetadata::set_pipeline_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pipeline_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.pipeline_name)
}
inline std::string* HloPassMetadata::mutable_pipeline_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_pipeline_name();
  // @@protoc_insertion_point(field_mutable:xla.HloPassMetadata.pipeline_name)
  return _s;
}
inline const std::string& HloPassMetadata::_internal_pipeline_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pipeline_name_.Get();
}
inline void HloPassMetadata::_internal_set_pipeline_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pipeline_name_.Set(value, GetArena());
}
inline std::string* HloPassMetadata::_internal_mutable_pipeline_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.pipeline_name_.Mutable( GetArena());
}
inline std::string* HloPassMetadata::release_pipeline_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloPassMetadata.pipeline_name)
  return _impl_.pipeline_name_.Release();
}
inline void HloPassMetadata::set_allocated_pipeline_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pipeline_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.pipeline_name_.IsDefault()) {
          _impl_.pipeline_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.HloPassMetadata.pipeline_name)
}

// repeated string dump_filenames = 4;
inline int HloPassMetadata::_internal_dump_filenames_size() const {
  return _internal_dump_filenames().size();
}
inline int HloPassMetadata::dump_filenames_size() const {
  return _internal_dump_filenames_size();
}
inline void HloPassMetadata::clear_dump_filenames() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dump_filenames_.Clear();
}
inline std::string* HloPassMetadata::add_dump_filenames() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_dump_filenames()->Add();
  // @@protoc_insertion_point(field_add_mutable:xla.HloPassMetadata.dump_filenames)
  return _s;
}
inline const std::string& HloPassMetadata::dump_filenames(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.dump_filenames)
  return _internal_dump_filenames().Get(index);
}
inline std::string* HloPassMetadata::mutable_dump_filenames(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloPassMetadata.dump_filenames)
  return _internal_mutable_dump_filenames()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void HloPassMetadata::set_dump_filenames(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_dump_filenames()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.dump_filenames)
}
template <typename Arg_, typename... Args_>
inline void HloPassMetadata::add_dump_filenames(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_dump_filenames(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:xla.HloPassMetadata.dump_filenames)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
HloPassMetadata::dump_filenames() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloPassMetadata.dump_filenames)
  return _internal_dump_filenames();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
HloPassMetadata::mutable_dump_filenames() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloPassMetadata.dump_filenames)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dump_filenames();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
HloPassMetadata::_internal_dump_filenames() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dump_filenames_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
HloPassMetadata::_internal_mutable_dump_filenames() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dump_filenames_;
}

// bool module_changed = 5;
inline void HloPassMetadata::clear_module_changed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_changed_ = false;
}
inline bool HloPassMetadata::module_changed() const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.module_changed)
  return _internal_module_changed();
}
inline void HloPassMetadata::set_module_changed(bool value) {
  _internal_set_module_changed(value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.module_changed)
}
inline bool HloPassMetadata::_internal_module_changed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.module_changed_;
}
inline void HloPassMetadata::_internal_set_module_changed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_changed_ = value;
}

// int64 module_id = 6;
inline void HloPassMetadata::clear_module_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_id_ = ::int64_t{0};
}
inline ::int64_t HloPassMetadata::module_id() const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.module_id)
  return _internal_module_id();
}
inline void HloPassMetadata::set_module_id(::int64_t value) {
  _internal_set_module_id(value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.module_id)
}
inline ::int64_t HloPassMetadata::_internal_module_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.module_id_;
}
inline void HloPassMetadata::_internal_set_module_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_id_ = value;
}

// repeated int64 module_group_module_ids = 7;
inline int HloPassMetadata::_internal_module_group_module_ids_size() const {
  return _internal_module_group_module_ids().size();
}
inline int HloPassMetadata::module_group_module_ids_size() const {
  return _internal_module_group_module_ids_size();
}
inline void HloPassMetadata::clear_module_group_module_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.module_group_module_ids_.Clear();
}
inline ::int64_t HloPassMetadata::module_group_module_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.module_group_module_ids)
  return _internal_module_group_module_ids().Get(index);
}
inline void HloPassMetadata::set_module_group_module_ids(int index, ::int64_t value) {
  _internal_mutable_module_group_module_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.module_group_module_ids)
}
inline void HloPassMetadata::add_module_group_module_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_module_group_module_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.HloPassMetadata.module_group_module_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& HloPassMetadata::module_group_module_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloPassMetadata.module_group_module_ids)
  return _internal_module_group_module_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloPassMetadata::mutable_module_group_module_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloPassMetadata.module_group_module_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_module_group_module_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
HloPassMetadata::_internal_module_group_module_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.module_group_module_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* HloPassMetadata::_internal_mutable_module_group_module_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.module_group_module_ids_;
}

// int64 start_timestamp_usec = 8;
inline void HloPassMetadata::clear_start_timestamp_usec() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_timestamp_usec_ = ::int64_t{0};
}
inline ::int64_t HloPassMetadata::start_timestamp_usec() const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.start_timestamp_usec)
  return _internal_start_timestamp_usec();
}
inline void HloPassMetadata::set_start_timestamp_usec(::int64_t value) {
  _internal_set_start_timestamp_usec(value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.start_timestamp_usec)
}
inline ::int64_t HloPassMetadata::_internal_start_timestamp_usec() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_timestamp_usec_;
}
inline void HloPassMetadata::_internal_set_start_timestamp_usec(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_timestamp_usec_ = value;
}

// int64 end_timestamp_usec = 9;
inline void HloPassMetadata::clear_end_timestamp_usec() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_timestamp_usec_ = ::int64_t{0};
}
inline ::int64_t HloPassMetadata::end_timestamp_usec() const {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.end_timestamp_usec)
  return _internal_end_timestamp_usec();
}
inline void HloPassMetadata::set_end_timestamp_usec(::int64_t value) {
  _internal_set_end_timestamp_usec(value);
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.end_timestamp_usec)
}
inline ::int64_t HloPassMetadata::_internal_end_timestamp_usec() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_timestamp_usec_;
}
inline void HloPassMetadata::_internal_set_end_timestamp_usec(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_timestamp_usec_ = value;
}

// .google.protobuf.Any custom_metadata = 10;
inline bool HloPassMetadata::has_custom_metadata() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.custom_metadata_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& HloPassMetadata::_internal_custom_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.custom_metadata_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Any&>(::google::protobuf::_Any_default_instance_);
}
inline const ::google::protobuf::Any& HloPassMetadata::custom_metadata() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.custom_metadata)
  return _internal_custom_metadata();
}
inline void HloPassMetadata::unsafe_arena_set_allocated_custom_metadata(::google::protobuf::Any* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.custom_metadata_);
  }
  _impl_.custom_metadata_ = 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.HloPassMetadata.custom_metadata)
}
inline ::google::protobuf::Any* HloPassMetadata::release_custom_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Any* released = _impl_.custom_metadata_;
  _impl_.custom_metadata_ = 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* HloPassMetadata::unsafe_arena_release_custom_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloPassMetadata.custom_metadata)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Any* temp = _impl_.custom_metadata_;
  _impl_.custom_metadata_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* HloPassMetadata::_internal_mutable_custom_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.custom_metadata_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.custom_metadata_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.custom_metadata_;
}
inline ::google::protobuf::Any* HloPassMetadata::mutable_custom_metadata() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::google::protobuf::Any* _msg = _internal_mutable_custom_metadata();
  // @@protoc_insertion_point(field_mutable:xla.HloPassMetadata.custom_metadata)
  return _msg;
}
inline void HloPassMetadata::set_allocated_custom_metadata(::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_.custom_metadata_);
  }

  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_.custom_metadata_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloPassMetadata.custom_metadata)
}

// repeated .xla.KeyValueMetric kv_metrics = 11;
inline int HloPassMetadata::_internal_kv_metrics_size() const {
  return _internal_kv_metrics().size();
}
inline int HloPassMetadata::kv_metrics_size() const {
  return _internal_kv_metrics_size();
}
inline ::xla::KeyValueMetric* HloPassMetadata::mutable_kv_metrics(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.HloPassMetadata.kv_metrics)
  return _internal_mutable_kv_metrics()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>* HloPassMetadata::mutable_kv_metrics()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.HloPassMetadata.kv_metrics)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_kv_metrics();
}
inline const ::xla::KeyValueMetric& HloPassMetadata::kv_metrics(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloPassMetadata.kv_metrics)
  return _internal_kv_metrics().Get(index);
}
inline ::xla::KeyValueMetric* HloPassMetadata::add_kv_metrics() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::KeyValueMetric* _add = _internal_mutable_kv_metrics()->Add();
  // @@protoc_insertion_point(field_add:xla.HloPassMetadata.kv_metrics)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>& HloPassMetadata::kv_metrics() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.HloPassMetadata.kv_metrics)
  return _internal_kv_metrics();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>&
HloPassMetadata::_internal_kv_metrics() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kv_metrics_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>*
HloPassMetadata::_internal_mutable_kv_metrics() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.kv_metrics_;
}

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

// OriginalValueRecoveryTableProto_Entry

// .xla.OriginalArrayProto removed_original_array = 1;
inline bool OriginalValueRecoveryTableProto_Entry::has_removed_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.removed_original_array_ != nullptr);
  return value;
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::_internal_removed_original_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalArrayProto* p = _impl_.removed_original_array_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalArrayProto&>(::xla::_OriginalArrayProto_default_instance_);
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::removed_original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.Entry.removed_original_array)
  return _internal_removed_original_array();
}
inline void OriginalValueRecoveryTableProto_Entry::unsafe_arena_set_allocated_removed_original_array(::xla::OriginalArrayProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.removed_original_array_);
  }
  _impl_.removed_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.removed_original_array)
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::release_removed_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* released = _impl_.removed_original_array_;
  _impl_.removed_original_array_ = 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::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::unsafe_arena_release_removed_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueRecoveryTableProto.Entry.removed_original_array)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* temp = _impl_.removed_original_array_;
  _impl_.removed_original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::_internal_mutable_removed_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.removed_original_array_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalArrayProto>(GetArena());
    _impl_.removed_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(p);
  }
  return _impl_.removed_original_array_;
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::mutable_removed_original_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::OriginalArrayProto* _msg = _internal_mutable_removed_original_array();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.Entry.removed_original_array)
  return _msg;
}
inline void OriginalValueRecoveryTableProto_Entry::set_allocated_removed_original_array(::xla::OriginalArrayProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.removed_original_array_);
  }

  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_.removed_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.removed_original_array)
}

// .xla.OriginalArrayProto remaining_original_array = 2;
inline bool OriginalValueRecoveryTableProto_Entry::has_remaining_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.remaining_original_array_ != nullptr);
  return value;
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::_internal_remaining_original_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalArrayProto* p = _impl_.remaining_original_array_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalArrayProto&>(::xla::_OriginalArrayProto_default_instance_);
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::remaining_original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.Entry.remaining_original_array)
  return _internal_remaining_original_array();
}
inline void OriginalValueRecoveryTableProto_Entry::unsafe_arena_set_allocated_remaining_original_array(::xla::OriginalArrayProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.remaining_original_array_);
  }
  _impl_.remaining_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.remaining_original_array)
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::release_remaining_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OriginalArrayProto* released = _impl_.remaining_original_array_;
  _impl_.remaining_original_array_ = 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::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::unsafe_arena_release_remaining_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueRecoveryTableProto.Entry.remaining_original_array)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OriginalArrayProto* temp = _impl_.remaining_original_array_;
  _impl_.remaining_original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::_internal_mutable_remaining_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.remaining_original_array_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalArrayProto>(GetArena());
    _impl_.remaining_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(p);
  }
  return _impl_.remaining_original_array_;
}
inline ::xla::OriginalArrayProto* OriginalValueRecoveryTableProto_Entry::mutable_remaining_original_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::OriginalArrayProto* _msg = _internal_mutable_remaining_original_array();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.Entry.remaining_original_array)
  return _msg;
}
inline void OriginalValueRecoveryTableProto_Entry::set_allocated_remaining_original_array(::xla::OriginalArrayProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.remaining_original_array_);
  }

  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_.remaining_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.remaining_original_array)
}

// .xla.HloModuleProto recovery_module = 3;
inline bool OriginalValueRecoveryTableProto_Entry::has_recovery_module() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.recovery_module_ != nullptr);
  return value;
}
inline void OriginalValueRecoveryTableProto_Entry::clear_recovery_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.recovery_module_ != nullptr) _impl_.recovery_module_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::HloModuleProto& OriginalValueRecoveryTableProto_Entry::_internal_recovery_module() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HloModuleProto* p = _impl_.recovery_module_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HloModuleProto&>(::xla::_HloModuleProto_default_instance_);
}
inline const ::xla::HloModuleProto& OriginalValueRecoveryTableProto_Entry::recovery_module() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.Entry.recovery_module)
  return _internal_recovery_module();
}
inline void OriginalValueRecoveryTableProto_Entry::unsafe_arena_set_allocated_recovery_module(::xla::HloModuleProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.recovery_module_);
  }
  _impl_.recovery_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.recovery_module)
}
inline ::xla::HloModuleProto* OriginalValueRecoveryTableProto_Entry::release_recovery_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::HloModuleProto* released = _impl_.recovery_module_;
  _impl_.recovery_module_ = 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::HloModuleProto* OriginalValueRecoveryTableProto_Entry::unsafe_arena_release_recovery_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueRecoveryTableProto.Entry.recovery_module)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::HloModuleProto* temp = _impl_.recovery_module_;
  _impl_.recovery_module_ = nullptr;
  return temp;
}
inline ::xla::HloModuleProto* OriginalValueRecoveryTableProto_Entry::_internal_mutable_recovery_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.recovery_module_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HloModuleProto>(GetArena());
    _impl_.recovery_module_ = reinterpret_cast<::xla::HloModuleProto*>(p);
  }
  return _impl_.recovery_module_;
}
inline ::xla::HloModuleProto* OriginalValueRecoveryTableProto_Entry::mutable_recovery_module() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::HloModuleProto* _msg = _internal_mutable_recovery_module();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.Entry.recovery_module)
  return _msg;
}
inline void OriginalValueRecoveryTableProto_Entry::set_allocated_recovery_module(::xla::HloModuleProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.recovery_module_);
  }

  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_.recovery_module_ = reinterpret_cast<::xla::HloModuleProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.recovery_module)
}

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

// OriginalValueRecoveryTableProto

// repeated .xla.OriginalValueRecoveryTableProto.Entry entries = 1;
inline int OriginalValueRecoveryTableProto::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int OriginalValueRecoveryTableProto::entries_size() const {
  return _internal_entries_size();
}
inline void OriginalValueRecoveryTableProto::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline ::xla::OriginalValueRecoveryTableProto_Entry* OriginalValueRecoveryTableProto::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>* OriginalValueRecoveryTableProto::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalValueRecoveryTableProto.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::xla::OriginalValueRecoveryTableProto_Entry& OriginalValueRecoveryTableProto::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.entries)
  return _internal_entries().Get(index);
}
inline ::xla::OriginalValueRecoveryTableProto_Entry* OriginalValueRecoveryTableProto::add_entries() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OriginalValueRecoveryTableProto_Entry* _add = _internal_mutable_entries()->Add();
  // @@protoc_insertion_point(field_add:xla.OriginalValueRecoveryTableProto.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>& OriginalValueRecoveryTableProto::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalValueRecoveryTableProto.entries)
  return _internal_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>&
OriginalValueRecoveryTableProto::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>*
OriginalValueRecoveryTableProto::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

#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::HloModuleProto_ProfileType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::HloModuleProto_ProfileType>() {
  return ::xla::HloModuleProto_ProfileType_descriptor();
}
template <>
struct is_proto_enum<::xla::HloModuleProto_ProfileGenerationStrategy> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::HloModuleProto_ProfileGenerationStrategy>() {
  return ::xla::HloModuleProto_ProfileGenerationStrategy_descriptor();
}
template <>
struct is_proto_enum<::xla::HeapSimulatorTrace_Event_Kind> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::HeapSimulatorTrace_Event_Kind>() {
  return ::xla::HeapSimulatorTrace_Event_Kind_descriptor();
}
template <>
struct is_proto_enum<::xla::CustomCallSchedule> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::CustomCallSchedule>() {
  return ::xla::CustomCallSchedule_descriptor();
}
template <>
struct is_proto_enum<::xla::CustomCallApiVersion> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::CustomCallApiVersion>() {
  return ::xla::CustomCallApiVersion_descriptor();
}
template <>
struct is_proto_enum<::xla::Kind> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::Kind>() {
  return ::xla::Kind_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fhlo_2eproto_2epb_2eh
