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

#ifndef xla_2fservice_2fhlo_2eproto_2epb_2eh
#define xla_2fservice_2fhlo_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6031001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.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 {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct PROTOBUF_EXPORT TableStruct_xla_2fservice_2fhlo_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable descriptor_table_xla_2fservice_2fhlo_2eproto;
}  // extern "C"
namespace xla {
enum ConvolutionKind : int;
PROTOBUF_EXPORT extern const uint32_t ConvolutionKind_internal_data_[];
enum CustomCallApiVersion : int;
PROTOBUF_EXPORT extern const uint32_t CustomCallApiVersion_internal_data_[];
enum CustomCallSchedule : int;
PROTOBUF_EXPORT extern const uint32_t CustomCallSchedule_internal_data_[];
enum HeapSimulatorTrace_Event_Kind : int;
PROTOBUF_EXPORT extern const uint32_t HeapSimulatorTrace_Event_Kind_internal_data_[];
enum HloModuleProto_ProfileType : int;
PROTOBUF_EXPORT extern const uint32_t HloModuleProto_ProfileType_internal_data_[];
enum Kind : int;
PROTOBUF_EXPORT extern const uint32_t Kind_internal_data_[];
enum TriState : int;
PROTOBUF_EXPORT extern const uint32_t TriState_internal_data_[];
class BufferAllocationProto;
struct BufferAllocationProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAllocationProtoDefaultTypeInternal _BufferAllocationProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull BufferAllocationProto_class_data_;
class BufferAllocationProto_Assigned;
struct BufferAllocationProto_AssignedDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAllocationProto_AssignedDefaultTypeInternal _BufferAllocationProto_Assigned_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull BufferAllocationProto_Assigned_class_data_;
class BufferAssignmentProto;
struct BufferAssignmentProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAssignmentProtoDefaultTypeInternal _BufferAssignmentProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull BufferAssignmentProto_class_data_;
class BufferAssignmentProto_BufferAlias;
struct BufferAssignmentProto_BufferAliasDefaultTypeInternal;
PROTOBUF_EXPORT extern BufferAssignmentProto_BufferAliasDefaultTypeInternal _BufferAssignmentProto_BufferAlias_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull BufferAssignmentProto_BufferAlias_class_data_;
class CrossProgramPrefetch;
struct CrossProgramPrefetchDefaultTypeInternal;
PROTOBUF_EXPORT extern CrossProgramPrefetchDefaultTypeInternal _CrossProgramPrefetch_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CrossProgramPrefetch_class_data_;
class HeapSimulatorTrace;
struct HeapSimulatorTraceDefaultTypeInternal;
PROTOBUF_EXPORT extern HeapSimulatorTraceDefaultTypeInternal _HeapSimulatorTrace_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HeapSimulatorTrace_class_data_;
class HeapSimulatorTrace_Event;
struct HeapSimulatorTrace_EventDefaultTypeInternal;
PROTOBUF_EXPORT extern HeapSimulatorTrace_EventDefaultTypeInternal _HeapSimulatorTrace_Event_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HeapSimulatorTrace_Event_class_data_;
class HloBufferDonorProto;
struct HloBufferDonorProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloBufferDonorProtoDefaultTypeInternal _HloBufferDonorProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloBufferDonorProto_class_data_;
class HloBufferDonorProto_BufferDonorEntryProto;
struct HloBufferDonorProto_BufferDonorEntryProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloBufferDonorProto_BufferDonorEntryProtoDefaultTypeInternal _HloBufferDonorProto_BufferDonorEntryProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloBufferDonorProto_BufferDonorEntryProto_class_data_;
class HloComputationProto;
struct HloComputationProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloComputationProtoDefaultTypeInternal _HloComputationProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloComputationProto_class_data_;
class HloInputOutputAliasProto;
struct HloInputOutputAliasProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputOutputAliasProtoDefaultTypeInternal _HloInputOutputAliasProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInputOutputAliasProto_class_data_;
class HloInputOutputAliasProto_AliasEntryProto;
struct HloInputOutputAliasProto_AliasEntryProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputOutputAliasProto_AliasEntryProtoDefaultTypeInternal _HloInputOutputAliasProto_AliasEntryProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInputOutputAliasProto_AliasEntryProto_class_data_;
class HloInputs;
struct HloInputsDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputsDefaultTypeInternal _HloInputs_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInputs_class_data_;
class HloInputs_LiteralDescriptor;
struct HloInputs_LiteralDescriptorDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInputs_LiteralDescriptorDefaultTypeInternal _HloInputs_LiteralDescriptor_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInputs_LiteralDescriptor_class_data_;
class HloInstructionProto;
struct HloInstructionProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInstructionProtoDefaultTypeInternal _HloInstructionProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInstructionProto_class_data_;
class HloInstructionProto_SliceDimensions;
struct HloInstructionProto_SliceDimensionsDefaultTypeInternal;
PROTOBUF_EXPORT extern HloInstructionProto_SliceDimensionsDefaultTypeInternal _HloInstructionProto_SliceDimensions_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloInstructionProto_SliceDimensions_class_data_;
class HloModuleGroupProto;
struct HloModuleGroupProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleGroupProtoDefaultTypeInternal _HloModuleGroupProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloModuleGroupProto_class_data_;
class HloModuleMetadataProto;
struct HloModuleMetadataProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleMetadataProtoDefaultTypeInternal _HloModuleMetadataProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloModuleMetadataProto_class_data_;
class HloModuleProto;
struct HloModuleProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleProtoDefaultTypeInternal _HloModuleProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloModuleProto_class_data_;
class HloModuleProto_ProfileInfo;
struct HloModuleProto_ProfileInfoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloModuleProto_ProfileInfoDefaultTypeInternal _HloModuleProto_ProfileInfo_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloModuleProto_ProfileInfo_class_data_;
class HloPassMetadata;
struct HloPassMetadataDefaultTypeInternal;
PROTOBUF_EXPORT extern HloPassMetadataDefaultTypeInternal _HloPassMetadata_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloPassMetadata_class_data_;
class HloProto;
struct HloProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloProtoDefaultTypeInternal _HloProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloProto_class_data_;
class HloScheduleProto;
struct HloScheduleProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProtoDefaultTypeInternal _HloScheduleProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloScheduleProto_class_data_;
class HloScheduleProto_InstructionSequence;
struct HloScheduleProto_InstructionSequenceDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProto_InstructionSequenceDefaultTypeInternal _HloScheduleProto_InstructionSequence_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloScheduleProto_InstructionSequence_class_data_;
class HloScheduleProto_SequencesEntry_DoNotUse;
struct HloScheduleProto_SequencesEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern HloScheduleProto_SequencesEntry_DoNotUseDefaultTypeInternal _HloScheduleProto_SequencesEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloScheduleProto_SequencesEntry_DoNotUse_class_data_;
class HloSnapshot;
struct HloSnapshotDefaultTypeInternal;
PROTOBUF_EXPORT extern HloSnapshotDefaultTypeInternal _HloSnapshot_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloSnapshot_class_data_;
class HloUnoptimizedSnapshot;
struct HloUnoptimizedSnapshotDefaultTypeInternal;
PROTOBUF_EXPORT extern HloUnoptimizedSnapshotDefaultTypeInternal _HloUnoptimizedSnapshot_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloUnoptimizedSnapshot_class_data_;
class LogicalBufferProto;
struct LogicalBufferProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LogicalBufferProtoDefaultTypeInternal _LogicalBufferProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull LogicalBufferProto_class_data_;
class LogicalBufferProto_Location;
struct LogicalBufferProto_LocationDefaultTypeInternal;
PROTOBUF_EXPORT extern LogicalBufferProto_LocationDefaultTypeInternal _LogicalBufferProto_Location_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull LogicalBufferProto_Location_class_data_;
class OriginalValueRecoveryTableProto;
struct OriginalValueRecoveryTableProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueRecoveryTableProtoDefaultTypeInternal _OriginalValueRecoveryTableProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OriginalValueRecoveryTableProto_class_data_;
class OriginalValueRecoveryTableProto_Entry;
struct OriginalValueRecoveryTableProto_EntryDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueRecoveryTableProto_EntryDefaultTypeInternal _OriginalValueRecoveryTableProto_Entry_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OriginalValueRecoveryTableProto_Entry_class_data_;
class StackFrameIndexProto;
struct StackFrameIndexProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProtoDefaultTypeInternal _StackFrameIndexProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull StackFrameIndexProto_class_data_;
class StackFrameIndexProto_FileLocation;
struct StackFrameIndexProto_FileLocationDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProto_FileLocationDefaultTypeInternal _StackFrameIndexProto_FileLocation_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull StackFrameIndexProto_FileLocation_class_data_;
class StackFrameIndexProto_StackFrame;
struct StackFrameIndexProto_StackFrameDefaultTypeInternal;
PROTOBUF_EXPORT extern StackFrameIndexProto_StackFrameDefaultTypeInternal _StackFrameIndexProto_StackFrame_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull StackFrameIndexProto_StackFrame_class_data_;
}  // namespace xla
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::xla::ConvolutionKind_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ConvolutionKind>;
template <>
internal::EnumTraitsT<::xla::CustomCallApiVersion_internal_data_>
    internal::EnumTraitsImpl::value<::xla::CustomCallApiVersion>;
template <>
internal::EnumTraitsT<::xla::CustomCallSchedule_internal_data_>
    internal::EnumTraitsImpl::value<::xla::CustomCallSchedule>;
template <>
internal::EnumTraitsT<::xla::HeapSimulatorTrace_Event_Kind_internal_data_>
    internal::EnumTraitsImpl::value<::xla::HeapSimulatorTrace_Event_Kind>;
template <>
internal::EnumTraitsT<::xla::HloModuleProto_ProfileType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::HloModuleProto_ProfileType>;
template <>
internal::EnumTraitsT<::xla::Kind_internal_data_>
    internal::EnumTraitsImpl::value<::xla::Kind>;
template <>
internal::EnumTraitsT<::xla::TriState_internal_data_>
    internal::EnumTraitsImpl::value<::xla::TriState>;
}  // 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 extern const uint32_t HloModuleProto_ProfileType_internal_data_[];
inline constexpr HloModuleProto_ProfileType HloModuleProto_ProfileType_ProfileType_MIN =
    static_cast<HloModuleProto_ProfileType>(0);
inline constexpr HloModuleProto_ProfileType HloModuleProto_ProfileType_ProfileType_MAX =
    static_cast<HloModuleProto_ProfileType>(7);
inline bool HloModuleProto_ProfileType_IsValid(int value) {
  return 0 <= value && value <= 7;
}
inline constexpr int HloModuleProto_ProfileType_ProfileType_ARRAYSIZE = 7 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<HloModuleProto_ProfileType>(HloModuleProto_ProfileType_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 extern const uint32_t HeapSimulatorTrace_Event_Kind_internal_data_[];
inline constexpr HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event_Kind_Kind_MIN =
    static_cast<HeapSimulatorTrace_Event_Kind>(0);
inline constexpr HeapSimulatorTrace_Event_Kind HeapSimulatorTrace_Event_Kind_Kind_MAX =
    static_cast<HeapSimulatorTrace_Event_Kind>(2);
inline bool HeapSimulatorTrace_Event_Kind_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int HeapSimulatorTrace_Event_Kind_Kind_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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 extern const uint32_t CustomCallSchedule_internal_data_[];
inline constexpr CustomCallSchedule CustomCallSchedule_MIN =
    static_cast<CustomCallSchedule>(0);
inline constexpr CustomCallSchedule CustomCallSchedule_MAX =
    static_cast<CustomCallSchedule>(2);
inline bool CustomCallSchedule_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int CustomCallSchedule_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<CustomCallSchedule>(CustomCallSchedule_descriptor(), name,
                                           value);
}
enum TriState : int {
  TRI_STATE_UNSPECIFIED = 0,
  TRI_STATE_TRUE = 1,
  TRI_STATE_FALSE = 2,
  TriState_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  TriState_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t TriState_internal_data_[];
inline constexpr TriState TriState_MIN =
    static_cast<TriState>(0);
inline constexpr TriState TriState_MAX =
    static_cast<TriState>(2);
inline bool TriState_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int TriState_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL TriState_descriptor();
template <typename T>
const ::std::string& TriState_Name(T value) {
  static_assert(::std::is_same<T, TriState>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to TriState_Name().");
  return TriState_Name(static_cast<TriState>(value));
}
template <>
inline const ::std::string& TriState_Name(TriState value) {
  return ::google::protobuf::internal::NameOfDenseEnum<TriState_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool TriState_Parse(
    ::absl::string_view name, TriState* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<TriState>(TriState_descriptor(), name,
                                           value);
}
enum ConvolutionKind : int {
  CONVOLUTION_KIND_UNSET = 0,
  CONVOLUTION_KIND_FPROP = 1,
  CONVOLUTION_KIND_DGRAD = 2,
  CONVOLUTION_KIND_WGRAD = 3,
  ConvolutionKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ConvolutionKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ConvolutionKind_internal_data_[];
inline constexpr ConvolutionKind ConvolutionKind_MIN =
    static_cast<ConvolutionKind>(0);
inline constexpr ConvolutionKind ConvolutionKind_MAX =
    static_cast<ConvolutionKind>(3);
inline bool ConvolutionKind_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int ConvolutionKind_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ConvolutionKind_descriptor();
template <typename T>
const ::std::string& ConvolutionKind_Name(T value) {
  static_assert(::std::is_same<T, ConvolutionKind>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ConvolutionKind_Name().");
  return ConvolutionKind_Name(static_cast<ConvolutionKind>(value));
}
template <>
inline const ::std::string& ConvolutionKind_Name(ConvolutionKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ConvolutionKind_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool ConvolutionKind_Parse(
    ::absl::string_view name, ConvolutionKind* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ConvolutionKind>(ConvolutionKind_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 extern const uint32_t CustomCallApiVersion_internal_data_[];
inline constexpr CustomCallApiVersion CustomCallApiVersion_MIN =
    static_cast<CustomCallApiVersion>(0);
inline constexpr CustomCallApiVersion CustomCallApiVersion_MAX =
    static_cast<CustomCallApiVersion>(4);
inline bool CustomCallApiVersion_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int CustomCallApiVersion_ARRAYSIZE = 4 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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 extern const uint32_t Kind_internal_data_[];
inline constexpr Kind Kind_MIN =
    static_cast<Kind>(0);
inline constexpr Kind Kind_MAX =
    static_cast<Kind>(2);
inline bool Kind_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int Kind_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StackFrameIndexProto_StackFrame& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StackFrameIndexProto_StackFrame* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const StackFrameIndexProto_StackFrame& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t file_location_id_;
    ::int32_t parent_frame_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StackFrameIndexProto_FileLocation& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StackFrameIndexProto_FileLocation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFileNameIdFieldNumber = 1,
    kFunctionNameIdFieldNumber = 2,
    kLineFieldNumber = 3,
    kColumnFieldNumber = 4,
    kEndLineFieldNumber = 5,
    kEndColumnFieldNumber = 6,
  };
  // 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:
  // int32 end_line = 5;
  void clear_end_line() ;
  ::int32_t end_line() const;
  void set_end_line(::int32_t value);

  private:
  ::int32_t _internal_end_line() const;
  void _internal_set_end_line(::int32_t value);

  public:
  // int32 end_column = 6;
  void clear_end_column() ;
  ::int32_t end_column() const;
  void set_end_column(::int32_t value);

  private:
  ::int32_t _internal_end_column() const;
  void _internal_set_end_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<3, 6,
                                   0, 0,
                                   2>
      _table_;

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

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const LogicalBufferProto_Location& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LogicalBufferProto_Location* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_instruction_name();
  [[deprecated]] [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_instruction_name();
  [[deprecated]] void set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_instruction_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_instruction_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LogicalBufferProto_Location& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> shape_index_;
    ::google::protobuf::internal::CachedSize _shape_index_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::int64_t instruction_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloScheduleProto_InstructionSequence& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloScheduleProto_InstructionSequence* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_instruction_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_instruction_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloScheduleProto_InstructionSequence& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> instruction_ids_;
    ::google::protobuf::internal::CachedSize _instruction_ids_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloModuleProto_ProfileInfo& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloModuleProto_ProfileInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL mutable_fingerprint();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_fingerprint();
  void set_allocated_fingerprint(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_fingerprint() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_fingerprint(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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.ProfileGenerationStrategy profile_generation_strategy = 6;
  void clear_profile_generation_strategy() ;
  ::xla::ProfileGenerationStrategy profile_generation_strategy() const;
  void set_profile_generation_strategy(::xla::ProfileGenerationStrategy value);

  private:
  ::xla::ProfileGenerationStrategy _internal_profile_generation_strategy() const;
  void _internal_set_profile_generation_strategy(::xla::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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloModuleProto_ProfileInfo& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::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_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInstructionProto_SliceDimensions& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInstructionProto_SliceDimensions* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInstructionProto_SliceDimensions& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t start_;
    ::int64_t limit_;
    ::int64_t stride_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInputs_LiteralDescriptor& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInputs_LiteralDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInputs_LiteralDescriptor& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t argument_size_bytes_;
    ::int32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInputOutputAliasProto_AliasEntryProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInputOutputAliasProto_AliasEntryProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_output_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_output_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInputOutputAliasProto_AliasEntryProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> output_shape_index_;
    ::google::protobuf::internal::CachedSize _output_shape_index_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    ::google::protobuf::internal::CachedSize _parameter_shape_index_cached_byte_size_;
    ::int64_t parameter_number_;
    int kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloBufferDonorProto_BufferDonorEntryProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloBufferDonorProto_BufferDonorEntryProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloBufferDonorProto_BufferDonorEntryProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    ::google::protobuf::internal::CachedSize _parameter_shape_index_cached_byte_size_;
    ::int64_t parameter_number_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HeapSimulatorTrace_Event& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HeapSimulatorTrace_Event* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_computation_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_computation_name();
  void set_allocated_computation_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_computation_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_computation_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_instruction_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_instruction_name();
  void set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_instruction_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_instruction_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HeapSimulatorTrace_Event& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr computation_name_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::int64_t buffer_id_;
    ::int64_t share_with_canonical_id_;
    int kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CrossProgramPrefetch& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CrossProgramPrefetch* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CrossProgramPrefetch& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> index_;
    ::google::protobuf::internal::CachedSize _index_cached_byte_size_;
    ::int64_t parameter_;
    ::int64_t offset_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BufferAllocationProto_Assigned& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BufferAllocationProto_Assigned* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kLogicalBufferIdFieldNumber = 1,
    kOffsetFieldNumber = 2,
    kSizeFieldNumber = 3,
    kElementTypeFieldNumber = 4,
  };
  // 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:
  // .xla.PrimitiveType element_type = 4;
  void clear_element_type() ;
  ::xla::PrimitiveType element_type() const;
  void set_element_type(::xla::PrimitiveType value);

  private:
  ::xla::PrimitiveType _internal_element_type() const;
  void _internal_set_element_type(::xla::PrimitiveType 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, 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const BufferAllocationProto_Assigned& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t logical_buffer_id_;
    ::int64_t offset_;
    ::int64_t size_;
    int element_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StackFrameIndexProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StackFrameIndexProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL mutable_file_names();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_file_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL mutable_function_names();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_function_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_file_locations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>* PROTOBUF_NONNULL mutable_file_locations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>& _internal_file_locations() const;
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_FileLocation>* PROTOBUF_NONNULL _internal_mutable_file_locations();
  public:
  const ::xla::StackFrameIndexProto_FileLocation& file_locations(int index) const;
  ::xla::StackFrameIndexProto_FileLocation* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_stack_frames(int index);
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>* PROTOBUF_NONNULL mutable_stack_frames();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>& _internal_stack_frames() const;
  ::google::protobuf::RepeatedPtrField<::xla::StackFrameIndexProto_StackFrame>* PROTOBUF_NONNULL _internal_mutable_stack_frames();
  public:
  const ::xla::StackFrameIndexProto_StackFrame& stack_frames(int index) const;
  ::xla::StackFrameIndexProto_StackFrame* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE 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_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const LogicalBufferProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LogicalBufferProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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;
  [[nodiscard]] ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE release_defined_at();
  ::xla::LogicalBufferProto_Location* PROTOBUF_NONNULL mutable_defined_at();
  void set_allocated_defined_at(::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_defined_at(::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE value);
  ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE unsafe_arena_release_defined_at();

  private:
  const ::xla::LogicalBufferProto_Location& _internal_defined_at() const;
  ::xla::LogicalBufferProto_Location* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LogicalBufferProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE 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;
};

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

class HloScheduleProto_SequencesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::int64_t, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::int64_t, ::google::protobuf::Message,
                      ::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* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_HloScheduleProto_SequencesEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;

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

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HloScheduleProto_SequencesEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloPassMetadata& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloPassMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL mutable_dump_filenames();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_dump_filenames() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_module_group_module_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_module_group_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_kv_metrics(int index);
  ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>* PROTOBUF_NONNULL mutable_kv_metrics();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>& _internal_kv_metrics() const;
  ::google::protobuf::RepeatedPtrField<::xla::KeyValueMetric>* PROTOBUF_NONNULL _internal_mutable_kv_metrics();
  public:
  const ::xla::KeyValueMetric& kv_metrics(int index) const;
  ::xla::KeyValueMetric* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_pass_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_pass_name();
  void set_allocated_pass_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_pass_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_pass_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_pipeline_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_pipeline_name();
  void set_allocated_pipeline_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_pipeline_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_pipeline_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_custom_metadata();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_custom_metadata();
  void set_allocated_custom_metadata(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_metadata(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_custom_metadata();

  private:
  const ::google::protobuf::Any& _internal_custom_metadata() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloPassMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> dump_filenames_;
    ::google::protobuf::RepeatedField<::int64_t> module_group_module_ids_;
    ::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* PROTOBUF_NULLABLE 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;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInputOutputAliasProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInputOutputAliasProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>* PROTOBUF_NONNULL mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputOutputAliasProto_AliasEntryProto>* PROTOBUF_NONNULL _internal_mutable_entries();
  public:
  const ::xla::HloInputOutputAliasProto_AliasEntryProto& entries(int index) const;
  ::xla::HloInputOutputAliasProto_AliasEntryProto* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInputOutputAliasProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputOutputAliasProto_AliasEntryProto > entries_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloBufferDonorProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloBufferDonorProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>* PROTOBUF_NONNULL mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloBufferDonorProto_BufferDonorEntryProto>* PROTOBUF_NONNULL _internal_mutable_entries();
  public:
  const ::xla::HloBufferDonorProto_BufferDonorEntryProto& entries(int index) const;
  ::xla::HloBufferDonorProto_BufferDonorEntryProto* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloBufferDonorProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::HloBufferDonorProto_BufferDonorEntryProto > entries_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HeapSimulatorTrace& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HeapSimulatorTrace* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_events(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>* PROTOBUF_NONNULL mutable_events();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>& _internal_events() const;
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace_Event>* PROTOBUF_NONNULL _internal_mutable_events();
  public:
  const ::xla::HeapSimulatorTrace_Event& events(int index) const;
  ::xla::HeapSimulatorTrace_Event* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HeapSimulatorTrace& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HeapSimulatorTrace_Event > events_;
    ::int64_t buffer_allocation_index_;
    bool whole_module_simulation_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BufferAssignmentProto_BufferAlias& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BufferAssignmentProto_BufferAlias* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kLocationFieldNumber = 2,
    kSourceBufferIdFieldNumber = 1,
  };
  // .xla.LogicalBufferProto.Location location = 2;
  bool has_location() const;
  void clear_location() ;
  const ::xla::LogicalBufferProto_Location& location() const;
  [[nodiscard]] ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE release_location();
  ::xla::LogicalBufferProto_Location* PROTOBUF_NONNULL mutable_location();
  void set_allocated_location(::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_location(::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE value);
  ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE unsafe_arena_release_location();

  private:
  const ::xla::LogicalBufferProto_Location& _internal_location() const;
  ::xla::LogicalBufferProto_Location* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const BufferAssignmentProto_BufferAlias& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE location_;
    ::int64_t source_buffer_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BufferAllocationProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BufferAllocationProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Assigned = BufferAllocationProto_Assigned;

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>& _internal_assigned() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto_Assigned>* PROTOBUF_NONNULL _internal_mutable_assigned();
  public:
  const ::xla::BufferAllocationProto_Assigned& assigned(int index) const;
  ::xla::BufferAllocationProto_Assigned* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL mutable_parameter_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_parameter_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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_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 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:
  // 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_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:
  // @@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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const BufferAllocationProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::BufferAllocationProto_Assigned > assigned_;
    ::google::protobuf::RepeatedField<::int64_t> parameter_shape_index_;
    ::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_entry_computation_parameter_;
    bool maybe_live_out_;
    bool is_tuple_;
    bool is_constant_;
    bool is_parameter_aliased_with_output_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloScheduleProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloScheduleProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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>* PROTOBUF_NONNULL mutable_sequences();

  private:
  const ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>& _internal_sequences() const;
  ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE 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_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloModuleMetadataProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloModuleMetadataProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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>* PROTOBUF_NONNULL mutable_partitioned_module_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_partitioned_module_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_pass_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>* PROTOBUF_NONNULL mutable_pass_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>& _internal_pass_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloPassMetadata>* PROTOBUF_NONNULL _internal_mutable_pass_metadata();
  public:
  const ::xla::HloPassMetadata& pass_metadata(int index) const;
  ::xla::HloPassMetadata* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_module_group_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_module_group_name();
  void set_allocated_module_group_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_module_group_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_module_group_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloModuleMetadataProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> partitioned_module_ids_;
    ::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_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BufferAssignmentProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BufferAssignmentProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_logical_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>* PROTOBUF_NONNULL mutable_logical_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>& _internal_logical_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::LogicalBufferProto>* PROTOBUF_NONNULL _internal_mutable_logical_buffers();
  public:
  const ::xla::LogicalBufferProto& logical_buffers(int index) const;
  ::xla::LogicalBufferProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_buffer_aliases(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>* PROTOBUF_NONNULL mutable_buffer_aliases();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>& _internal_buffer_aliases() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAssignmentProto_BufferAlias>* PROTOBUF_NONNULL _internal_mutable_buffer_aliases();
  public:
  const ::xla::BufferAssignmentProto_BufferAlias& buffer_aliases(int index) const;
  ::xla::BufferAssignmentProto_BufferAlias* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_buffer_allocations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL mutable_buffer_allocations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& _internal_buffer_allocations() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL _internal_mutable_buffer_allocations();
  public:
  const ::xla::BufferAllocationProto& buffer_allocations(int index) const;
  ::xla::BufferAllocationProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_heap_simulator_traces(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>* PROTOBUF_NONNULL mutable_heap_simulator_traces();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>& _internal_heap_simulator_traces() const;
  ::google::protobuf::RepeatedPtrField<::xla::HeapSimulatorTrace>* PROTOBUF_NONNULL _internal_mutable_heap_simulator_traces();
  public:
  const ::xla::HeapSimulatorTrace& heap_simulator_traces(int index) const;
  ::xla::HeapSimulatorTrace* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE 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_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInputs& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInputs* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_arguments(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL mutable_arguments();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_arguments() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL _internal_mutable_arguments();
  public:
  const ::xla::LiteralProto& arguments(int index) const;
  ::xla::LiteralProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_arguments_descriptors(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>* PROTOBUF_NONNULL mutable_arguments_descriptors();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>& _internal_arguments_descriptors() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs_LiteralDescriptor>* PROTOBUF_NONNULL _internal_mutable_arguments_descriptors();
  public:
  const ::xla::HloInputs_LiteralDescriptor& arguments_descriptors(int index) const;
  ::xla::HloInputs_LiteralDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInputs& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::LiteralProto > arguments_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputs_LiteralDescriptor > arguments_descriptors_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloInstructionProto& default_instance() {
    return *reinterpret_cast<const HloInstructionProto*>(
        &_HloInstructionProto_default_instance_);
  }
  enum OptionalCrossProgramPrefetchIndexCase {
    kCrossProgramPrefetchIndex = 80,
    OPTIONAL_CROSS_PROGRAM_PREFETCH_INDEX_NOT_SET = 0,
  };
  enum ReplicaGroupListCase {
    kCollectiveDeviceList = 87,
    kIotaCollectiveDeviceList = 92,
    kMeshAxesReplicaGroupList = 93,
    REPLICA_GROUP_LIST_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(HloInstructionProto& a, HloInstructionProto& b) { a.Swap(&b); }
  inline void Swap(HloInstructionProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloInstructionProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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,
    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,
    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,
    kIsHostTransferFieldNumber = 47,
    kConstrainLayoutFieldNumber = 56,
    kIsStableFieldNumber = 60,
    kCustomCallHasSideEffectFieldNumber = 65,
    kBatchGroupCountFieldNumber = 58,
    kDeltaFieldNumber = 66,
    kRngAlgorithmFieldNumber = 70,
    kIndicesAreSortedFieldNumber = 67,
    kUniqueIndicesFieldNumber = 69,
    kUseGlobalDeviceIdsFieldNumber = 71,
    kIsCrossProgramPrefetchFieldNumber = 73,
    kPaddingTypeFieldNumber = 75,
    kCustomCallScheduleFieldNumber = 76,
    kKFieldNumber = 81,
    kCustomCallApiVersionFieldNumber = 77,
    kLargestFieldNumber = 85,
    kIsCompositeFieldNumber = 89,
    kIsReverseFieldNumber = 94,
    kNumCarriesFieldNumber = 95,
    kIsAssociativeFieldNumber = 96,
    kConvKindFieldNumber = 97,
    kCrossProgramPrefetchIndexFieldNumber = 80,
    kCollectiveDeviceListFieldNumber = 87,
    kIotaCollectiveDeviceListFieldNumber = 92,
    kMeshAxesReplicaGroupListFieldNumber = 93,
  };
  // 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>* PROTOBUF_NONNULL mutable_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_slice_dimensions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>* PROTOBUF_NONNULL mutable_slice_dimensions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>& _internal_slice_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto_SliceDimensions>* PROTOBUF_NONNULL _internal_mutable_slice_dimensions();
  public:
  const ::xla::HloInstructionProto_SliceDimensions& slice_dimensions(int index) const;
  ::xla::HloInstructionProto_SliceDimensions* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL mutable_dynamic_slice_sizes();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dynamic_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_fft_length();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_fft_length() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_gather_slice_sizes();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_gather_slice_sizes() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_operand_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_operand_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_control_predecessor_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_control_predecessor_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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>* PROTOBUF_NONNULL mutable_called_computation_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_called_computation_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_replica_groups(int index);
  [[deprecated]] ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL mutable_replica_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& _internal_replica_groups() const;
  ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL _internal_mutable_replica_groups();
  public:
  [[deprecated]] const ::xla::ReplicaGroup& replica_groups(int index) const;
  [[deprecated]] ::xla::ReplicaGroup* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_source_target_pairs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL mutable_source_target_pairs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& _internal_source_target_pairs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL _internal_mutable_source_target_pairs();
  public:
  const ::xla::SourceTarget& source_target_pairs(int index) const;
  ::xla::SourceTarget* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_operand_shapes_with_layout(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL mutable_operand_shapes_with_layout();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_operand_shapes_with_layout() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL _internal_mutable_operand_shapes_with_layout();
  public:
  const ::xla::ShapeProto& operand_shapes_with_layout(int index) const;
  ::xla::ShapeProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_output_operand_aliasing(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>* PROTOBUF_NONNULL mutable_output_operand_aliasing();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>& _internal_output_operand_aliasing() const;
  ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>* PROTOBUF_NONNULL _internal_mutable_output_operand_aliasing();
  public:
  const ::xla::OutputOperandAliasing& output_operand_aliasing(int index) const;
  ::xla::OutputOperandAliasing* PROTOBUF_NONNULL add_output_operand_aliasing();
  const ::google::protobuf::RepeatedPtrField<::xla::OutputOperandAliasing>& output_operand_aliasing() 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* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // 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* PROTOBUF_NONNULL mutable_opcode();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_opcode();
  void set_allocated_opcode(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_opcode() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_opcode(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_fusion_kind();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_fusion_kind();
  void set_allocated_fusion_kind(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_fusion_kind() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_fusion_kind(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_outfeed_config();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_outfeed_config();
  void set_allocated_outfeed_config(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_outfeed_config() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_outfeed_config(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_infeed_config();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_infeed_config();
  void set_allocated_infeed_config(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_infeed_config() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_infeed_config(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_custom_call_target();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_custom_call_target();
  void set_allocated_custom_call_target(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_custom_call_target() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_custom_call_target(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_backend_config();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_backend_config();
  void set_allocated_backend_config(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_backend_config() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_backend_config(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_comparison_direction();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_comparison_direction();
  void set_allocated_comparison_direction(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_comparison_direction() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_comparison_direction(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_comparison_type();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_comparison_type();
  void set_allocated_comparison_type(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_comparison_type() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_comparison_type(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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* PROTOBUF_NONNULL mutable_async_execution_thread();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_async_execution_thread();
  void set_allocated_async_execution_thread(::std::string* PROTOBUF_NULLABLE value);

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

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

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

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

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

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

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

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

  private:
  const ::xla::Window& _internal_window() const;
  ::xla::Window* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE release_convolution_dimension_numbers();
  ::xla::ConvolutionDimensionNumbers* PROTOBUF_NONNULL mutable_convolution_dimension_numbers();
  void set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_convolution_dimension_numbers(::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE value);
  ::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE unsafe_arena_release_convolution_dimension_numbers();

  private:
  const ::xla::ConvolutionDimensionNumbers& _internal_convolution_dimension_numbers() const;
  ::xla::ConvolutionDimensionNumbers* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::PaddingConfig* PROTOBUF_NULLABLE release_padding_config();
  ::xla::PaddingConfig* PROTOBUF_NONNULL mutable_padding_config();
  void set_allocated_padding_config(::xla::PaddingConfig* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_padding_config(::xla::PaddingConfig* PROTOBUF_NULLABLE value);
  ::xla::PaddingConfig* PROTOBUF_NULLABLE unsafe_arena_release_padding_config();

  private:
  const ::xla::PaddingConfig& _internal_padding_config() const;
  ::xla::PaddingConfig* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ShapeProto* PROTOBUF_NULLABLE release_outfeed_shape();
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_outfeed_shape();
  void set_allocated_outfeed_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_outfeed_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_outfeed_shape();

  private:
  const ::xla::ShapeProto& _internal_outfeed_shape() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE release_dot_dimension_numbers();
  ::xla::DotDimensionNumbers* PROTOBUF_NONNULL mutable_dot_dimension_numbers();
  void set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* PROTOBUF_NULLABLE value);
  ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE unsafe_arena_release_dot_dimension_numbers();

  private:
  const ::xla::DotDimensionNumbers& _internal_dot_dimension_numbers() const;
  ::xla::DotDimensionNumbers* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE release_gather_dimension_numbers();
  ::xla::GatherDimensionNumbers* PROTOBUF_NONNULL mutable_gather_dimension_numbers();
  void set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_gather_dimension_numbers(::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE value);
  ::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE unsafe_arena_release_gather_dimension_numbers();

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

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

  private:
  const ::xla::OpSharding& _internal_sharding() const;
  ::xla::OpSharding* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE release_scatter_dimension_numbers();
  ::xla::ScatterDimensionNumbers* PROTOBUF_NONNULL mutable_scatter_dimension_numbers();
  void set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scatter_dimension_numbers(::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE value);
  ::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE unsafe_arena_release_scatter_dimension_numbers();

  private:
  const ::xla::ScatterDimensionNumbers& _internal_scatter_dimension_numbers() const;
  ::xla::ScatterDimensionNumbers* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::PrecisionConfig* PROTOBUF_NULLABLE release_precision_config();
  ::xla::PrecisionConfig* PROTOBUF_NONNULL mutable_precision_config();
  void set_allocated_precision_config(::xla::PrecisionConfig* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_precision_config(::xla::PrecisionConfig* PROTOBUF_NULLABLE value);
  ::xla::PrecisionConfig* PROTOBUF_NULLABLE unsafe_arena_release_precision_config();

  private:
  const ::xla::PrecisionConfig& _internal_precision_config() const;
  ::xla::PrecisionConfig* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::OpSharding* PROTOBUF_NULLABLE release_domain_entry_sharding();
  ::xla::OpSharding* PROTOBUF_NONNULL mutable_domain_entry_sharding();
  void set_allocated_domain_entry_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_domain_entry_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  ::xla::OpSharding* PROTOBUF_NULLABLE unsafe_arena_release_domain_entry_sharding();

  private:
  const ::xla::OpSharding& _internal_domain_entry_sharding() const;
  ::xla::OpSharding* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::OpSharding* PROTOBUF_NULLABLE release_domain_exit_sharding();
  ::xla::OpSharding* PROTOBUF_NONNULL mutable_domain_exit_sharding();
  void set_allocated_domain_exit_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_domain_exit_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  ::xla::OpSharding* PROTOBUF_NULLABLE unsafe_arena_release_domain_exit_sharding();

  private:
  const ::xla::OpSharding& _internal_domain_exit_sharding() const;
  ::xla::OpSharding* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE release_triangular_solve_options();
  ::xla::TriangularSolveOptions* PROTOBUF_NONNULL mutable_triangular_solve_options();
  void set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_triangular_solve_options(::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value);
  ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE unsafe_arena_release_triangular_solve_options();

  private:
  const ::xla::TriangularSolveOptions& _internal_triangular_solve_options() const;
  ::xla::TriangularSolveOptions* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ParameterReplication* PROTOBUF_NULLABLE release_parameter_replication();
  ::xla::ParameterReplication* PROTOBUF_NONNULL mutable_parameter_replication();
  void set_allocated_parameter_replication(::xla::ParameterReplication* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_parameter_replication(::xla::ParameterReplication* PROTOBUF_NULLABLE value);
  ::xla::ParameterReplication* PROTOBUF_NULLABLE unsafe_arena_release_parameter_replication();

  private:
  const ::xla::ParameterReplication& _internal_parameter_replication() const;
  ::xla::ParameterReplication* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::CholeskyOptions* PROTOBUF_NULLABLE release_cholesky_options();
  ::xla::CholeskyOptions* PROTOBUF_NONNULL mutable_cholesky_options();
  void set_allocated_cholesky_options(::xla::CholeskyOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cholesky_options(::xla::CholeskyOptions* PROTOBUF_NULLABLE value);
  ::xla::CholeskyOptions* PROTOBUF_NULLABLE unsafe_arena_release_cholesky_options();

  private:
  const ::xla::CholeskyOptions& _internal_cholesky_options() const;
  ::xla::CholeskyOptions* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::FrontendAttributes* PROTOBUF_NULLABLE release_frontend_attributes();
  ::xla::FrontendAttributes* PROTOBUF_NONNULL mutable_frontend_attributes();
  void set_allocated_frontend_attributes(::xla::FrontendAttributes* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* PROTOBUF_NULLABLE value);
  ::xla::FrontendAttributes* PROTOBUF_NULLABLE unsafe_arena_release_frontend_attributes();

  private:
  const ::xla::FrontendAttributes& _internal_frontend_attributes() const;
  ::xla::FrontendAttributes* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::StatisticsViz* PROTOBUF_NULLABLE release_statistics_viz();
  ::xla::StatisticsViz* PROTOBUF_NONNULL mutable_statistics_viz();
  void set_allocated_statistics_viz(::xla::StatisticsViz* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_statistics_viz(::xla::StatisticsViz* PROTOBUF_NULLABLE value);
  ::xla::StatisticsViz* PROTOBUF_NULLABLE unsafe_arena_release_statistics_viz();

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

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

  private:
  const ::xla::OriginalValueProto& _internal_original_value() const;
  ::xla::OriginalValueProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE release_ragged_dot_dimension_numbers();
  ::xla::RaggedDotDimensionNumbers* PROTOBUF_NONNULL mutable_ragged_dot_dimension_numbers();
  void set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_ragged_dot_dimension_numbers(::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE value);
  ::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE unsafe_arena_release_ragged_dot_dimension_numbers();

  private:
  const ::xla::RaggedDotDimensionNumbers& _internal_ragged_dot_dimension_numbers() const;
  ::xla::RaggedDotDimensionNumbers* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ResultAccuracy* PROTOBUF_NULLABLE release_result_accuracy();
  ::xla::ResultAccuracy* PROTOBUF_NONNULL mutable_result_accuracy();
  void set_allocated_result_accuracy(::xla::ResultAccuracy* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_result_accuracy(::xla::ResultAccuracy* PROTOBUF_NULLABLE value);
  ::xla::ResultAccuracy* PROTOBUF_NULLABLE unsafe_arena_release_result_accuracy();

  private:
  const ::xla::ResultAccuracy& _internal_result_accuracy() const;
  ::xla::ResultAccuracy* PROTOBUF_NONNULL _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 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 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:
  // 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 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:
  // 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:
  // .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:
  // 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 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_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.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:
  // bool is_reverse = 94;
  void clear_is_reverse() ;
  bool is_reverse() const;
  void set_is_reverse(bool value);

  private:
  bool _internal_is_reverse() const;
  void _internal_set_is_reverse(bool value);

  public:
  // int64 num_carries = 95;
  void clear_num_carries() ;
  ::int64_t num_carries() const;
  void set_num_carries(::int64_t value);

  private:
  ::int64_t _internal_num_carries() const;
  void _internal_set_num_carries(::int64_t value);

  public:
  // .xla.TriState is_associative = 96;
  void clear_is_associative() ;
  ::xla::TriState is_associative() const;
  void set_is_associative(::xla::TriState value);

  private:
  ::xla::TriState _internal_is_associative() const;
  void _internal_set_is_associative(::xla::TriState value);

  public:
  // .xla.ConvolutionKind conv_kind = 97;
  void clear_conv_kind() ;
  ::xla::ConvolutionKind conv_kind() const;
  void set_conv_kind(::xla::ConvolutionKind value);

  private:
  ::xla::ConvolutionKind _internal_conv_kind() const;
  void _internal_set_conv_kind(::xla::ConvolutionKind 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:
  // .xla.CollectiveDeviceListProto collective_device_list = 87;
  bool has_collective_device_list() const;
  private:
  bool _internal_has_collective_device_list() const;

  public:
  void clear_collective_device_list() ;
  const ::xla::CollectiveDeviceListProto& collective_device_list() const;
  [[nodiscard]] ::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE release_collective_device_list();
  ::xla::CollectiveDeviceListProto* PROTOBUF_NONNULL mutable_collective_device_list();
  void set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_device_list(::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE value);
  ::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_device_list();

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

  public:
  // .xla.IotaReplicaGroupListProto iota_collective_device_list = 92;
  bool has_iota_collective_device_list() const;
  private:
  bool _internal_has_iota_collective_device_list() const;

  public:
  void clear_iota_collective_device_list() ;
  const ::xla::IotaReplicaGroupListProto& iota_collective_device_list() const;
  [[nodiscard]] ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE release_iota_collective_device_list();
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL mutable_iota_collective_device_list();
  void set_allocated_iota_collective_device_list(::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_iota_collective_device_list(::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value);
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE unsafe_arena_release_iota_collective_device_list();

  private:
  const ::xla::IotaReplicaGroupListProto& _internal_iota_collective_device_list() const;
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL _internal_mutable_iota_collective_device_list();

  public:
  // .xla.MeshAxesReplicaGroupListProto mesh_axes_replica_group_list = 93;
  bool has_mesh_axes_replica_group_list() const;
  private:
  bool _internal_has_mesh_axes_replica_group_list() const;

  public:
  void clear_mesh_axes_replica_group_list() ;
  const ::xla::MeshAxesReplicaGroupListProto& mesh_axes_replica_group_list() const;
  [[nodiscard]] ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE release_mesh_axes_replica_group_list();
  ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL mutable_mesh_axes_replica_group_list();
  void set_allocated_mesh_axes_replica_group_list(::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_mesh_axes_replica_group_list(::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE value);
  ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE unsafe_arena_release_mesh_axes_replica_group_list();

  private:
  const ::xla::MeshAxesReplicaGroupListProto& _internal_mesh_axes_replica_group_list() const;
  ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL _internal_mutable_mesh_axes_replica_group_list();

  public:
  void clear_optional_cross_program_prefetch_index();
  OptionalCrossProgramPrefetchIndexCase optional_cross_program_prefetch_index_case() const;
  void clear_replica_group_list();
  ReplicaGroupListCase replica_group_list_case() const;
  // @@protoc_insertion_point(class_scope:xla.HloInstructionProto)
 private:
  class _Internal;
  void set_has_cross_program_prefetch_index();
  void set_has_collective_device_list();
  void set_has_iota_collective_device_list();
  void set_has_mesh_axes_replica_group_list();
  inline bool has_optional_cross_program_prefetch_index() const;
  inline void clear_has_optional_cross_program_prefetch_index();
  inline bool has_replica_group_list() const;
  inline void clear_has_replica_group_list();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<5, 81,
                                   30, 208,
                                   15>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloInstructionProto& from_msg);
    ::google::protobuf::internal::HasBits<3> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> dimensions_;
    ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInstructionProto_SliceDimensions > slice_dimensions_;
    ::google::protobuf::RepeatedField<::int64_t> dynamic_slice_sizes_;
    ::google::protobuf::internal::CachedSize _dynamic_slice_sizes_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> fft_length_;
    ::google::protobuf::internal::CachedSize _fft_length_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> gather_slice_sizes_;
    ::google::protobuf::internal::CachedSize _gather_slice_sizes_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> operand_ids_;
    ::google::protobuf::internal::CachedSize _operand_ids_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> control_predecessor_ids_;
    ::google::protobuf::internal::CachedSize _control_predecessor_ids_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> called_computation_ids_;
    ::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::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* PROTOBUF_NULLABLE shape_;
    ::xla::OpMetadata* PROTOBUF_NULLABLE metadata_;
    ::xla::LiteralProto* PROTOBUF_NULLABLE literal_;
    ::xla::Window* PROTOBUF_NULLABLE window_;
    ::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE convolution_dimension_numbers_;
    ::xla::PaddingConfig* PROTOBUF_NULLABLE padding_config_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE outfeed_shape_;
    ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE dot_dimension_numbers_;
    ::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE gather_dimension_numbers_;
    ::xla::OpSharding* PROTOBUF_NULLABLE sharding_;
    ::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE scatter_dimension_numbers_;
    ::xla::PrecisionConfig* PROTOBUF_NULLABLE precision_config_;
    ::xla::OpSharding* PROTOBUF_NULLABLE domain_entry_sharding_;
    ::xla::OpSharding* PROTOBUF_NULLABLE domain_exit_sharding_;
    ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE triangular_solve_options_;
    ::xla::ParameterReplication* PROTOBUF_NULLABLE parameter_replication_;
    ::xla::CholeskyOptions* PROTOBUF_NULLABLE cholesky_options_;
    ::xla::FrontendAttributes* PROTOBUF_NULLABLE frontend_attributes_;
    ::xla::StatisticsViz* PROTOBUF_NULLABLE statistics_viz_;
    ::xla::OriginalValueProto* PROTOBUF_NULLABLE original_value_;
    ::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE ragged_dot_dimension_numbers_;
    ::xla::ResultAccuracy* PROTOBUF_NULLABLE 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 is_host_transfer_;
    bool constrain_layout_;
    bool is_stable_;
    bool custom_call_has_side_effect_;
    ::int64_t batch_group_count_;
    ::int64_t delta_;
    int rng_algorithm_;
    bool indices_are_sorted_;
    bool unique_indices_;
    bool use_global_device_ids_;
    bool is_cross_program_prefetch_;
    int padding_type_;
    int custom_call_schedule_;
    ::int64_t k_;
    int custom_call_api_version_;
    bool largest_;
    bool is_composite_;
    bool is_reverse_;
    ::int64_t num_carries_;
    int is_associative_;
    int conv_kind_;
    union OptionalCrossProgramPrefetchIndexUnion {
      constexpr OptionalCrossProgramPrefetchIndexUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::int32_t cross_program_prefetch_index_;
    } optional_cross_program_prefetch_index_;
    union ReplicaGroupListUnion {
      constexpr ReplicaGroupListUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE collective_device_list_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE iota_collective_device_list_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE mesh_axes_replica_group_list_;
    } replica_group_list_;
    ::uint32_t _oneof_case_[2];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloComputationProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloComputationProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL mutable_instructions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>* PROTOBUF_NONNULL mutable_instructions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>& _internal_instructions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInstructionProto>* PROTOBUF_NONNULL _internal_mutable_instructions();
  public:
  const ::xla::HloInstructionProto& instructions(int index) const;
  ::xla::HloInstructionProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // 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* PROTOBUF_NONNULL mutable_execution_thread();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_execution_thread();
  void set_allocated_execution_thread(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_execution_thread() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_execution_thread(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ProgramShapeProto* PROTOBUF_NULLABLE release_program_shape();
  ::xla::ProgramShapeProto* PROTOBUF_NONNULL mutable_program_shape();
  void set_allocated_program_shape(::xla::ProgramShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_program_shape(::xla::ProgramShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ProgramShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_program_shape();

  private:
  const ::xla::ProgramShapeProto& _internal_program_shape() const;
  ::xla::ProgramShapeProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloComputationProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::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* PROTOBUF_NULLABLE 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;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloModuleProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloModuleProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL value) {
    return HloModuleProto_ProfileType_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* PROTOBUF_NONNULL mutable_computations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>* PROTOBUF_NONNULL mutable_computations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>& _internal_computations() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloComputationProto>* PROTOBUF_NONNULL _internal_mutable_computations();
  public:
  const ::xla::HloComputationProto& computations(int index) const;
  ::xla::HloComputationProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_cross_program_prefetches(int index);
  ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>* PROTOBUF_NONNULL mutable_cross_program_prefetches();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>& _internal_cross_program_prefetches() const;
  ::google::protobuf::RepeatedPtrField<::xla::CrossProgramPrefetch>* PROTOBUF_NONNULL _internal_mutable_cross_program_prefetches();
  public:
  const ::xla::CrossProgramPrefetch& cross_program_prefetches(int index) const;
  ::xla::CrossProgramPrefetch* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_profile_info(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>* PROTOBUF_NONNULL mutable_profile_info();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>& _internal_profile_info() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto_ProfileInfo>* PROTOBUF_NONNULL _internal_mutable_profile_info();
  public:
  const ::xla::HloModuleProto_ProfileInfo& profile_info(int index) const;
  ::xla::HloModuleProto_ProfileInfo* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_spmd_parameters_shardings(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL mutable_spmd_parameters_shardings();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& _internal_spmd_parameters_shardings() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL _internal_mutable_spmd_parameters_shardings();
  public:
  const ::xla::OpSharding& spmd_parameters_shardings(int index) const;
  ::xla::OpSharding* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // 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* PROTOBUF_NONNULL mutable_entry_computation_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_entry_computation_name();
  void set_allocated_entry_computation_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_entry_computation_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_entry_computation_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::ProgramShapeProto* PROTOBUF_NULLABLE release_host_program_shape();
  ::xla::ProgramShapeProto* PROTOBUF_NONNULL mutable_host_program_shape();
  void set_allocated_host_program_shape(::xla::ProgramShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_program_shape(::xla::ProgramShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ProgramShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_host_program_shape();

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

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

  private:
  const ::xla::HloScheduleProto& _internal_schedule() const;
  ::xla::HloScheduleProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE release_input_output_alias();
  ::xla::HloInputOutputAliasProto* PROTOBUF_NONNULL mutable_input_output_alias();
  void set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_input_output_alias(::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE value);
  ::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE unsafe_arena_release_input_output_alias();

  private:
  const ::xla::HloInputOutputAliasProto& _internal_input_output_alias() const;
  ::xla::HloInputOutputAliasProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::OpSharding* PROTOBUF_NULLABLE release_spmd_output_sharding();
  ::xla::OpSharding* PROTOBUF_NONNULL mutable_spmd_output_sharding();
  void set_allocated_spmd_output_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_spmd_output_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value);
  ::xla::OpSharding* PROTOBUF_NULLABLE unsafe_arena_release_spmd_output_sharding();

  private:
  const ::xla::OpSharding& _internal_spmd_output_sharding() const;
  ::xla::OpSharding* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE release_device_assignment();
  ::xla::DeviceAssignmentProto* PROTOBUF_NONNULL mutable_device_assignment();
  void set_allocated_device_assignment(::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_device_assignment(::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE value);
  ::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE unsafe_arena_release_device_assignment();

  private:
  const ::xla::DeviceAssignmentProto& _internal_device_assignment() const;
  ::xla::DeviceAssignmentProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::StackFrameIndexProto* PROTOBUF_NULLABLE release_stack_frame_index();
  ::xla::StackFrameIndexProto* PROTOBUF_NONNULL mutable_stack_frame_index();
  void set_allocated_stack_frame_index(::xla::StackFrameIndexProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_stack_frame_index(::xla::StackFrameIndexProto* PROTOBUF_NULLABLE value);
  ::xla::StackFrameIndexProto* PROTOBUF_NULLABLE unsafe_arena_release_stack_frame_index();

  private:
  const ::xla::StackFrameIndexProto& _internal_stack_frame_index() const;
  ::xla::StackFrameIndexProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::HloBufferDonorProto* PROTOBUF_NULLABLE release_buffer_donor();
  ::xla::HloBufferDonorProto* PROTOBUF_NONNULL mutable_buffer_donor();
  void set_allocated_buffer_donor(::xla::HloBufferDonorProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer_donor(::xla::HloBufferDonorProto* PROTOBUF_NULLABLE value);
  ::xla::HloBufferDonorProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer_donor();

  private:
  const ::xla::HloBufferDonorProto& _internal_buffer_donor() const;
  ::xla::HloBufferDonorProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::FrontendAttributes* PROTOBUF_NULLABLE release_frontend_attributes();
  ::xla::FrontendAttributes* PROTOBUF_NONNULL mutable_frontend_attributes();
  void set_allocated_frontend_attributes(::xla::FrontendAttributes* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_frontend_attributes(::xla::FrontendAttributes* PROTOBUF_NULLABLE value);
  ::xla::FrontendAttributes* PROTOBUF_NULLABLE unsafe_arena_release_frontend_attributes();

  private:
  const ::xla::FrontendAttributes& _internal_frontend_attributes() const;
  ::xla::FrontendAttributes* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE release_original_value_recovery_table();
  ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NONNULL mutable_original_value_recovery_table();
  void set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_original_value_recovery_table(::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE value);
  ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE unsafe_arena_release_original_value_recovery_table();

  private:
  const ::xla::OriginalValueRecoveryTableProto& _internal_original_value_recovery_table() const;
  ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloModuleProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::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* PROTOBUF_NULLABLE host_program_shape_;
    ::xla::HloScheduleProto* PROTOBUF_NULLABLE schedule_;
    ::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE input_output_alias_;
    ::xla::OpSharding* PROTOBUF_NULLABLE spmd_output_sharding_;
    ::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE device_assignment_;
    ::xla::StackFrameIndexProto* PROTOBUF_NULLABLE stack_frame_index_;
    ::xla::HloBufferDonorProto* PROTOBUF_NULLABLE buffer_donor_;
    ::xla::FrontendAttributes* PROTOBUF_NULLABLE frontend_attributes_;
    ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE 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;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OriginalValueRecoveryTableProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OriginalValueRecoveryTableProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* PROTOBUF_NONNULL mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>* PROTOBUF_NONNULL mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueRecoveryTableProto_Entry>* PROTOBUF_NONNULL _internal_mutable_entries();
  public:
  const ::xla::OriginalValueRecoveryTableProto_Entry& entries(int index) const;
  ::xla::OriginalValueRecoveryTableProto_Entry* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OriginalValueRecoveryTableProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::OriginalValueRecoveryTableProto_Entry > entries_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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;

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OriginalValueRecoveryTableProto_Entry& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OriginalValueRecoveryTableProto_Entry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOldOriginalArrayFieldNumber = 1,
    kNewOriginalArrayFieldNumber = 2,
    kRecoveryModuleFieldNumber = 3,
  };
  // .xla.OriginalArrayProto old_original_array = 1;
  bool has_old_original_array() const;
  void clear_old_original_array() ;
  const ::xla::OriginalArrayProto& old_original_array() const;
  [[nodiscard]] ::xla::OriginalArrayProto* PROTOBUF_NULLABLE release_old_original_array();
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL mutable_old_original_array();
  void set_allocated_old_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_old_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  ::xla::OriginalArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_old_original_array();

  private:
  const ::xla::OriginalArrayProto& _internal_old_original_array() const;
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL _internal_mutable_old_original_array();

  public:
  // .xla.OriginalArrayProto new_original_array = 2;
  bool has_new_original_array() const;
  void clear_new_original_array() ;
  const ::xla::OriginalArrayProto& new_original_array() const;
  [[nodiscard]] ::xla::OriginalArrayProto* PROTOBUF_NULLABLE release_new_original_array();
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL mutable_new_original_array();
  void set_allocated_new_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_new_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  ::xla::OriginalArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_new_original_array();

  private:
  const ::xla::OriginalArrayProto& _internal_new_original_array() const;
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL _internal_mutable_new_original_array();

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

  private:
  const ::xla::HloModuleProto& _internal_recovery_module() const;
  ::xla::HloModuleProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OriginalValueRecoveryTableProto_Entry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE old_original_array_;
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE new_original_array_;
    ::xla::HloModuleProto* PROTOBUF_NULLABLE recovery_module_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloUnoptimizedSnapshot& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloUnoptimizedSnapshot* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL mutable_partitions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs>* PROTOBUF_NONNULL mutable_partitions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloInputs>& _internal_partitions() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloInputs>* PROTOBUF_NONNULL _internal_mutable_partitions();
  public:
  const ::xla::HloInputs& partitions(int index) const;
  ::xla::HloInputs* PROTOBUF_NONNULL 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;
  [[nodiscard]] ::xla::HloModuleProto* PROTOBUF_NULLABLE release_hlo_module();
  ::xla::HloModuleProto* PROTOBUF_NONNULL mutable_hlo_module();
  void set_allocated_hlo_module(::xla::HloModuleProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* PROTOBUF_NULLABLE value);
  ::xla::HloModuleProto* PROTOBUF_NULLABLE unsafe_arena_release_hlo_module();

  private:
  const ::xla::HloModuleProto& _internal_hlo_module() const;
  ::xla::HloModuleProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloUnoptimizedSnapshot& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloInputs > partitions_;
    ::xla::HloModuleProto* PROTOBUF_NULLABLE hlo_module_;
    ::int32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kHloModuleFieldNumber = 1,
    kBufferAssignmentFieldNumber = 3,
  };
  // .xla.HloModuleProto hlo_module = 1;
  bool has_hlo_module() const;
  void clear_hlo_module() ;
  const ::xla::HloModuleProto& hlo_module() const;
  [[nodiscard]] ::xla::HloModuleProto* PROTOBUF_NULLABLE release_hlo_module();
  ::xla::HloModuleProto* PROTOBUF_NONNULL mutable_hlo_module();
  void set_allocated_hlo_module(::xla::HloModuleProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_hlo_module(::xla::HloModuleProto* PROTOBUF_NULLABLE value);
  ::xla::HloModuleProto* PROTOBUF_NULLABLE unsafe_arena_release_hlo_module();

  private:
  const ::xla::HloModuleProto& _internal_hlo_module() const;
  ::xla::HloModuleProto* PROTOBUF_NONNULL _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;
  [[nodiscard]] ::xla::BufferAssignmentProto* PROTOBUF_NULLABLE release_buffer_assignment();
  ::xla::BufferAssignmentProto* PROTOBUF_NONNULL mutable_buffer_assignment();
  void set_allocated_buffer_assignment(::xla::BufferAssignmentProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer_assignment(::xla::BufferAssignmentProto* PROTOBUF_NULLABLE value);
  ::xla::BufferAssignmentProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer_assignment();

  private:
  const ::xla::BufferAssignmentProto& _internal_buffer_assignment() const;
  ::xla::BufferAssignmentProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::HloModuleProto* PROTOBUF_NULLABLE hlo_module_;
    ::xla::BufferAssignmentProto* PROTOBUF_NULLABLE buffer_assignment_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloModuleGroupProto& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloModuleGroupProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL mutable_hlo_modules(int index);
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>* PROTOBUF_NONNULL mutable_hlo_modules();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>& _internal_hlo_modules() const;
  ::google::protobuf::RepeatedPtrField<::xla::HloModuleProto>* PROTOBUF_NONNULL _internal_mutable_hlo_modules();
  public:
  const ::xla::HloModuleProto& hlo_modules(int index) const;
  ::xla::HloModuleProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // @@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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloModuleGroupProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::HloModuleProto > hlo_modules_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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

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

  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 (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HloSnapshot& 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* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HloSnapshot* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    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* PROTOBUF_NONNULL mutable_arguments(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL mutable_arguments();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_arguments() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL _internal_mutable_arguments();
  public:
  const ::xla::LiteralProto& arguments(int index) const;
  ::xla::LiteralProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL mutable_execution_platform();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_execution_platform();
  void set_allocated_execution_platform(::std::string* PROTOBUF_NULLABLE value);

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

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

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

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

  private:
  const ::xla::LiteralProto& _internal_result() const;
  ::xla::LiteralProto* PROTOBUF_NONNULL _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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HloSnapshot& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::LiteralProto > arguments_;
    ::google::protobuf::internal::ArenaStringPtr execution_platform_;
    ::xla::HloProto* PROTOBUF_NULLABLE hlo_;
    ::xla::LiteralProto* PROTOBUF_NULLABLE result_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fhlo_2eproto;
};

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

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




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


#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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.name)
}

// string opcode = 2;
inline void HloInstructionProto::clear_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opcode_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_opcode(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.opcode_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.opcode)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000002u;
  _impl_.opcode_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.opcode_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_opcode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.opcode)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.opcode_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.opcode_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_opcode(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.opcode_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.opcode_.IsDefault()) {
    _impl_.opcode_.Set("", GetArena());
  }
  // @@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] & 0x00000400u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HloInstructionProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::ShapeProto* released = _impl_.shape_;
  _impl_.shape_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.shape)

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::ShapeProto* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000400u;
  ::xla::ShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.shape)
  return _msg;
}
inline void HloInstructionProto::set_allocated_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }

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

  _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] & 0x00000800u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000800u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000800u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.metadata)
}
inline ::xla::OpMetadata* PROTOBUF_NULLABLE HloInstructionProto::release_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::OpMetadata* released = _impl_.metadata_;
  _impl_.metadata_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OpMetadata* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.metadata)

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::OpMetadata* temp = _impl_.metadata_;
  _impl_.metadata_ = nullptr;
  return temp;
}
inline ::xla::OpMetadata* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000800u;
  ::xla::OpMetadata* _msg = _internal_mutable_metadata();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.metadata)
  return _msg;
}
inline void HloInstructionProto::set_allocated_metadata(::xla::OpMetadata* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_);
  }

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

  _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] & 0x00001000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00001000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00001000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.literal)
}
inline ::xla::LiteralProto* PROTOBUF_NULLABLE HloInstructionProto::release_literal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::LiteralProto* released = _impl_.literal_;
  _impl_.literal_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::LiteralProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_literal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.literal)

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::LiteralProto* temp = _impl_.literal_;
  _impl_.literal_ = nullptr;
  return temp;
}
inline ::xla::LiteralProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_literal()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00001000u;
  ::xla::LiteralProto* _msg = _internal_mutable_literal();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.literal)
  return _msg;
}
inline void HloInstructionProto::set_allocated_literal(::xla::LiteralProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.literal_);
  }

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

  _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};
  _impl_._has_bits_[1] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[1] |= 0x00000001u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_fusion_kind(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.fusion_kind_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.fusion_kind)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000004u;
  _impl_.fusion_kind_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_fusion_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.fusion_kind_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_fusion_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.fusion_kind)
  if ((_impl_._has_bits_[0] & 0x00000004u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* released = _impl_.fusion_kind_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.fusion_kind_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_fusion_kind(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  _impl_.fusion_kind_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.fusion_kind_.IsDefault()) {
    _impl_.fusion_kind_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[1] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[1] |= 0x00000002u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00002000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00002000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00002000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.window)
}
inline ::xla::Window* PROTOBUF_NULLABLE HloInstructionProto::release_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::Window* released = _impl_.window_;
  _impl_.window_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::Window* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.window)

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::Window* temp = _impl_.window_;
  _impl_.window_ = nullptr;
  return temp;
}
inline ::xla::Window* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_window()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00002000u;
  ::xla::Window* _msg = _internal_mutable_window();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.window)
  return _msg;
}
inline void HloInstructionProto::set_allocated_window(::xla::Window* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.window_);
  }

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

  _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] & 0x00004000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00004000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00004000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.convolution_dimension_numbers)
}
inline ::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE HloInstructionProto::release_convolution_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00004000u;
  ::xla::ConvolutionDimensionNumbers* released = _impl_.convolution_dimension_numbers_;
  _impl_.convolution_dimension_numbers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ConvolutionDimensionNumbers* PROTOBUF_NULLABLE 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] &= ~0x00004000u;
  ::xla::ConvolutionDimensionNumbers* temp = _impl_.convolution_dimension_numbers_;
  _impl_.convolution_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::ConvolutionDimensionNumbers* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_convolution_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00004000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.convolution_dimension_numbers_);
  }

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

  _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};
  _impl_._has_bits_[1] &= ~0x00000400u;
}
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);
  _impl_._has_bits_[1] |= 0x00000400u;
  // @@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};
  _impl_._has_bits_[1] &= ~0x00010000u;
}
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);
  _impl_._has_bits_[1] |= 0x00010000u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[1] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[1] |= 0x00000004u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[1] |= 0x00000008u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00008000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00008000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00008000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.padding_config)
}
inline ::xla::PaddingConfig* PROTOBUF_NULLABLE HloInstructionProto::release_padding_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00008000u;
  ::xla::PaddingConfig* released = _impl_.padding_config_;
  _impl_.padding_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::PaddingConfig* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_padding_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.padding_config)

  _impl_._has_bits_[0] &= ~0x00008000u;
  ::xla::PaddingConfig* temp = _impl_.padding_config_;
  _impl_.padding_config_ = nullptr;
  return temp;
}
inline ::xla::PaddingConfig* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_padding_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00008000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.padding_config_);
  }

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

  _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();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_outfeed_config(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.outfeed_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.outfeed_config)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000008u;
  _impl_.outfeed_config_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_outfeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  return _impl_.outfeed_config_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_outfeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.outfeed_config)
  if ((_impl_._has_bits_[0] & 0x00000008u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000008u;
  auto* released = _impl_.outfeed_config_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.outfeed_config_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_outfeed_config(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  _impl_.outfeed_config_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.outfeed_config_.IsDefault()) {
    _impl_.outfeed_config_.Set("", GetArena());
  }
  // @@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;
  _impl_._has_bits_[1] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[1] |= 0x00000010u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00000020u;
}
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);
  _impl_._has_bits_[1] |= 0x00000020u;
  // @@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};
  _impl_._has_bits_[1] &= ~0x00000040u;
}
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);
  _impl_._has_bits_[1] |= 0x00000040u;
  // @@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};
  _impl_._has_bits_[1] &= ~0x00000080u;
}
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);
  _impl_._has_bits_[1] |= 0x00000080u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_infeed_config(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.infeed_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.infeed_config)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000010u;
  _impl_.infeed_config_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_infeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  return _impl_.infeed_config_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_infeed_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.infeed_config)
  if ((_impl_._has_bits_[0] & 0x00000010u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000010u;
  auto* released = _impl_.infeed_config_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.infeed_config_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_infeed_config(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  _impl_.infeed_config_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.infeed_config_.IsDefault()) {
    _impl_.infeed_config_.Set("", GetArena());
  }
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_custom_call_target(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000020u;
  _impl_.custom_call_target_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.custom_call_target)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000020u;
  _impl_.custom_call_target_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_custom_call_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000020u;
  return _impl_.custom_call_target_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_custom_call_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.custom_call_target)
  if ((_impl_._has_bits_[0] & 0x00000020u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000020u;
  auto* released = _impl_.custom_call_target_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.custom_call_target_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_custom_call_target(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  _impl_.custom_call_target_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.custom_call_target_.IsDefault()) {
    _impl_.custom_call_target_.Set("", GetArena());
  }
  // @@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] & 0x00010000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00010000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00010000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.outfeed_shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HloInstructionProto::release_outfeed_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00010000u;
  ::xla::ShapeProto* released = _impl_.outfeed_shape_;
  _impl_.outfeed_shape_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_outfeed_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.outfeed_shape)

  _impl_._has_bits_[0] &= ~0x00010000u;
  ::xla::ShapeProto* temp = _impl_.outfeed_shape_;
  _impl_.outfeed_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_outfeed_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00010000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outfeed_shape_);
  }

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

  _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] & 0x00020000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00020000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00020000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.dot_dimension_numbers)
}
inline ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE HloInstructionProto::release_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00020000u;
  ::xla::DotDimensionNumbers* released = _impl_.dot_dimension_numbers_;
  _impl_.dot_dimension_numbers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE 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] &= ~0x00020000u;
  ::xla::DotDimensionNumbers* temp = _impl_.dot_dimension_numbers_;
  _impl_.dot_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::DotDimensionNumbers* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_dot_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00020000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dot_dimension_numbers_);
  }

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

  _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] & 0x40000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x40000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x40000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.ragged_dot_dimension_numbers)
}
inline ::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE HloInstructionProto::release_ragged_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x40000000u;
  ::xla::RaggedDotDimensionNumbers* released = _impl_.ragged_dot_dimension_numbers_;
  _impl_.ragged_dot_dimension_numbers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::RaggedDotDimensionNumbers* PROTOBUF_NULLABLE 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] &= ~0x40000000u;
  ::xla::RaggedDotDimensionNumbers* temp = _impl_.ragged_dot_dimension_numbers_;
  _impl_.ragged_dot_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::RaggedDotDimensionNumbers* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_ragged_dot_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x40000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ragged_dot_dimension_numbers_);
  }

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

  _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;
  _impl_._has_bits_[1] &= ~0x00000800u;
}
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);
  _impl_._has_bits_[1] |= 0x00000800u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_comparison_direction(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000080u;
  _impl_.comparison_direction_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.comparison_direction)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000080u;
  _impl_.comparison_direction_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_comparison_direction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000080u;
  return _impl_.comparison_direction_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_comparison_direction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.comparison_direction)
  if ((_impl_._has_bits_[0] & 0x00000080u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000080u;
  auto* released = _impl_.comparison_direction_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.comparison_direction_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_comparison_direction(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  _impl_.comparison_direction_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.comparison_direction_.IsDefault()) {
    _impl_.comparison_direction_.Set("", GetArena());
  }
  // @@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] & 0x00040000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00040000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00040000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.gather_dimension_numbers)
}
inline ::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE HloInstructionProto::release_gather_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00040000u;
  ::xla::GatherDimensionNumbers* released = _impl_.gather_dimension_numbers_;
  _impl_.gather_dimension_numbers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::GatherDimensionNumbers* PROTOBUF_NULLABLE 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] &= ~0x00040000u;
  ::xla::GatherDimensionNumbers* temp = _impl_.gather_dimension_numbers_;
  _impl_.gather_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::GatherDimensionNumbers* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_gather_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00040000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gather_dimension_numbers_);
  }

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

  _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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[1] &= ~0x00000100u;
}
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);
  _impl_._has_bits_[1] |= 0x00000100u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00080000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00080000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00080000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.sharding)
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE HloInstructionProto::release_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00080000u;
  ::xla::OpSharding* released = _impl_.sharding_;
  _impl_.sharding_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.sharding)

  _impl_._has_bits_[0] &= ~0x00080000u;
  ::xla::OpSharding* temp = _impl_.sharding_;
  _impl_.sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_sharding()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00080000u;
  ::xla::OpSharding* _msg = _internal_mutable_sharding();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.sharding)
  return _msg;
}
inline void HloInstructionProto::set_allocated_sharding(::xla::OpSharding* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sharding_);
  }

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

  _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();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_backend_config(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000040u;
  _impl_.backend_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.backend_config)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000040u;
  _impl_.backend_config_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_backend_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000040u;
  return _impl_.backend_config_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_backend_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.backend_config)
  if ((_impl_._has_bits_[0] & 0x00000040u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000040u;
  auto* released = _impl_.backend_config_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.backend_config_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_backend_config(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  _impl_.backend_config_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.backend_config_.IsDefault()) {
    _impl_.backend_config_.Set("", GetArena());
  }
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[1] &= ~0x00000200u;
}
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);
  _impl_._has_bits_[1] |= 0x00000200u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00200000u;
}
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);
  _impl_._has_bits_[1] |= 0x00200000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00001000u;
}
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);
  _impl_._has_bits_[1] |= 0x00001000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00004000u;
}
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);
  _impl_._has_bits_[1] |= 0x00004000u;
  // @@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] & 0x00100000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00100000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00100000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.scatter_dimension_numbers)
}
inline ::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE HloInstructionProto::release_scatter_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00100000u;
  ::xla::ScatterDimensionNumbers* released = _impl_.scatter_dimension_numbers_;
  _impl_.scatter_dimension_numbers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ScatterDimensionNumbers* PROTOBUF_NULLABLE 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] &= ~0x00100000u;
  ::xla::ScatterDimensionNumbers* temp = _impl_.scatter_dimension_numbers_;
  _impl_.scatter_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::ScatterDimensionNumbers* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_scatter_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00100000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scatter_dimension_numbers_);
  }

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

  _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] & 0x00200000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00200000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00200000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.precision_config)
}
inline ::xla::PrecisionConfig* PROTOBUF_NULLABLE HloInstructionProto::release_precision_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00200000u;
  ::xla::PrecisionConfig* released = _impl_.precision_config_;
  _impl_.precision_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::PrecisionConfig* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_precision_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.precision_config)

  _impl_._has_bits_[0] &= ~0x00200000u;
  ::xla::PrecisionConfig* temp = _impl_.precision_config_;
  _impl_.precision_config_ = nullptr;
  return temp;
}
inline ::xla::PrecisionConfig* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_precision_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00200000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.precision_config_);
  }

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

  _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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00400000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00400000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00400000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.domain_entry_sharding)
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE HloInstructionProto::release_domain_entry_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00400000u;
  ::xla::OpSharding* released = _impl_.domain_entry_sharding_;
  _impl_.domain_entry_sharding_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE 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] &= ~0x00400000u;
  ::xla::OpSharding* temp = _impl_.domain_entry_sharding_;
  _impl_.domain_entry_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_domain_entry_sharding()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00400000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_entry_sharding_);
  }

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

  _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] & 0x00800000u) != 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* PROTOBUF_NULLABLE 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] |= 0x00800000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00800000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.domain_exit_sharding)
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE HloInstructionProto::release_domain_exit_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00800000u;
  ::xla::OpSharding* released = _impl_.domain_exit_sharding_;
  _impl_.domain_exit_sharding_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE 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] &= ~0x00800000u;
  ::xla::OpSharding* temp = _impl_.domain_exit_sharding_;
  _impl_.domain_exit_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_domain_exit_sharding()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00800000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.domain_exit_sharding_);
  }

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

  _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;
  _impl_._has_bits_[1] &= ~0x00002000u;
}
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);
  _impl_._has_bits_[1] |= 0x00002000u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x01000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x01000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x01000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.triangular_solve_options)
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE HloInstructionProto::release_triangular_solve_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x01000000u;
  ::xla::TriangularSolveOptions* released = _impl_.triangular_solve_options_;
  _impl_.triangular_solve_options_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE 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] &= ~0x01000000u;
  ::xla::TriangularSolveOptions* temp = _impl_.triangular_solve_options_;
  _impl_.triangular_solve_options_ = nullptr;
  return temp;
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_triangular_solve_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x01000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.triangular_solve_options_);
  }

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

  _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] & 0x04000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x04000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x04000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.cholesky_options)
}
inline ::xla::CholeskyOptions* PROTOBUF_NULLABLE HloInstructionProto::release_cholesky_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x04000000u;
  ::xla::CholeskyOptions* released = _impl_.cholesky_options_;
  _impl_.cholesky_options_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::CholeskyOptions* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_cholesky_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.cholesky_options)

  _impl_._has_bits_[0] &= ~0x04000000u;
  ::xla::CholeskyOptions* temp = _impl_.cholesky_options_;
  _impl_.cholesky_options_ = nullptr;
  return temp;
}
inline ::xla::CholeskyOptions* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_cholesky_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x04000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cholesky_options_);
  }

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

  _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] & 0x02000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x02000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x02000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.parameter_replication)
}
inline ::xla::ParameterReplication* PROTOBUF_NULLABLE HloInstructionProto::release_parameter_replication() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x02000000u;
  ::xla::ParameterReplication* released = _impl_.parameter_replication_;
  _impl_.parameter_replication_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ParameterReplication* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_parameter_replication() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.parameter_replication)

  _impl_._has_bits_[0] &= ~0x02000000u;
  ::xla::ParameterReplication* temp = _impl_.parameter_replication_;
  _impl_.parameter_replication_ = nullptr;
  return temp;
}
inline ::xla::ParameterReplication* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_parameter_replication()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x02000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.parameter_replication_);
  }

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

  _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;
  _impl_._has_bits_[1] &= ~0x00008000u;
}
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);
  _impl_._has_bits_[1] |= 0x00008000u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[1] &= ~0x01000000u;
}
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);
  _impl_._has_bits_[1] |= 0x01000000u;
  // @@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};
  _impl_._has_bits_[1] &= ~0x00020000u;
}
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);
  _impl_._has_bits_[1] |= 0x00020000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00080000u;
}
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);
  _impl_._has_bits_[1] |= 0x00080000u;
  // @@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] & 0x08000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x08000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x08000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.frontend_attributes)
}
inline ::xla::FrontendAttributes* PROTOBUF_NULLABLE HloInstructionProto::release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x08000000u;
  ::xla::FrontendAttributes* released = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::FrontendAttributes* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.frontend_attributes)

  _impl_._has_bits_[0] &= ~0x08000000u;
  ::xla::FrontendAttributes* temp = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  return temp;
}
inline ::xla::FrontendAttributes* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_frontend_attributes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x08000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }

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

  _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;
  _impl_._has_bits_[1] &= ~0x00100000u;
}
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);
  _impl_._has_bits_[1] |= 0x00100000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00040000u;
}
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);
  _impl_._has_bits_[1] |= 0x00040000u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_comparison_type(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000100u;
  _impl_.comparison_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.comparison_type)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000100u;
  _impl_.comparison_type_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_comparison_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000100u;
  return _impl_.comparison_type_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_comparison_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.comparison_type)
  if ((_impl_._has_bits_[0] & 0x00000100u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000100u;
  auto* released = _impl_.comparison_type_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.comparison_type_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_comparison_type(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  _impl_.comparison_type_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.comparison_type_.IsDefault()) {
    _impl_.comparison_type_.Set("", GetArena());
  }
  // @@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;
  _impl_._has_bits_[1] &= ~0x00400000u;
}
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);
  _impl_._has_bits_[1] |= 0x00400000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x00800000u;
}
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);
  _impl_._has_bits_[1] |= 0x00800000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x04000000u;
}
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);
  _impl_._has_bits_[1] |= 0x04000000u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000200u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloInstructionProto::set_async_execution_thread(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000200u;
  _impl_.async_execution_thread_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.async_execution_thread)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000200u;
  _impl_.async_execution_thread_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_async_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000200u;
  return _impl_.async_execution_thread_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloInstructionProto::release_async_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.async_execution_thread)
  if ((_impl_._has_bits_[0] & 0x00000200u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000200u;
  auto* released = _impl_.async_execution_thread_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.async_execution_thread_.Set("", GetArena());
  }
  return released;
}
inline void HloInstructionProto::set_allocated_async_execution_thread(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }
  _impl_.async_execution_thread_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.async_execution_thread_.IsDefault()) {
    _impl_.async_execution_thread_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[1] &= ~0x02000000u;
}
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);
  _impl_._has_bits_[1] |= 0x02000000u;
  // @@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;
  _impl_._has_bits_[1] &= ~0x08000000u;
}
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);
  _impl_._has_bits_[1] |= 0x08000000u;
  // @@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] & 0x10000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x10000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x10000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.statistics_viz)
}
inline ::xla::StatisticsViz* PROTOBUF_NULLABLE HloInstructionProto::release_statistics_viz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x10000000u;
  ::xla::StatisticsViz* released = _impl_.statistics_viz_;
  _impl_.statistics_viz_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::StatisticsViz* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_statistics_viz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.statistics_viz)

  _impl_._has_bits_[0] &= ~0x10000000u;
  ::xla::StatisticsViz* temp = _impl_.statistics_viz_;
  _impl_.statistics_viz_ = nullptr;
  return temp;
}
inline ::xla::StatisticsViz* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_statistics_viz()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x10000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.statistics_viz_);
  }

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

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

// .xla.CollectiveDeviceListProto collective_device_list = 87;
inline bool HloInstructionProto::has_collective_device_list() const {
  return replica_group_list_case() == kCollectiveDeviceList;
}
inline bool HloInstructionProto::_internal_has_collective_device_list() const {
  return replica_group_list_case() == kCollectiveDeviceList;
}
inline void HloInstructionProto::set_has_collective_device_list() {
  _impl_._oneof_case_[1] = kCollectiveDeviceList;
}
inline ::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE HloInstructionProto::release_collective_device_list() {
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.collective_device_list)
  if (replica_group_list_case() == kCollectiveDeviceList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::CollectiveDeviceListProto*>(_impl_.replica_group_list_.collective_device_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.replica_group_list_.collective_device_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::CollectiveDeviceListProto& HloInstructionProto::_internal_collective_device_list() const {
  return replica_group_list_case() == kCollectiveDeviceList ? *reinterpret_cast<::xla::CollectiveDeviceListProto*>(_impl_.replica_group_list_.collective_device_list_) : reinterpret_cast<::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 ::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_collective_device_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.HloInstructionProto.collective_device_list)
  if (replica_group_list_case() == kCollectiveDeviceList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::CollectiveDeviceListProto*>(_impl_.replica_group_list_.collective_device_list_);
    _impl_.replica_group_list_.collective_device_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void HloInstructionProto::unsafe_arena_set_allocated_collective_device_list(
    ::xla::CollectiveDeviceListProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_replica_group_list();
  if (value) {
    set_has_collective_device_list();
    _impl_.replica_group_list_.collective_device_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.collective_device_list)
}
inline ::xla::CollectiveDeviceListProto* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_collective_device_list() {
  if (replica_group_list_case() != kCollectiveDeviceList) {
    clear_replica_group_list();
    set_has_collective_device_list();
    _impl_.replica_group_list_.collective_device_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::CollectiveDeviceListProto>(GetArena()));
  }
  return reinterpret_cast<::xla::CollectiveDeviceListProto*>(_impl_.replica_group_list_.collective_device_list_);
}
inline ::xla::CollectiveDeviceListProto* PROTOBUF_NONNULL HloInstructionProto::mutable_collective_device_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::CollectiveDeviceListProto* _msg = _internal_mutable_collective_device_list();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.collective_device_list)
  return _msg;
}

// .xla.IotaReplicaGroupListProto iota_collective_device_list = 92;
inline bool HloInstructionProto::has_iota_collective_device_list() const {
  return replica_group_list_case() == kIotaCollectiveDeviceList;
}
inline bool HloInstructionProto::_internal_has_iota_collective_device_list() const {
  return replica_group_list_case() == kIotaCollectiveDeviceList;
}
inline void HloInstructionProto::set_has_iota_collective_device_list() {
  _impl_._oneof_case_[1] = kIotaCollectiveDeviceList;
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE HloInstructionProto::release_iota_collective_device_list() {
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.iota_collective_device_list)
  if (replica_group_list_case() == kIotaCollectiveDeviceList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::IotaReplicaGroupListProto*>(_impl_.replica_group_list_.iota_collective_device_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.replica_group_list_.iota_collective_device_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::IotaReplicaGroupListProto& HloInstructionProto::_internal_iota_collective_device_list() const {
  return replica_group_list_case() == kIotaCollectiveDeviceList ? *reinterpret_cast<::xla::IotaReplicaGroupListProto*>(_impl_.replica_group_list_.iota_collective_device_list_) : reinterpret_cast<::xla::IotaReplicaGroupListProto&>(::xla::_IotaReplicaGroupListProto_default_instance_);
}
inline const ::xla::IotaReplicaGroupListProto& HloInstructionProto::iota_collective_device_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.iota_collective_device_list)
  return _internal_iota_collective_device_list();
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_iota_collective_device_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.HloInstructionProto.iota_collective_device_list)
  if (replica_group_list_case() == kIotaCollectiveDeviceList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::IotaReplicaGroupListProto*>(_impl_.replica_group_list_.iota_collective_device_list_);
    _impl_.replica_group_list_.iota_collective_device_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void HloInstructionProto::unsafe_arena_set_allocated_iota_collective_device_list(
    ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_replica_group_list();
  if (value) {
    set_has_iota_collective_device_list();
    _impl_.replica_group_list_.iota_collective_device_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.iota_collective_device_list)
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_iota_collective_device_list() {
  if (replica_group_list_case() != kIotaCollectiveDeviceList) {
    clear_replica_group_list();
    set_has_iota_collective_device_list();
    _impl_.replica_group_list_.iota_collective_device_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::IotaReplicaGroupListProto>(GetArena()));
  }
  return reinterpret_cast<::xla::IotaReplicaGroupListProto*>(_impl_.replica_group_list_.iota_collective_device_list_);
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL HloInstructionProto::mutable_iota_collective_device_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::IotaReplicaGroupListProto* _msg = _internal_mutable_iota_collective_device_list();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.iota_collective_device_list)
  return _msg;
}

// .xla.MeshAxesReplicaGroupListProto mesh_axes_replica_group_list = 93;
inline bool HloInstructionProto::has_mesh_axes_replica_group_list() const {
  return replica_group_list_case() == kMeshAxesReplicaGroupList;
}
inline bool HloInstructionProto::_internal_has_mesh_axes_replica_group_list() const {
  return replica_group_list_case() == kMeshAxesReplicaGroupList;
}
inline void HloInstructionProto::set_has_mesh_axes_replica_group_list() {
  _impl_._oneof_case_[1] = kMeshAxesReplicaGroupList;
}
inline ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE HloInstructionProto::release_mesh_axes_replica_group_list() {
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.mesh_axes_replica_group_list)
  if (replica_group_list_case() == kMeshAxesReplicaGroupList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::MeshAxesReplicaGroupListProto*>(_impl_.replica_group_list_.mesh_axes_replica_group_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.replica_group_list_.mesh_axes_replica_group_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::MeshAxesReplicaGroupListProto& HloInstructionProto::_internal_mesh_axes_replica_group_list() const {
  return replica_group_list_case() == kMeshAxesReplicaGroupList ? *reinterpret_cast<::xla::MeshAxesReplicaGroupListProto*>(_impl_.replica_group_list_.mesh_axes_replica_group_list_) : reinterpret_cast<::xla::MeshAxesReplicaGroupListProto&>(::xla::_MeshAxesReplicaGroupListProto_default_instance_);
}
inline const ::xla::MeshAxesReplicaGroupListProto& HloInstructionProto::mesh_axes_replica_group_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.mesh_axes_replica_group_list)
  return _internal_mesh_axes_replica_group_list();
}
inline ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_mesh_axes_replica_group_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.HloInstructionProto.mesh_axes_replica_group_list)
  if (replica_group_list_case() == kMeshAxesReplicaGroupList) {
    clear_has_replica_group_list();
    auto* temp = reinterpret_cast<::xla::MeshAxesReplicaGroupListProto*>(_impl_.replica_group_list_.mesh_axes_replica_group_list_);
    _impl_.replica_group_list_.mesh_axes_replica_group_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void HloInstructionProto::unsafe_arena_set_allocated_mesh_axes_replica_group_list(
    ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_replica_group_list();
  if (value) {
    set_has_mesh_axes_replica_group_list();
    _impl_.replica_group_list_.mesh_axes_replica_group_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.mesh_axes_replica_group_list)
}
inline ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL HloInstructionProto::_internal_mutable_mesh_axes_replica_group_list() {
  if (replica_group_list_case() != kMeshAxesReplicaGroupList) {
    clear_replica_group_list();
    set_has_mesh_axes_replica_group_list();
    _impl_.replica_group_list_.mesh_axes_replica_group_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::MeshAxesReplicaGroupListProto>(GetArena()));
  }
  return reinterpret_cast<::xla::MeshAxesReplicaGroupListProto*>(_impl_.replica_group_list_.mesh_axes_replica_group_list_);
}
inline ::xla::MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL HloInstructionProto::mutable_mesh_axes_replica_group_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::MeshAxesReplicaGroupListProto* _msg = _internal_mutable_mesh_axes_replica_group_list();
  // @@protoc_insertion_point(field_mutable:xla.HloInstructionProto.mesh_axes_replica_group_list)
  return _msg;
}

// .xla.OriginalValueProto original_value = 88;
inline bool HloInstructionProto::has_original_value() const {
  bool value = (_impl_._has_bits_[0] & 0x20000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x20000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x20000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.original_value)
}
inline ::xla::OriginalValueProto* PROTOBUF_NULLABLE HloInstructionProto::release_original_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x20000000u;
  ::xla::OriginalValueProto* released = _impl_.original_value_;
  _impl_.original_value_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OriginalValueProto* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_original_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.original_value)

  _impl_._has_bits_[0] &= ~0x20000000u;
  ::xla::OriginalValueProto* temp = _impl_.original_value_;
  _impl_.original_value_ = nullptr;
  return temp;
}
inline ::xla::OriginalValueProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_original_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x20000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.original_value_);
  }

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

  _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;
  _impl_._has_bits_[1] &= ~0x10000000u;
}
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);
  _impl_._has_bits_[1] |= 0x10000000u;
  // @@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] & 0x80000000u) != 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* PROTOBUF_NULLABLE 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] |= 0x80000000u;
  } else {
    _impl_._has_bits_[0] &= ~0x80000000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloInstructionProto.result_accuracy)
}
inline ::xla::ResultAccuracy* PROTOBUF_NULLABLE HloInstructionProto::release_result_accuracy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x80000000u;
  ::xla::ResultAccuracy* released = _impl_.result_accuracy_;
  _impl_.result_accuracy_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ResultAccuracy* PROTOBUF_NULLABLE HloInstructionProto::unsafe_arena_release_result_accuracy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloInstructionProto.result_accuracy)

  _impl_._has_bits_[0] &= ~0x80000000u;
  ::xla::ResultAccuracy* temp = _impl_.result_accuracy_;
  _impl_.result_accuracy_ = nullptr;
  return temp;
}
inline ::xla::ResultAccuracy* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloInstructionProto::mutable_result_accuracy()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x80000000u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_accuracy_);
  }

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

  _impl_.result_accuracy_ = reinterpret_cast<::xla::ResultAccuracy*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.HloInstructionProto.result_accuracy)
}

// bool is_reverse = 94;
inline void HloInstructionProto::clear_is_reverse() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_reverse_ = false;
  _impl_._has_bits_[1] &= ~0x20000000u;
}
inline bool HloInstructionProto::is_reverse() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_reverse)
  return _internal_is_reverse();
}
inline void HloInstructionProto::set_is_reverse(bool value) {
  _internal_set_is_reverse(value);
  _impl_._has_bits_[1] |= 0x20000000u;
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_reverse)
}
inline bool HloInstructionProto::_internal_is_reverse() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_reverse_;
}
inline void HloInstructionProto::_internal_set_is_reverse(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_reverse_ = value;
}

// int64 num_carries = 95;
inline void HloInstructionProto::clear_num_carries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_carries_ = ::int64_t{0};
  _impl_._has_bits_[1] &= ~0x40000000u;
}
inline ::int64_t HloInstructionProto::num_carries() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.num_carries)
  return _internal_num_carries();
}
inline void HloInstructionProto::set_num_carries(::int64_t value) {
  _internal_set_num_carries(value);
  _impl_._has_bits_[1] |= 0x40000000u;
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.num_carries)
}
inline ::int64_t HloInstructionProto::_internal_num_carries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_carries_;
}
inline void HloInstructionProto::_internal_set_num_carries(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_carries_ = value;
}

// .xla.TriState is_associative = 96;
inline void HloInstructionProto::clear_is_associative() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_associative_ = 0;
  _impl_._has_bits_[1] &= ~0x80000000u;
}
inline ::xla::TriState HloInstructionProto::is_associative() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.is_associative)
  return _internal_is_associative();
}
inline void HloInstructionProto::set_is_associative(::xla::TriState value) {
  _internal_set_is_associative(value);
  _impl_._has_bits_[1] |= 0x80000000u;
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.is_associative)
}
inline ::xla::TriState HloInstructionProto::_internal_is_associative() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::TriState>(_impl_.is_associative_);
}
inline void HloInstructionProto::_internal_set_is_associative(::xla::TriState value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_associative_ = value;
}

// .xla.ConvolutionKind conv_kind = 97;
inline void HloInstructionProto::clear_conv_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.conv_kind_ = 0;
  _impl_._has_bits_[2] &= ~0x00000001u;
}
inline ::xla::ConvolutionKind HloInstructionProto::conv_kind() const {
  // @@protoc_insertion_point(field_get:xla.HloInstructionProto.conv_kind)
  return _internal_conv_kind();
}
inline void HloInstructionProto::set_conv_kind(::xla::ConvolutionKind value) {
  _internal_set_conv_kind(value);
  _impl_._has_bits_[2] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.HloInstructionProto.conv_kind)
}
inline ::xla::ConvolutionKind HloInstructionProto::_internal_conv_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ConvolutionKind>(_impl_.conv_kind_);
}
inline void HloInstructionProto::_internal_set_conv_kind(::xla::ConvolutionKind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.conv_kind_ = 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 bool HloInstructionProto::has_replica_group_list() const {
  return replica_group_list_case() != REPLICA_GROUP_LIST_NOT_SET;
}
inline void HloInstructionProto::clear_has_replica_group_list() {
  _impl_._oneof_case_[1] = REPLICA_GROUP_LIST_NOT_SET;
}
inline HloInstructionProto::OptionalCrossProgramPrefetchIndexCase HloInstructionProto::optional_cross_program_prefetch_index_case() const {
  return HloInstructionProto::OptionalCrossProgramPrefetchIndexCase(_impl_._oneof_case_[0]);
}
inline HloInstructionProto::ReplicaGroupListCase HloInstructionProto::replica_group_list_case() const {
  return HloInstructionProto::ReplicaGroupListCase(_impl_._oneof_case_[1]);
}
// -------------------------------------------------------------------

// HloComputationProto

// string name = 1;
inline void HloComputationProto::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloComputationProto::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloComputationProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloComputationProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void HloComputationProto::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00000004u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloComputationProto.program_shape)
}
inline ::xla::ProgramShapeProto* PROTOBUF_NULLABLE HloComputationProto::release_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ProgramShapeProto* released = _impl_.program_shape_;
  _impl_.program_shape_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ProgramShapeProto* PROTOBUF_NULLABLE HloComputationProto::unsafe_arena_release_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.program_shape)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ProgramShapeProto* temp = _impl_.program_shape_;
  _impl_.program_shape_ = nullptr;
  return temp;
}
inline ::xla::ProgramShapeProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloComputationProto::mutable_program_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.program_shape_);
  }

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

  _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};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
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);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloComputationProto::set_execution_thread(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.execution_thread_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloComputationProto.execution_thread)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000002u;
  _impl_.execution_thread_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloComputationProto::_internal_mutable_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.execution_thread_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloComputationProto::release_execution_thread() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloComputationProto.execution_thread)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.execution_thread_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.execution_thread_.Set("", GetArena());
  }
  return released;
}
inline void HloComputationProto::set_allocated_execution_thread(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.execution_thread_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.execution_thread_.IsDefault()) {
    _impl_.execution_thread_.Set("", GetArena());
  }
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL HloScheduleProto::_internal_mutable_sequences() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sequences_.MutableMap();
}
inline ::google::protobuf::Map<::int64_t, ::xla::HloScheduleProto_InstructionSequence>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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 end_line = 5;
inline void StackFrameIndexProto_FileLocation::clear_end_line() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_line_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int32_t StackFrameIndexProto_FileLocation::end_line() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.end_line)
  return _internal_end_line();
}
inline void StackFrameIndexProto_FileLocation::set_end_line(::int32_t value) {
  _internal_set_end_line(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.end_line)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_end_line() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_line_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_end_line(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_line_ = value;
}

// int32 column = 4;
inline void StackFrameIndexProto_FileLocation::clear_column() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.column_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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;
}

// int32 end_column = 6;
inline void StackFrameIndexProto_FileLocation::clear_end_column() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_column_ = 0;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int32_t StackFrameIndexProto_FileLocation::end_column() const {
  // @@protoc_insertion_point(field_get:xla.StackFrameIndexProto.FileLocation.end_column)
  return _internal_end_column();
}
inline void StackFrameIndexProto_FileLocation::set_end_column(::int32_t value) {
  _internal_set_end_column(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.StackFrameIndexProto.FileLocation.end_column)
}
inline ::int32_t StackFrameIndexProto_FileLocation::_internal_end_column() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_column_;
}
inline void StackFrameIndexProto_FileLocation::_internal_set_end_column(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_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;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloModuleProto_ProfileInfo::set_fingerprint(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.fingerprint_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.fingerprint)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.fingerprint_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloModuleProto_ProfileInfo::_internal_mutable_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.fingerprint_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloModuleProto_ProfileInfo::release_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.ProfileInfo.fingerprint)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.fingerprint_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.fingerprint_.Set("", GetArena());
  }
  return released;
}
inline void HloModuleProto_ProfileInfo::set_allocated_fingerprint(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.fingerprint_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.fingerprint_.IsDefault()) {
    _impl_.fingerprint_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.ProfileInfo.fingerprint)
}

// .xla.ProfileGenerationStrategy profile_generation_strategy = 6;
inline void HloModuleProto_ProfileInfo::clear_profile_generation_strategy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_generation_strategy_ = 0;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::xla::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::ProfileGenerationStrategy value) {
  _internal_set_profile_generation_strategy(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.ProfileInfo.profile_generation_strategy)
}
inline ::xla::ProfileGenerationStrategy HloModuleProto_ProfileInfo::_internal_profile_generation_strategy() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ProfileGenerationStrategy>(_impl_.profile_generation_strategy_);
}
inline void HloModuleProto_ProfileInfo::_internal_set_profile_generation_strategy(::xla::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};
  _impl_._has_bits_[0] &= ~0x00000040u;
}
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);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000080u;
}
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);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloModuleProto::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloModuleProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloModuleProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void HloModuleProto::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.HloModuleProto.name)
}

// string entry_computation_name = 2;
inline void HloModuleProto::clear_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_computation_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloModuleProto::set_entry_computation_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.entry_computation_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleProto.entry_computation_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000002u;
  _impl_.entry_computation_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloModuleProto::_internal_mutable_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.entry_computation_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloModuleProto::release_entry_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.entry_computation_name)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.entry_computation_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.entry_computation_name_.Set("", GetArena());
  }
  return released;
}
inline void HloModuleProto::set_allocated_entry_computation_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.entry_computation_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.entry_computation_name_.IsDefault()) {
    _impl_.entry_computation_name_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[0] &= ~0x00001000u;
}
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);
  _impl_._has_bits_[0] |= 0x00001000u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00000004u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.host_program_shape)
}
inline ::xla::ProgramShapeProto* PROTOBUF_NULLABLE HloModuleProto::release_host_program_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ProgramShapeProto* released = _impl_.host_program_shape_;
  _impl_.host_program_shape_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ProgramShapeProto* PROTOBUF_NULLABLE 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] &= ~0x00000004u;
  ::xla::ProgramShapeProto* temp = _impl_.host_program_shape_;
  _impl_.host_program_shape_ = nullptr;
  return temp;
}
inline ::xla::ProgramShapeProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_host_program_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.host_program_shape_);
  }

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

  _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};
  _impl_._has_bits_[0] &= ~0x00000800u;
}
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);
  _impl_._has_bits_[0] |= 0x00000800u;
  // @@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] & 0x00000008u) != 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] &= ~0x00000008u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.schedule)
}
inline ::xla::HloScheduleProto* PROTOBUF_NULLABLE HloModuleProto::release_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::HloScheduleProto* released = _impl_.schedule_;
  _impl_.schedule_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloScheduleProto* PROTOBUF_NULLABLE HloModuleProto::unsafe_arena_release_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.schedule)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::HloScheduleProto* temp = _impl_.schedule_;
  _impl_.schedule_ = nullptr;
  return temp;
}
inline ::xla::HloScheduleProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_schedule()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::HloScheduleProto* _msg = _internal_mutable_schedule();
  // @@protoc_insertion_point(field_mutable:xla.HloModuleProto.schedule)
  return _msg;
}
inline void HloModuleProto::set_allocated_schedule(::xla::HloScheduleProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }

  _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] & 0x00000010u) != 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] &= ~0x00000010u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.input_output_alias)
}
inline ::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE HloModuleProto::release_input_output_alias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::HloInputOutputAliasProto* released = _impl_.input_output_alias_;
  _impl_.input_output_alias_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloInputOutputAliasProto* PROTOBUF_NULLABLE 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] &= ~0x00000010u;
  ::xla::HloInputOutputAliasProto* temp = _impl_.input_output_alias_;
  _impl_.input_output_alias_ = nullptr;
  return temp;
}
inline ::xla::HloInputOutputAliasProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_input_output_alias()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _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] & 0x00000100u) != 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] &= ~0x00000100u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.buffer_donor)
}
inline ::xla::HloBufferDonorProto* PROTOBUF_NULLABLE HloModuleProto::release_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::HloBufferDonorProto* released = _impl_.buffer_donor_;
  _impl_.buffer_donor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloBufferDonorProto* PROTOBUF_NULLABLE HloModuleProto::unsafe_arena_release_buffer_donor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.buffer_donor)

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::HloBufferDonorProto* temp = _impl_.buffer_donor_;
  _impl_.buffer_donor_ = nullptr;
  return temp;
}
inline ::xla::HloBufferDonorProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_buffer_donor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000100u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }

  _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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00002000u;
}
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);
  _impl_._has_bits_[0] |= 0x00002000u;
  // @@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] & 0x00000020u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.spmd_output_sharding)
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE HloModuleProto::release_spmd_output_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::OpSharding* released = _impl_.spmd_output_sharding_;
  _impl_.spmd_output_sharding_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OpSharding* PROTOBUF_NULLABLE 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] &= ~0x00000020u;
  ::xla::OpSharding* temp = _impl_.spmd_output_sharding_;
  _impl_.spmd_output_sharding_ = nullptr;
  return temp;
}
inline ::xla::OpSharding* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_spmd_output_sharding()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.spmd_output_sharding_);
  }

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

  _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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00004000u;
}
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);
  _impl_._has_bits_[0] |= 0x00004000u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00000040u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.device_assignment)
}
inline ::xla::DeviceAssignmentProto* PROTOBUF_NULLABLE HloModuleProto::release_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::DeviceAssignmentProto* temp = _impl_.device_assignment_;
  _impl_.device_assignment_ = nullptr;
  return temp;
}
inline ::xla::DeviceAssignmentProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_device_assignment()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.device_assignment_);
  }

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

  _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] & 0x00000080u) != 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] &= ~0x00000080u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.stack_frame_index)
}
inline ::xla::StackFrameIndexProto* PROTOBUF_NULLABLE HloModuleProto::release_stack_frame_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::StackFrameIndexProto* released = _impl_.stack_frame_index_;
  _impl_.stack_frame_index_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::StackFrameIndexProto* PROTOBUF_NULLABLE 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] &= ~0x00000080u;
  ::xla::StackFrameIndexProto* temp = _impl_.stack_frame_index_;
  _impl_.stack_frame_index_ = nullptr;
  return temp;
}
inline ::xla::StackFrameIndexProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_stack_frame_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000080u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }

  _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] & 0x00000200u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.frontend_attributes)
}
inline ::xla::FrontendAttributes* PROTOBUF_NULLABLE HloModuleProto::release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::FrontendAttributes* released = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::FrontendAttributes* PROTOBUF_NULLABLE HloModuleProto::unsafe_arena_release_frontend_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleProto.frontend_attributes)

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::FrontendAttributes* temp = _impl_.frontend_attributes_;
  _impl_.frontend_attributes_ = nullptr;
  return temp;
}
inline ::xla::FrontendAttributes* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_frontend_attributes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000200u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.frontend_attributes_);
  }

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

  _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] & 0x00000400u) != 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] &= ~0x00000400u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloModuleProto.original_value_recovery_table)
}
inline ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE HloModuleProto::release_original_value_recovery_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::OriginalValueRecoveryTableProto* released = _impl_.original_value_recovery_table_;
  _impl_.original_value_recovery_table_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NULLABLE 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] &= ~0x00000400u;
  ::xla::OriginalValueRecoveryTableProto* temp = _impl_.original_value_recovery_table_;
  _impl_.original_value_recovery_table_ = nullptr;
  return temp;
}
inline ::xla::OriginalValueRecoveryTableProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloModuleProto::mutable_original_value_recovery_table()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000400u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }

  _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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void LogicalBufferProto_Location::set_instruction_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LogicalBufferProto.Location.instruction_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LogicalBufferProto_Location::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LogicalBufferProto_Location::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LogicalBufferProto.Location.instruction_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.instruction_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  return released;
}
inline void LogicalBufferProto_Location::set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.instruction_name_.IsDefault()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE 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;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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;
}

// .xla.PrimitiveType element_type = 4;
inline void BufferAllocationProto_Assigned::clear_element_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::PrimitiveType BufferAllocationProto_Assigned::element_type() const {
  // @@protoc_insertion_point(field_get:xla.BufferAllocationProto.Assigned.element_type)
  return _internal_element_type();
}
inline void BufferAllocationProto_Assigned::set_element_type(::xla::PrimitiveType value) {
  _internal_set_element_type(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.BufferAllocationProto.Assigned.element_type)
}
inline ::xla::PrimitiveType BufferAllocationProto_Assigned::_internal_element_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PrimitiveType>(_impl_.element_type_);
}
inline void BufferAllocationProto_Assigned::_internal_set_element_type(::xla::PrimitiveType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_type_ = value;
}

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

// BufferAllocationProto

// int64 index = 1;
inline void BufferAllocationProto::clear_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
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);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
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);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000100u;
}
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);
  _impl_._has_bits_[0] |= 0x00000100u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000200u;
}
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);
  _impl_._has_bits_[0] |= 0x00000200u;
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
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);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HeapSimulatorTrace_Event::set_computation_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.computation_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.computation_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.computation_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HeapSimulatorTrace_Event::_internal_mutable_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.computation_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HeapSimulatorTrace_Event::release_computation_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HeapSimulatorTrace.Event.computation_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.computation_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.computation_name_.Set("", GetArena());
  }
  return released;
}
inline void HeapSimulatorTrace_Event::set_allocated_computation_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.computation_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.computation_name_.IsDefault()) {
    _impl_.computation_name_.Set("", GetArena());
  }
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HeapSimulatorTrace_Event::set_instruction_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HeapSimulatorTrace.Event.instruction_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000002u;
  _impl_.instruction_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HeapSimulatorTrace_Event::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HeapSimulatorTrace_Event::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HeapSimulatorTrace.Event.instruction_name)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.instruction_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  return released;
}
inline void HeapSimulatorTrace_Event::set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.instruction_name_.IsDefault()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloModuleGroupProto::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleGroupProto.name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloModuleGroupProto::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloModuleGroupProto::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleGroupProto.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void HloModuleGroupProto::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE BufferAssignmentProto_BufferAlias::release_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LogicalBufferProto_Location* released = _impl_.location_;
  _impl_.location_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::LogicalBufferProto_Location* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE HloProto::release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* released = _impl_.hlo_module_;
  _impl_.hlo_module_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloModuleProto* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE HloProto::release_buffer_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::BufferAssignmentProto* released = _impl_.buffer_assignment_;
  _impl_.buffer_assignment_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::BufferAssignmentProto* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] & 0x00000002u) != 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] &= ~0x00000002u;
}
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* PROTOBUF_NULLABLE 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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloSnapshot.hlo)
}
inline ::xla::HloProto* PROTOBUF_NULLABLE HloSnapshot::release_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::HloProto* temp = _impl_.hlo_;
  _impl_.hlo_ = nullptr;
  return temp;
}
inline ::xla::HloProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloSnapshot::mutable_hlo()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::HloProto* _msg = _internal_mutable_hlo();
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.hlo)
  return _msg;
}
inline void HloSnapshot::set_allocated_hlo(::xla::HloProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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] & 0x00000004u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloSnapshot.result)
}
inline ::xla::LiteralProto* PROTOBUF_NULLABLE HloSnapshot::release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::LiteralProto* released = _impl_.result_;
  _impl_.result_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::LiteralProto* PROTOBUF_NULLABLE HloSnapshot::unsafe_arena_release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloSnapshot.result)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::LiteralProto* temp = _impl_.result_;
  _impl_.result_ = nullptr;
  return temp;
}
inline ::xla::LiteralProto* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloSnapshot::mutable_result()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::LiteralProto* _msg = _internal_mutable_result();
  // @@protoc_insertion_point(field_mutable:xla.HloSnapshot.result)
  return _msg;
}
inline void HloSnapshot::set_allocated_result(::xla::LiteralProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }

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

  _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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloSnapshot::set_execution_platform(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.execution_platform_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloSnapshot.execution_platform)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.execution_platform_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloSnapshot::_internal_mutable_execution_platform() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.execution_platform_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloSnapshot::release_execution_platform() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloSnapshot.execution_platform)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.execution_platform_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.execution_platform_.Set("", GetArena());
  }
  return released;
}
inline void HloSnapshot::set_allocated_execution_platform(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.execution_platform_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.execution_platform_.IsDefault()) {
    _impl_.execution_platform_.Set("", GetArena());
  }
  // @@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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE HloUnoptimizedSnapshot::release_hlo_module() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HloModuleProto* released = _impl_.hlo_module_;
  _impl_.hlo_module_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloModuleProto* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloModuleMetadataProto::set_module_group_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.module_group_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloModuleMetadataProto.module_group_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.module_group_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloModuleMetadataProto::_internal_mutable_module_group_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.module_group_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloModuleMetadataProto::release_module_group_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloModuleMetadataProto.module_group_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.module_group_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.module_group_name_.Set("", GetArena());
  }
  return released;
}
inline void HloModuleMetadataProto::set_allocated_module_group_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.module_group_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.module_group_name_.IsDefault()) {
    _impl_.module_group_name_.Set("", GetArena());
  }
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
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);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
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);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloPassMetadata::set_pass_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.pass_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.pass_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000001u;
  _impl_.pass_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloPassMetadata::_internal_mutable_pass_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.pass_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloPassMetadata::release_pass_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloPassMetadata.pass_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.pass_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.pass_name_.Set("", GetArena());
  }
  return released;
}
inline void HloPassMetadata::set_allocated_pass_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.pass_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.pass_name_.IsDefault()) {
    _impl_.pass_name_.Set("", GetArena());
  }
  // @@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();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
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_>
PROTOBUF_ALWAYS_INLINE void HloPassMetadata::set_pipeline_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.pipeline_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.HloPassMetadata.pipeline_name)
}
inline ::std::string* PROTOBUF_NONNULL 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_._has_bits_[0] |= 0x00000002u;
  _impl_.pipeline_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HloPassMetadata::_internal_mutable_pipeline_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.pipeline_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HloPassMetadata::release_pipeline_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.HloPassMetadata.pipeline_name)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.pipeline_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.pipeline_name_.Set("", GetArena());
  }
  return released;
}
inline void HloPassMetadata::set_allocated_pipeline_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.pipeline_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.pipeline_name_.IsDefault()) {
    _impl_.pipeline_name_.Set("", GetArena());
  }
  // @@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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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>* PROTOBUF_NONNULL
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;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
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);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
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);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@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>* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
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);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@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};
  _impl_._has_bits_[0] &= ~0x00000040u;
}
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);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@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] & 0x00000004u) != 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* PROTOBUF_NULLABLE 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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.HloPassMetadata.custom_metadata)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE HloPassMetadata::release_custom_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::google::protobuf::Any* temp = _impl_.custom_metadata_;
  _impl_.custom_metadata_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL HloPassMetadata::mutable_custom_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.custom_metadata_);
  }

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

  _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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
HloPassMetadata::_internal_mutable_kv_metrics() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.kv_metrics_;
}

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

// OriginalValueRecoveryTableProto_Entry

// .xla.OriginalArrayProto old_original_array = 1;
inline bool OriginalValueRecoveryTableProto_Entry::has_old_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.old_original_array_ != nullptr);
  return value;
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::_internal_old_original_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalArrayProto* p = _impl_.old_original_array_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalArrayProto&>(::xla::_OriginalArrayProto_default_instance_);
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::old_original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.Entry.old_original_array)
  return _internal_old_original_array();
}
inline void OriginalValueRecoveryTableProto_Entry::unsafe_arena_set_allocated_old_original_array(
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.old_original_array_);
  }
  _impl_.old_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.old_original_array)
}
inline ::xla::OriginalArrayProto* PROTOBUF_NULLABLE OriginalValueRecoveryTableProto_Entry::release_old_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* released = _impl_.old_original_array_;
  _impl_.old_original_array_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NULLABLE OriginalValueRecoveryTableProto_Entry::unsafe_arena_release_old_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueRecoveryTableProto.Entry.old_original_array)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* temp = _impl_.old_original_array_;
  _impl_.old_original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueRecoveryTableProto_Entry::_internal_mutable_old_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.old_original_array_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalArrayProto>(GetArena());
    _impl_.old_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(p);
  }
  return _impl_.old_original_array_;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueRecoveryTableProto_Entry::mutable_old_original_array()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::OriginalArrayProto* _msg = _internal_mutable_old_original_array();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.Entry.old_original_array)
  return _msg;
}
inline void OriginalValueRecoveryTableProto_Entry::set_allocated_old_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.old_original_array_);
  }

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

  _impl_.old_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.old_original_array)
}

// .xla.OriginalArrayProto new_original_array = 2;
inline bool OriginalValueRecoveryTableProto_Entry::has_new_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.new_original_array_ != nullptr);
  return value;
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::_internal_new_original_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalArrayProto* p = _impl_.new_original_array_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalArrayProto&>(::xla::_OriginalArrayProto_default_instance_);
}
inline const ::xla::OriginalArrayProto& OriginalValueRecoveryTableProto_Entry::new_original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueRecoveryTableProto.Entry.new_original_array)
  return _internal_new_original_array();
}
inline void OriginalValueRecoveryTableProto_Entry::unsafe_arena_set_allocated_new_original_array(
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_original_array_);
  }
  _impl_.new_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.new_original_array)
}
inline ::xla::OriginalArrayProto* PROTOBUF_NULLABLE OriginalValueRecoveryTableProto_Entry::release_new_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OriginalArrayProto* released = _impl_.new_original_array_;
  _impl_.new_original_array_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NULLABLE OriginalValueRecoveryTableProto_Entry::unsafe_arena_release_new_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueRecoveryTableProto.Entry.new_original_array)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::OriginalArrayProto* temp = _impl_.new_original_array_;
  _impl_.new_original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueRecoveryTableProto_Entry::_internal_mutable_new_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.new_original_array_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalArrayProto>(GetArena());
    _impl_.new_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(p);
  }
  return _impl_.new_original_array_;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueRecoveryTableProto_Entry::mutable_new_original_array()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::OriginalArrayProto* _msg = _internal_mutable_new_original_array();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueRecoveryTableProto.Entry.new_original_array)
  return _msg;
}
inline void OriginalValueRecoveryTableProto_Entry::set_allocated_new_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_original_array_);
  }

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

  _impl_.new_original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueRecoveryTableProto.Entry.new_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* PROTOBUF_NULLABLE 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* PROTOBUF_NULLABLE 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;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HloModuleProto* PROTOBUF_NULLABLE 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* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL 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>* PROTOBUF_NONNULL
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* PROTOBUF_NONNULL GetEnumDescriptor<::xla::HloModuleProto_ProfileType>() {
  return ::xla::HloModuleProto_ProfileType_descriptor();
}
template <>
struct is_proto_enum<::xla::HeapSimulatorTrace_Event_Kind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL 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* PROTOBUF_NONNULL GetEnumDescriptor<::xla::CustomCallSchedule>() {
  return ::xla::CustomCallSchedule_descriptor();
}
template <>
struct is_proto_enum<::xla::TriState> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::TriState>() {
  return ::xla::TriState_descriptor();
}
template <>
struct is_proto_enum<::xla::ConvolutionKind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ConvolutionKind>() {
  return ::xla::ConvolutionKind_descriptor();
}
template <>
struct is_proto_enum<::xla::CustomCallApiVersion> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::CustomCallApiVersion>() {
  return ::xla::CustomCallApiVersion_descriptor();
}
template <>
struct is_proto_enum<::xla::Kind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::Kind>() {
  return ::xla::Kind_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // xla_2fservice_2fhlo_2eproto_2epb_2eh
