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

#ifndef xla_2fxla_5fdata_2eproto_2epb_2eh
#define xla_2fxla_5fdata_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"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fxla_5fdata_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_2fxla_5fdata_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable descriptor_table_xla_2fxla_5fdata_2eproto;
}  // extern "C"
namespace xla {
enum AsyncStreamKind : int;
PROTOBUF_EXPORT extern const uint32_t AsyncStreamKind_internal_data_[];
enum ChannelHandle_ChannelType : int;
PROTOBUF_EXPORT extern const uint32_t ChannelHandle_ChannelType_internal_data_[];
enum CollectiveOpGroupMode : int;
PROTOBUF_EXPORT extern const uint32_t CollectiveOpGroupMode_internal_data_[];
enum CompilationEvent : int;
PROTOBUF_EXPORT extern const uint32_t CompilationEvent_internal_data_[];
enum DimLevelType : int;
PROTOBUF_EXPORT extern const uint32_t DimLevelType_internal_data_[];
enum FftType : int;
PROTOBUF_EXPORT extern const uint32_t FftType_internal_data_[];
enum OpSharding_ShardGroupType : int;
PROTOBUF_EXPORT extern const uint32_t OpSharding_ShardGroupType_internal_data_[];
enum OpSharding_Type : int;
PROTOBUF_EXPORT extern const uint32_t OpSharding_Type_internal_data_[];
enum PaddingType : int;
PROTOBUF_EXPORT extern const uint32_t PaddingType_internal_data_[];
enum PrecisionConfig_Algorithm : int;
PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Algorithm_internal_data_[];
enum PrecisionConfig_Precision : int;
PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Precision_internal_data_[];
enum PrimitiveType : int;
PROTOBUF_EXPORT extern const uint32_t PrimitiveType_internal_data_[];
enum ProfileGenerationStrategy : int;
PROTOBUF_EXPORT extern const uint32_t ProfileGenerationStrategy_internal_data_[];
enum ProfileSource : int;
PROTOBUF_EXPORT extern const uint32_t ProfileSource_internal_data_[];
enum ProfileType : int;
PROTOBUF_EXPORT extern const uint32_t ProfileType_internal_data_[];
enum RandomAlgorithm : int;
PROTOBUF_EXPORT extern const uint32_t RandomAlgorithm_internal_data_[];
enum RandomDistribution : int;
PROTOBUF_EXPORT extern const uint32_t RandomDistribution_internal_data_[];
enum ResultAccuracy_Mode : int;
PROTOBUF_EXPORT extern const uint32_t ResultAccuracy_Mode_internal_data_[];
enum TriangularSolveOptions_Transpose : int;
PROTOBUF_EXPORT extern const uint32_t TriangularSolveOptions_Transpose_internal_data_[];
class AxisRefProto;
struct AxisRefProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AxisRefProtoDefaultTypeInternal _AxisRefProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AxisRefProto_class_data_;
class AxisRefProto_SubAxis;
struct AxisRefProto_SubAxisDefaultTypeInternal;
PROTOBUF_EXPORT extern AxisRefProto_SubAxisDefaultTypeInternal _AxisRefProto_SubAxis_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AxisRefProto_SubAxis_class_data_;
class ChannelHandle;
struct ChannelHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern ChannelHandleDefaultTypeInternal _ChannelHandle_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ChannelHandle_class_data_;
class CholeskyOptions;
struct CholeskyOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern CholeskyOptionsDefaultTypeInternal _CholeskyOptions_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CholeskyOptions_class_data_;
class CollectiveDeviceListProto;
struct CollectiveDeviceListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveDeviceListProtoDefaultTypeInternal _CollectiveDeviceListProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveDeviceListProto_class_data_;
class ComputationStats;
struct ComputationStatsDefaultTypeInternal;
PROTOBUF_EXPORT extern ComputationStatsDefaultTypeInternal _ComputationStats_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ComputationStats_class_data_;
class ConvolutionDimensionNumbers;
struct ConvolutionDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern ConvolutionDimensionNumbersDefaultTypeInternal _ConvolutionDimensionNumbers_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ConvolutionDimensionNumbers_class_data_;
class DeviceAssignmentProto;
struct DeviceAssignmentProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceAssignmentProtoDefaultTypeInternal _DeviceAssignmentProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull DeviceAssignmentProto_class_data_;
class DeviceAssignmentProto_ComputationDevice;
struct DeviceAssignmentProto_ComputationDeviceDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceAssignmentProto_ComputationDeviceDefaultTypeInternal _DeviceAssignmentProto_ComputationDevice_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull DeviceAssignmentProto_ComputationDevice_class_data_;
class DeviceHandle;
struct DeviceHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceHandleDefaultTypeInternal _DeviceHandle_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull DeviceHandle_class_data_;
class DotDimensionNumbers;
struct DotDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern DotDimensionNumbersDefaultTypeInternal _DotDimensionNumbers_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull DotDimensionNumbers_class_data_;
class ExecutionHandle;
struct ExecutionHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutionHandleDefaultTypeInternal _ExecutionHandle_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ExecutionHandle_class_data_;
class ExecutionProfile;
struct ExecutionProfileDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutionProfileDefaultTypeInternal _ExecutionProfile_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ExecutionProfile_class_data_;
class FrontendAttributes;
struct FrontendAttributesDefaultTypeInternal;
PROTOBUF_EXPORT extern FrontendAttributesDefaultTypeInternal _FrontendAttributes_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FrontendAttributes_class_data_;
class FrontendAttributes_MapEntry_DoNotUse;
struct FrontendAttributes_MapEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern FrontendAttributes_MapEntry_DoNotUseDefaultTypeInternal _FrontendAttributes_MapEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FrontendAttributes_MapEntry_DoNotUse_class_data_;
class GatherDimensionNumbers;
struct GatherDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern GatherDimensionNumbersDefaultTypeInternal _GatherDimensionNumbers_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GatherDimensionNumbers_class_data_;
class GemmPerfTable;
struct GemmPerfTableDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableDefaultTypeInternal _GemmPerfTable_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmPerfTable_class_data_;
class GemmPerfTableEntry;
struct GemmPerfTableEntryDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntryDefaultTypeInternal _GemmPerfTableEntry_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmPerfTableEntry_class_data_;
class GemmPerfTableEntryValues;
struct GemmPerfTableEntryValuesDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntryValuesDefaultTypeInternal _GemmPerfTableEntryValues_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmPerfTableEntryValues_class_data_;
class GemmPerfTableEntry_FlopsEntry_DoNotUse;
struct GemmPerfTableEntry_FlopsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntry_FlopsEntry_DoNotUseDefaultTypeInternal _GemmPerfTableEntry_FlopsEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmPerfTableEntry_FlopsEntry_DoNotUse_class_data_;
class GemmPerfTable_EntriesEntry_DoNotUse;
struct GemmPerfTable_EntriesEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTable_EntriesEntry_DoNotUseDefaultTypeInternal _GemmPerfTable_EntriesEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmPerfTable_EntriesEntry_DoNotUse_class_data_;
class GlobalDataHandle;
struct GlobalDataHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern GlobalDataHandleDefaultTypeInternal _GlobalDataHandle_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GlobalDataHandle_class_data_;
class IotaReplicaGroupListProto;
struct IotaReplicaGroupListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern IotaReplicaGroupListProtoDefaultTypeInternal _IotaReplicaGroupListProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull IotaReplicaGroupListProto_class_data_;
class LayoutProto;
struct LayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LayoutProtoDefaultTypeInternal _LayoutProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull LayoutProto_class_data_;
class LiteralProto;
struct LiteralProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LiteralProtoDefaultTypeInternal _LiteralProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull LiteralProto_class_data_;
class MeshAxesReplicaGroupListProto;
struct MeshAxesReplicaGroupListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern MeshAxesReplicaGroupListProtoDefaultTypeInternal _MeshAxesReplicaGroupListProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull MeshAxesReplicaGroupListProto_class_data_;
class MeshProto;
struct MeshProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern MeshProtoDefaultTypeInternal _MeshProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull MeshProto_class_data_;
class MeshProto_MeshAxis;
struct MeshProto_MeshAxisDefaultTypeInternal;
PROTOBUF_EXPORT extern MeshProto_MeshAxisDefaultTypeInternal _MeshProto_MeshAxis_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull MeshProto_MeshAxis_class_data_;
class NamedShardingProto;
struct NamedShardingProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern NamedShardingProtoDefaultTypeInternal _NamedShardingProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull NamedShardingProto_class_data_;
class NamedShardingProto_DimensionSharding;
struct NamedShardingProto_DimensionShardingDefaultTypeInternal;
PROTOBUF_EXPORT extern NamedShardingProto_DimensionShardingDefaultTypeInternal _NamedShardingProto_DimensionSharding_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull NamedShardingProto_DimensionSharding_class_data_;
class OpMetadata;
struct OpMetadataDefaultTypeInternal;
PROTOBUF_EXPORT extern OpMetadataDefaultTypeInternal _OpMetadata_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OpMetadata_class_data_;
class OpMetadata_ProfileInfo;
struct OpMetadata_ProfileInfoDefaultTypeInternal;
PROTOBUF_EXPORT extern OpMetadata_ProfileInfoDefaultTypeInternal _OpMetadata_ProfileInfo_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OpMetadata_ProfileInfo_class_data_;
class OpSharding;
struct OpShardingDefaultTypeInternal;
PROTOBUF_EXPORT extern OpShardingDefaultTypeInternal _OpSharding_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OpSharding_class_data_;
class OriginalArrayProto;
struct OriginalArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalArrayProtoDefaultTypeInternal _OriginalArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OriginalArrayProto_class_data_;
class OriginalValueElementProto;
struct OriginalValueElementProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueElementProtoDefaultTypeInternal _OriginalValueElementProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OriginalValueElementProto_class_data_;
class OriginalValueProto;
struct OriginalValueProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueProtoDefaultTypeInternal _OriginalValueProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OriginalValueProto_class_data_;
class OutputOperandAliasing;
struct OutputOperandAliasingDefaultTypeInternal;
PROTOBUF_EXPORT extern OutputOperandAliasingDefaultTypeInternal _OutputOperandAliasing_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OutputOperandAliasing_class_data_;
class PaddingConfig;
struct PaddingConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern PaddingConfigDefaultTypeInternal _PaddingConfig_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull PaddingConfig_class_data_;
class PaddingConfig_PaddingConfigDimension;
struct PaddingConfig_PaddingConfigDimensionDefaultTypeInternal;
PROTOBUF_EXPORT extern PaddingConfig_PaddingConfigDimensionDefaultTypeInternal _PaddingConfig_PaddingConfigDimension_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull PaddingConfig_PaddingConfigDimension_class_data_;
class ParameterReplication;
struct ParameterReplicationDefaultTypeInternal;
PROTOBUF_EXPORT extern ParameterReplicationDefaultTypeInternal _ParameterReplication_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ParameterReplication_class_data_;
class PrecisionConfig;
struct PrecisionConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern PrecisionConfigDefaultTypeInternal _PrecisionConfig_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull PrecisionConfig_class_data_;
class ProgramShapeProto;
struct ProgramShapeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ProgramShapeProtoDefaultTypeInternal _ProgramShapeProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ProgramShapeProto_class_data_;
class RaggedDotDimensionNumbers;
struct RaggedDotDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern RaggedDotDimensionNumbersDefaultTypeInternal _RaggedDotDimensionNumbers_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull RaggedDotDimensionNumbers_class_data_;
class ReplicaGroup;
struct ReplicaGroupDefaultTypeInternal;
PROTOBUF_EXPORT extern ReplicaGroupDefaultTypeInternal _ReplicaGroup_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ReplicaGroup_class_data_;
class ResultAccuracy;
struct ResultAccuracyDefaultTypeInternal;
PROTOBUF_EXPORT extern ResultAccuracyDefaultTypeInternal _ResultAccuracy_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ResultAccuracy_class_data_;
class ResultAccuracy_Tolerance;
struct ResultAccuracy_ToleranceDefaultTypeInternal;
PROTOBUF_EXPORT extern ResultAccuracy_ToleranceDefaultTypeInternal _ResultAccuracy_Tolerance_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ResultAccuracy_Tolerance_class_data_;
class ScatterDimensionNumbers;
struct ScatterDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern ScatterDimensionNumbersDefaultTypeInternal _ScatterDimensionNumbers_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ScatterDimensionNumbers_class_data_;
class ShapeProto;
struct ShapeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ShapeProtoDefaultTypeInternal _ShapeProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ShapeProto_class_data_;
class SortOptions;
struct SortOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern SortOptionsDefaultTypeInternal _SortOptions_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SortOptions_class_data_;
class SourceTarget;
struct SourceTargetDefaultTypeInternal;
PROTOBUF_EXPORT extern SourceTargetDefaultTypeInternal _SourceTarget_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SourceTarget_class_data_;
class SplitConfigProto;
struct SplitConfigProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern SplitConfigProtoDefaultTypeInternal _SplitConfigProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SplitConfigProto_class_data_;
class Statistic;
struct StatisticDefaultTypeInternal;
PROTOBUF_EXPORT extern StatisticDefaultTypeInternal _Statistic_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull Statistic_class_data_;
class StatisticsViz;
struct StatisticsVizDefaultTypeInternal;
PROTOBUF_EXPORT extern StatisticsVizDefaultTypeInternal _StatisticsViz_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull StatisticsViz_class_data_;
class TileProto;
struct TileProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern TileProtoDefaultTypeInternal _TileProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull TileProto_class_data_;
class TriangularSolveOptions;
struct TriangularSolveOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern TriangularSolveOptionsDefaultTypeInternal _TriangularSolveOptions_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull TriangularSolveOptions_class_data_;
class WhileLoopBackendConfig;
struct WhileLoopBackendConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfigDefaultTypeInternal _WhileLoopBackendConfig_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WhileLoopBackendConfig_class_data_;
class WhileLoopBackendConfig_KnownInductionVariable;
struct WhileLoopBackendConfig_KnownInductionVariableDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownInductionVariableDefaultTypeInternal _WhileLoopBackendConfig_KnownInductionVariable_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WhileLoopBackendConfig_KnownInductionVariable_class_data_;
class WhileLoopBackendConfig_KnownInitStep;
struct WhileLoopBackendConfig_KnownInitStepDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownInitStepDefaultTypeInternal _WhileLoopBackendConfig_KnownInitStep_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WhileLoopBackendConfig_KnownInitStep_class_data_;
class WhileLoopBackendConfig_KnownTripCount;
struct WhileLoopBackendConfig_KnownTripCountDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownTripCountDefaultTypeInternal _WhileLoopBackendConfig_KnownTripCount_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WhileLoopBackendConfig_KnownTripCount_class_data_;
class Window;
struct WindowDefaultTypeInternal;
PROTOBUF_EXPORT extern WindowDefaultTypeInternal _Window_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull Window_class_data_;
class WindowDimension;
struct WindowDimensionDefaultTypeInternal;
PROTOBUF_EXPORT extern WindowDimensionDefaultTypeInternal _WindowDimension_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WindowDimension_class_data_;
}  // namespace xla
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::xla::AsyncStreamKind_internal_data_>
    internal::EnumTraitsImpl::value<::xla::AsyncStreamKind>;
template <>
internal::EnumTraitsT<::xla::ChannelHandle_ChannelType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ChannelHandle_ChannelType>;
template <>
internal::EnumTraitsT<::xla::CollectiveOpGroupMode_internal_data_>
    internal::EnumTraitsImpl::value<::xla::CollectiveOpGroupMode>;
template <>
internal::EnumTraitsT<::xla::CompilationEvent_internal_data_>
    internal::EnumTraitsImpl::value<::xla::CompilationEvent>;
template <>
internal::EnumTraitsT<::xla::DimLevelType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::DimLevelType>;
template <>
internal::EnumTraitsT<::xla::FftType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::FftType>;
template <>
internal::EnumTraitsT<::xla::OpSharding_ShardGroupType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::OpSharding_ShardGroupType>;
template <>
internal::EnumTraitsT<::xla::OpSharding_Type_internal_data_>
    internal::EnumTraitsImpl::value<::xla::OpSharding_Type>;
template <>
internal::EnumTraitsT<::xla::PaddingType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::PaddingType>;
template <>
internal::EnumTraitsT<::xla::PrecisionConfig_Algorithm_internal_data_>
    internal::EnumTraitsImpl::value<::xla::PrecisionConfig_Algorithm>;
template <>
internal::EnumTraitsT<::xla::PrecisionConfig_Precision_internal_data_>
    internal::EnumTraitsImpl::value<::xla::PrecisionConfig_Precision>;
template <>
internal::EnumTraitsT<::xla::PrimitiveType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::PrimitiveType>;
template <>
internal::EnumTraitsT<::xla::ProfileGenerationStrategy_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ProfileGenerationStrategy>;
template <>
internal::EnumTraitsT<::xla::ProfileSource_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ProfileSource>;
template <>
internal::EnumTraitsT<::xla::ProfileType_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ProfileType>;
template <>
internal::EnumTraitsT<::xla::RandomAlgorithm_internal_data_>
    internal::EnumTraitsImpl::value<::xla::RandomAlgorithm>;
template <>
internal::EnumTraitsT<::xla::RandomDistribution_internal_data_>
    internal::EnumTraitsImpl::value<::xla::RandomDistribution>;
template <>
internal::EnumTraitsT<::xla::ResultAccuracy_Mode_internal_data_>
    internal::EnumTraitsImpl::value<::xla::ResultAccuracy_Mode>;
template <>
internal::EnumTraitsT<::xla::TriangularSolveOptions_Transpose_internal_data_>
    internal::EnumTraitsImpl::value<::xla::TriangularSolveOptions_Transpose>;
}  // namespace protobuf
}  // namespace google

namespace xla {
enum ChannelHandle_ChannelType : int {
  ChannelHandle_ChannelType_CHANNEL_TYPE_INVALID = 0,
  ChannelHandle_ChannelType_DEVICE_TO_DEVICE = 1,
  ChannelHandle_ChannelType_DEVICE_TO_HOST = 2,
  ChannelHandle_ChannelType_HOST_TO_DEVICE = 3,
  ChannelHandle_ChannelType_ChannelHandle_ChannelType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ChannelHandle_ChannelType_ChannelHandle_ChannelType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ChannelHandle_ChannelType_internal_data_[];
inline constexpr ChannelHandle_ChannelType ChannelHandle_ChannelType_ChannelType_MIN =
    static_cast<ChannelHandle_ChannelType>(0);
inline constexpr ChannelHandle_ChannelType ChannelHandle_ChannelType_ChannelType_MAX =
    static_cast<ChannelHandle_ChannelType>(3);
inline bool ChannelHandle_ChannelType_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int ChannelHandle_ChannelType_ChannelType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ChannelHandle_ChannelType_descriptor();
template <typename T>
const ::std::string& ChannelHandle_ChannelType_Name(T value) {
  static_assert(::std::is_same<T, ChannelHandle_ChannelType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ChannelType_Name().");
  return ChannelHandle_ChannelType_Name(static_cast<ChannelHandle_ChannelType>(value));
}
template <>
inline const ::std::string& ChannelHandle_ChannelType_Name(ChannelHandle_ChannelType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ChannelHandle_ChannelType_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool ChannelHandle_ChannelType_Parse(
    ::absl::string_view name, ChannelHandle_ChannelType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ChannelHandle_ChannelType>(ChannelHandle_ChannelType_descriptor(), name,
                                           value);
}
enum TriangularSolveOptions_Transpose : int {
  TriangularSolveOptions_Transpose_TRANSPOSE_INVALID = 0,
  TriangularSolveOptions_Transpose_NO_TRANSPOSE = 1,
  TriangularSolveOptions_Transpose_TRANSPOSE = 2,
  TriangularSolveOptions_Transpose_ADJOINT = 3,
  TriangularSolveOptions_Transpose_TriangularSolveOptions_Transpose_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  TriangularSolveOptions_Transpose_TriangularSolveOptions_Transpose_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t TriangularSolveOptions_Transpose_internal_data_[];
inline constexpr TriangularSolveOptions_Transpose TriangularSolveOptions_Transpose_Transpose_MIN =
    static_cast<TriangularSolveOptions_Transpose>(0);
inline constexpr TriangularSolveOptions_Transpose TriangularSolveOptions_Transpose_Transpose_MAX =
    static_cast<TriangularSolveOptions_Transpose>(3);
inline bool TriangularSolveOptions_Transpose_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int TriangularSolveOptions_Transpose_Transpose_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL TriangularSolveOptions_Transpose_descriptor();
template <typename T>
const ::std::string& TriangularSolveOptions_Transpose_Name(T value) {
  static_assert(::std::is_same<T, TriangularSolveOptions_Transpose>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Transpose_Name().");
  return TriangularSolveOptions_Transpose_Name(static_cast<TriangularSolveOptions_Transpose>(value));
}
template <>
inline const ::std::string& TriangularSolveOptions_Transpose_Name(TriangularSolveOptions_Transpose value) {
  return ::google::protobuf::internal::NameOfDenseEnum<TriangularSolveOptions_Transpose_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool TriangularSolveOptions_Transpose_Parse(
    ::absl::string_view name, TriangularSolveOptions_Transpose* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<TriangularSolveOptions_Transpose>(TriangularSolveOptions_Transpose_descriptor(), name,
                                           value);
}
enum OpSharding_Type : int {
  OpSharding_Type_REPLICATED = 0,
  OpSharding_Type_MAXIMAL = 1,
  OpSharding_Type_TUPLE = 2,
  OpSharding_Type_OTHER = 3,
  OpSharding_Type_MANUAL = 4,
  OpSharding_Type_UNKNOWN = 5,
  OpSharding_Type_UNREDUCED = 6,
  OpSharding_Type_OpSharding_Type_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  OpSharding_Type_OpSharding_Type_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t OpSharding_Type_internal_data_[];
inline constexpr OpSharding_Type OpSharding_Type_Type_MIN =
    static_cast<OpSharding_Type>(0);
inline constexpr OpSharding_Type OpSharding_Type_Type_MAX =
    static_cast<OpSharding_Type>(6);
inline bool OpSharding_Type_IsValid(int value) {
  return 0 <= value && value <= 6;
}
inline constexpr int OpSharding_Type_Type_ARRAYSIZE = 6 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL OpSharding_Type_descriptor();
template <typename T>
const ::std::string& OpSharding_Type_Name(T value) {
  static_assert(::std::is_same<T, OpSharding_Type>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Type_Name().");
  return OpSharding_Type_Name(static_cast<OpSharding_Type>(value));
}
template <>
inline const ::std::string& OpSharding_Type_Name(OpSharding_Type value) {
  return ::google::protobuf::internal::NameOfDenseEnum<OpSharding_Type_descriptor, 0, 6>(
      static_cast<int>(value));
}
inline bool OpSharding_Type_Parse(
    ::absl::string_view name, OpSharding_Type* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<OpSharding_Type>(OpSharding_Type_descriptor(), name,
                                           value);
}
enum OpSharding_ShardGroupType : int {
  OpSharding_ShardGroupType_AS = 0,
  OpSharding_ShardGroupType_LIKE = 1,
  OpSharding_ShardGroupType_OpSharding_ShardGroupType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  OpSharding_ShardGroupType_OpSharding_ShardGroupType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t OpSharding_ShardGroupType_internal_data_[];
inline constexpr OpSharding_ShardGroupType OpSharding_ShardGroupType_ShardGroupType_MIN =
    static_cast<OpSharding_ShardGroupType>(0);
inline constexpr OpSharding_ShardGroupType OpSharding_ShardGroupType_ShardGroupType_MAX =
    static_cast<OpSharding_ShardGroupType>(1);
inline bool OpSharding_ShardGroupType_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int OpSharding_ShardGroupType_ShardGroupType_ARRAYSIZE = 1 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL OpSharding_ShardGroupType_descriptor();
template <typename T>
const ::std::string& OpSharding_ShardGroupType_Name(T value) {
  static_assert(::std::is_same<T, OpSharding_ShardGroupType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ShardGroupType_Name().");
  return OpSharding_ShardGroupType_Name(static_cast<OpSharding_ShardGroupType>(value));
}
template <>
inline const ::std::string& OpSharding_ShardGroupType_Name(OpSharding_ShardGroupType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<OpSharding_ShardGroupType_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool OpSharding_ShardGroupType_Parse(
    ::absl::string_view name, OpSharding_ShardGroupType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<OpSharding_ShardGroupType>(OpSharding_ShardGroupType_descriptor(), name,
                                           value);
}
enum ResultAccuracy_Mode : int {
  ResultAccuracy_Mode_DEFAULT = 0,
  ResultAccuracy_Mode_HIGHEST = 1,
  ResultAccuracy_Mode_ResultAccuracy_Mode_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ResultAccuracy_Mode_ResultAccuracy_Mode_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ResultAccuracy_Mode_internal_data_[];
inline constexpr ResultAccuracy_Mode ResultAccuracy_Mode_Mode_MIN =
    static_cast<ResultAccuracy_Mode>(0);
inline constexpr ResultAccuracy_Mode ResultAccuracy_Mode_Mode_MAX =
    static_cast<ResultAccuracy_Mode>(1);
inline bool ResultAccuracy_Mode_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int ResultAccuracy_Mode_Mode_ARRAYSIZE = 1 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ResultAccuracy_Mode_descriptor();
template <typename T>
const ::std::string& ResultAccuracy_Mode_Name(T value) {
  static_assert(::std::is_same<T, ResultAccuracy_Mode>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Mode_Name().");
  return ResultAccuracy_Mode_Name(static_cast<ResultAccuracy_Mode>(value));
}
template <>
inline const ::std::string& ResultAccuracy_Mode_Name(ResultAccuracy_Mode value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ResultAccuracy_Mode_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool ResultAccuracy_Mode_Parse(
    ::absl::string_view name, ResultAccuracy_Mode* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ResultAccuracy_Mode>(ResultAccuracy_Mode_descriptor(), name,
                                           value);
}
enum PrecisionConfig_Precision : int {
  PrecisionConfig_Precision_DEFAULT = 0,
  PrecisionConfig_Precision_HIGH = 1,
  PrecisionConfig_Precision_HIGHEST = 2,
  PrecisionConfig_Precision_PrecisionConfig_Precision_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  PrecisionConfig_Precision_PrecisionConfig_Precision_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Precision_internal_data_[];
inline constexpr PrecisionConfig_Precision PrecisionConfig_Precision_Precision_MIN =
    static_cast<PrecisionConfig_Precision>(0);
inline constexpr PrecisionConfig_Precision PrecisionConfig_Precision_Precision_MAX =
    static_cast<PrecisionConfig_Precision>(2);
inline bool PrecisionConfig_Precision_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int PrecisionConfig_Precision_Precision_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PrecisionConfig_Precision_descriptor();
template <typename T>
const ::std::string& PrecisionConfig_Precision_Name(T value) {
  static_assert(::std::is_same<T, PrecisionConfig_Precision>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Precision_Name().");
  return PrecisionConfig_Precision_Name(static_cast<PrecisionConfig_Precision>(value));
}
template <>
inline const ::std::string& PrecisionConfig_Precision_Name(PrecisionConfig_Precision value) {
  return ::google::protobuf::internal::NameOfDenseEnum<PrecisionConfig_Precision_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool PrecisionConfig_Precision_Parse(
    ::absl::string_view name, PrecisionConfig_Precision* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<PrecisionConfig_Precision>(PrecisionConfig_Precision_descriptor(), name,
                                           value);
}
enum PrecisionConfig_Algorithm : int {
  PrecisionConfig_Algorithm_ALG_UNSET = 0,
  PrecisionConfig_Algorithm_ALG_DOT_ANY_F8_ANY_F8_F32 = 1,
  PrecisionConfig_Algorithm_ALG_DOT_ANY_F8_ANY_F8_F32_FAST_ACCUM = 2,
  PrecisionConfig_Algorithm_ALG_DOT_F16_F16_F16 = 3,
  PrecisionConfig_Algorithm_ALG_DOT_F16_F16_F32 = 4,
  PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_BF16 = 5,
  PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32 = 6,
  PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X3 = 7,
  PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X6 = 8,
  PrecisionConfig_Algorithm_ALG_DOT_TF32_TF32_F32 = 9,
  PrecisionConfig_Algorithm_ALG_DOT_TF32_TF32_F32_X3 = 10,
  PrecisionConfig_Algorithm_ALG_DOT_F32_F32_F32 = 11,
  PrecisionConfig_Algorithm_ALG_DOT_F64_F64_F64 = 12,
  PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X9 = 13,
  PrecisionConfig_Algorithm_PrecisionConfig_Algorithm_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  PrecisionConfig_Algorithm_PrecisionConfig_Algorithm_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Algorithm_internal_data_[];
inline constexpr PrecisionConfig_Algorithm PrecisionConfig_Algorithm_Algorithm_MIN =
    static_cast<PrecisionConfig_Algorithm>(0);
inline constexpr PrecisionConfig_Algorithm PrecisionConfig_Algorithm_Algorithm_MAX =
    static_cast<PrecisionConfig_Algorithm>(13);
inline bool PrecisionConfig_Algorithm_IsValid(int value) {
  return 0 <= value && value <= 13;
}
inline constexpr int PrecisionConfig_Algorithm_Algorithm_ARRAYSIZE = 13 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PrecisionConfig_Algorithm_descriptor();
template <typename T>
const ::std::string& PrecisionConfig_Algorithm_Name(T value) {
  static_assert(::std::is_same<T, PrecisionConfig_Algorithm>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Algorithm_Name().");
  return PrecisionConfig_Algorithm_Name(static_cast<PrecisionConfig_Algorithm>(value));
}
template <>
inline const ::std::string& PrecisionConfig_Algorithm_Name(PrecisionConfig_Algorithm value) {
  return ::google::protobuf::internal::NameOfDenseEnum<PrecisionConfig_Algorithm_descriptor, 0, 13>(
      static_cast<int>(value));
}
inline bool PrecisionConfig_Algorithm_Parse(
    ::absl::string_view name, PrecisionConfig_Algorithm* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<PrecisionConfig_Algorithm>(PrecisionConfig_Algorithm_descriptor(), name,
                                           value);
}
enum PrimitiveType : int {
  PRIMITIVE_TYPE_INVALID = 0,
  PRED = 1,
  S1 = 30,
  S2 = 26,
  S4 = 21,
  S8 = 2,
  S16 = 3,
  S32 = 4,
  S64 = 5,
  U1 = 31,
  U2 = 27,
  U4 = 22,
  U8 = 6,
  U16 = 7,
  U32 = 8,
  U64 = 9,
  F16 = 10,
  F32 = 11,
  BF16 = 16,
  F64 = 12,
  F8E5M2 = 19,
  F8E4M3 = 28,
  F8E4M3FN = 20,
  F8E4M3B11FNUZ = 23,
  F8E3M4 = 29,
  F8E5M2FNUZ = 24,
  F8E4M3FNUZ = 25,
  F4E2M1FN = 32,
  F8E8M0FNU = 33,
  C64 = 15,
  C128 = 18,
  TUPLE = 13,
  OPAQUE_TYPE = 14,
  TOKEN = 17,
  BUFFER = 34,
  PrimitiveType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  PrimitiveType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t PrimitiveType_internal_data_[];
inline constexpr PrimitiveType PrimitiveType_MIN =
    static_cast<PrimitiveType>(0);
inline constexpr PrimitiveType PrimitiveType_MAX =
    static_cast<PrimitiveType>(34);
inline bool PrimitiveType_IsValid(int value) {
  return 0 <= value && value <= 34;
}
inline constexpr int PrimitiveType_ARRAYSIZE = 34 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PrimitiveType_descriptor();
template <typename T>
const ::std::string& PrimitiveType_Name(T value) {
  static_assert(::std::is_same<T, PrimitiveType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to PrimitiveType_Name().");
  return PrimitiveType_Name(static_cast<PrimitiveType>(value));
}
template <>
inline const ::std::string& PrimitiveType_Name(PrimitiveType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<PrimitiveType_descriptor, 0, 34>(
      static_cast<int>(value));
}
inline bool PrimitiveType_Parse(
    ::absl::string_view name, PrimitiveType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<PrimitiveType>(PrimitiveType_descriptor(), name,
                                           value);
}
enum AsyncStreamKind : int {
  ASYNC_STREAM_KIND_COLLECTIVE = 0,
  ASYNC_STREAM_KIND_P2P0 = 1,
  ASYNC_STREAM_KIND_P2P1 = 2,
  ASYNC_STREAM_KIND_MEMCPYP2P = 3,
  AsyncStreamKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  AsyncStreamKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t AsyncStreamKind_internal_data_[];
inline constexpr AsyncStreamKind AsyncStreamKind_MIN =
    static_cast<AsyncStreamKind>(0);
inline constexpr AsyncStreamKind AsyncStreamKind_MAX =
    static_cast<AsyncStreamKind>(3);
inline bool AsyncStreamKind_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int AsyncStreamKind_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL AsyncStreamKind_descriptor();
template <typename T>
const ::std::string& AsyncStreamKind_Name(T value) {
  static_assert(::std::is_same<T, AsyncStreamKind>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to AsyncStreamKind_Name().");
  return AsyncStreamKind_Name(static_cast<AsyncStreamKind>(value));
}
template <>
inline const ::std::string& AsyncStreamKind_Name(AsyncStreamKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<AsyncStreamKind_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool AsyncStreamKind_Parse(
    ::absl::string_view name, AsyncStreamKind* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<AsyncStreamKind>(AsyncStreamKind_descriptor(), name,
                                           value);
}
enum CollectiveOpGroupMode : int {
  COLLECTIVE_OP_GROUP_MODE_CROSS_REPLICA = 0,
  COLLECTIVE_OP_GROUP_MODE_CROSS_PARTITION = 1,
  COLLECTIVE_OP_GROUP_MODE_CROSS_REPLICA_AND_PARTITION = 2,
  COLLECTIVE_OP_GROUP_MODE_FLATTENED_ID = 3,
  CollectiveOpGroupMode_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  CollectiveOpGroupMode_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t CollectiveOpGroupMode_internal_data_[];
inline constexpr CollectiveOpGroupMode CollectiveOpGroupMode_MIN =
    static_cast<CollectiveOpGroupMode>(0);
inline constexpr CollectiveOpGroupMode CollectiveOpGroupMode_MAX =
    static_cast<CollectiveOpGroupMode>(3);
inline bool CollectiveOpGroupMode_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int CollectiveOpGroupMode_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL CollectiveOpGroupMode_descriptor();
template <typename T>
const ::std::string& CollectiveOpGroupMode_Name(T value) {
  static_assert(::std::is_same<T, CollectiveOpGroupMode>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to CollectiveOpGroupMode_Name().");
  return CollectiveOpGroupMode_Name(static_cast<CollectiveOpGroupMode>(value));
}
template <>
inline const ::std::string& CollectiveOpGroupMode_Name(CollectiveOpGroupMode value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CollectiveOpGroupMode_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool CollectiveOpGroupMode_Parse(
    ::absl::string_view name, CollectiveOpGroupMode* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<CollectiveOpGroupMode>(CollectiveOpGroupMode_descriptor(), name,
                                           value);
}
enum DimLevelType : int {
  DIM_DENSE = 0,
  DIM_COMPRESSED = 1,
  DIM_SINGLETON = 2,
  DIM_LOOSE_COMPRESSED = 3,
  DimLevelType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  DimLevelType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t DimLevelType_internal_data_[];
inline constexpr DimLevelType DimLevelType_MIN =
    static_cast<DimLevelType>(0);
inline constexpr DimLevelType DimLevelType_MAX =
    static_cast<DimLevelType>(3);
inline bool DimLevelType_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int DimLevelType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL DimLevelType_descriptor();
template <typename T>
const ::std::string& DimLevelType_Name(T value) {
  static_assert(::std::is_same<T, DimLevelType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to DimLevelType_Name().");
  return DimLevelType_Name(static_cast<DimLevelType>(value));
}
template <>
inline const ::std::string& DimLevelType_Name(DimLevelType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<DimLevelType_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool DimLevelType_Parse(
    ::absl::string_view name, DimLevelType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<DimLevelType>(DimLevelType_descriptor(), name,
                                           value);
}
enum ProfileType : int {
  INVALID = 0,
  WINDOW = 1,
  FLAG = 2,
  INTEGER = 3,
  ProfileType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ProfileType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ProfileType_internal_data_[];
inline constexpr ProfileType ProfileType_MIN =
    static_cast<ProfileType>(0);
inline constexpr ProfileType ProfileType_MAX =
    static_cast<ProfileType>(3);
inline bool ProfileType_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int ProfileType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ProfileType_descriptor();
template <typename T>
const ::std::string& ProfileType_Name(T value) {
  static_assert(::std::is_same<T, ProfileType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ProfileType_Name().");
  return ProfileType_Name(static_cast<ProfileType>(value));
}
template <>
inline const ::std::string& ProfileType_Name(ProfileType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ProfileType_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool ProfileType_Parse(
    ::absl::string_view name, ProfileType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ProfileType>(ProfileType_descriptor(), name,
                                           value);
}
enum ProfileSource : int {
  PROFILE_SOURCE_UNKNOWN_SOURCE = 0,
  PROFILE_SOURCE_EMBEDDED = 1,
  PROFILE_SOURCE_REMOTE = 2,
  ProfileSource_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ProfileSource_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ProfileSource_internal_data_[];
inline constexpr ProfileSource ProfileSource_MIN =
    static_cast<ProfileSource>(0);
inline constexpr ProfileSource ProfileSource_MAX =
    static_cast<ProfileSource>(2);
inline bool ProfileSource_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int ProfileSource_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ProfileSource_descriptor();
template <typename T>
const ::std::string& ProfileSource_Name(T value) {
  static_assert(::std::is_same<T, ProfileSource>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ProfileSource_Name().");
  return ProfileSource_Name(static_cast<ProfileSource>(value));
}
template <>
inline const ::std::string& ProfileSource_Name(ProfileSource value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ProfileSource_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool ProfileSource_Parse(
    ::absl::string_view name, ProfileSource* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ProfileSource>(ProfileSource_descriptor(), name,
                                           value);
}
enum CompilationEvent : int {
  COMPILATION_EVENT_UNKNOWN_EVENT = 0,
  COMPILATION_EVENT_FIRST_COMPILATION = 1,
  COMPILATION_EVENT_RECOMPILATION = 2,
  CompilationEvent_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  CompilationEvent_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t CompilationEvent_internal_data_[];
inline constexpr CompilationEvent CompilationEvent_MIN =
    static_cast<CompilationEvent>(0);
inline constexpr CompilationEvent CompilationEvent_MAX =
    static_cast<CompilationEvent>(2);
inline bool CompilationEvent_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int CompilationEvent_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL CompilationEvent_descriptor();
template <typename T>
const ::std::string& CompilationEvent_Name(T value) {
  static_assert(::std::is_same<T, CompilationEvent>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to CompilationEvent_Name().");
  return CompilationEvent_Name(static_cast<CompilationEvent>(value));
}
template <>
inline const ::std::string& CompilationEvent_Name(CompilationEvent value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CompilationEvent_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool CompilationEvent_Parse(
    ::absl::string_view name, CompilationEvent* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<CompilationEvent>(CompilationEvent_descriptor(), name,
                                           value);
}
enum ProfileGenerationStrategy : int {
  PROFILE_GENERATION_STRATEGY_UNKNOWN = 0,
  PROFILE_GENERATION_STRATEGY_GA = 1,
  PROFILE_GENERATION_STRATEGY_FANTA = 2,
  PROFILE_GENERATION_STRATEGY_CFO = 3,
  PROFILE_GENERATION_STRATEGY_EXHAUSTIVE = 4,
  PROFILE_GENERATION_STRATEGY_LCM_GNN = 5,
  PROFILE_GENERATION_STRATEGY_LCM_MOE = 6,
  ProfileGenerationStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ProfileGenerationStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ProfileGenerationStrategy_internal_data_[];
inline constexpr ProfileGenerationStrategy ProfileGenerationStrategy_MIN =
    static_cast<ProfileGenerationStrategy>(0);
inline constexpr ProfileGenerationStrategy ProfileGenerationStrategy_MAX =
    static_cast<ProfileGenerationStrategy>(6);
inline bool ProfileGenerationStrategy_IsValid(int value) {
  return 0 <= value && value <= 6;
}
inline constexpr int ProfileGenerationStrategy_ARRAYSIZE = 6 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ProfileGenerationStrategy_descriptor();
template <typename T>
const ::std::string& ProfileGenerationStrategy_Name(T value) {
  static_assert(::std::is_same<T, ProfileGenerationStrategy>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ProfileGenerationStrategy_Name().");
  return ProfileGenerationStrategy_Name(static_cast<ProfileGenerationStrategy>(value));
}
template <>
inline const ::std::string& ProfileGenerationStrategy_Name(ProfileGenerationStrategy value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ProfileGenerationStrategy_descriptor, 0, 6>(
      static_cast<int>(value));
}
inline bool ProfileGenerationStrategy_Parse(
    ::absl::string_view name, ProfileGenerationStrategy* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ProfileGenerationStrategy>(ProfileGenerationStrategy_descriptor(), name,
                                           value);
}
enum PaddingType : int {
  PADDING_INVALID = 0,
  PADDING_VALID = 1,
  PADDING_SAME = 2,
  PaddingType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  PaddingType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t PaddingType_internal_data_[];
inline constexpr PaddingType PaddingType_MIN =
    static_cast<PaddingType>(0);
inline constexpr PaddingType PaddingType_MAX =
    static_cast<PaddingType>(2);
inline bool PaddingType_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int PaddingType_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PaddingType_descriptor();
template <typename T>
const ::std::string& PaddingType_Name(T value) {
  static_assert(::std::is_same<T, PaddingType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to PaddingType_Name().");
  return PaddingType_Name(static_cast<PaddingType>(value));
}
template <>
inline const ::std::string& PaddingType_Name(PaddingType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<PaddingType_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool PaddingType_Parse(
    ::absl::string_view name, PaddingType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<PaddingType>(PaddingType_descriptor(), name,
                                           value);
}
enum FftType : int {
  FFT = 0,
  IFFT = 1,
  RFFT = 2,
  IRFFT = 3,
  FftType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  FftType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t FftType_internal_data_[];
inline constexpr FftType FftType_MIN =
    static_cast<FftType>(0);
inline constexpr FftType FftType_MAX =
    static_cast<FftType>(3);
inline bool FftType_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int FftType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL FftType_descriptor();
template <typename T>
const ::std::string& FftType_Name(T value) {
  static_assert(::std::is_same<T, FftType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to FftType_Name().");
  return FftType_Name(static_cast<FftType>(value));
}
template <>
inline const ::std::string& FftType_Name(FftType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<FftType_descriptor, 0, 3>(
      static_cast<int>(value));
}
inline bool FftType_Parse(
    ::absl::string_view name, FftType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<FftType>(FftType_descriptor(), name,
                                           value);
}
enum RandomDistribution : int {
  RNG_INVALID = 0,
  RNG_UNIFORM = 1,
  RNG_NORMAL = 2,
  RandomDistribution_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  RandomDistribution_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t RandomDistribution_internal_data_[];
inline constexpr RandomDistribution RandomDistribution_MIN =
    static_cast<RandomDistribution>(0);
inline constexpr RandomDistribution RandomDistribution_MAX =
    static_cast<RandomDistribution>(2);
inline bool RandomDistribution_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int RandomDistribution_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL RandomDistribution_descriptor();
template <typename T>
const ::std::string& RandomDistribution_Name(T value) {
  static_assert(::std::is_same<T, RandomDistribution>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to RandomDistribution_Name().");
  return RandomDistribution_Name(static_cast<RandomDistribution>(value));
}
template <>
inline const ::std::string& RandomDistribution_Name(RandomDistribution value) {
  return ::google::protobuf::internal::NameOfDenseEnum<RandomDistribution_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool RandomDistribution_Parse(
    ::absl::string_view name, RandomDistribution* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<RandomDistribution>(RandomDistribution_descriptor(), name,
                                           value);
}
enum RandomAlgorithm : int {
  RNG_DEFAULT = 0,
  RNG_THREE_FRY = 1,
  RNG_PHILOX = 2,
  RandomAlgorithm_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  RandomAlgorithm_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t RandomAlgorithm_internal_data_[];
inline constexpr RandomAlgorithm RandomAlgorithm_MIN =
    static_cast<RandomAlgorithm>(0);
inline constexpr RandomAlgorithm RandomAlgorithm_MAX =
    static_cast<RandomAlgorithm>(2);
inline bool RandomAlgorithm_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int RandomAlgorithm_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL RandomAlgorithm_descriptor();
template <typename T>
const ::std::string& RandomAlgorithm_Name(T value) {
  static_assert(::std::is_same<T, RandomAlgorithm>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to RandomAlgorithm_Name().");
  return RandomAlgorithm_Name(static_cast<RandomAlgorithm>(value));
}
template <>
inline const ::std::string& RandomAlgorithm_Name(RandomAlgorithm value) {
  return ::google::protobuf::internal::NameOfDenseEnum<RandomAlgorithm_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool RandomAlgorithm_Parse(
    ::absl::string_view name, RandomAlgorithm* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<RandomAlgorithm>(RandomAlgorithm_descriptor(), name,
                                           value);
}

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


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

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

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

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

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

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

  WindowDimension* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<WindowDimension>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WindowDimension& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WindowDimension& from) { WindowDimension::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(WindowDimension* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.WindowDimension"; }

 protected:
  explicit WindowDimension(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  WindowDimension(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const WindowDimension& from);
  WindowDimension(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, WindowDimension&& from) noexcept
      : WindowDimension(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 {
    kSizeFieldNumber = 1,
    kStrideFieldNumber = 2,
    kPaddingLowFieldNumber = 3,
    kPaddingHighFieldNumber = 4,
    kWindowDilationFieldNumber = 5,
    kBaseDilationFieldNumber = 6,
    kWindowReversalFieldNumber = 7,
  };
  // int64 size = 1;
  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 stride = 2;
  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:
  // int64 padding_low = 3;
  void clear_padding_low() ;
  ::int64_t padding_low() const;
  void set_padding_low(::int64_t value);

  private:
  ::int64_t _internal_padding_low() const;
  void _internal_set_padding_low(::int64_t value);

  public:
  // int64 padding_high = 4;
  void clear_padding_high() ;
  ::int64_t padding_high() const;
  void set_padding_high(::int64_t value);

  private:
  ::int64_t _internal_padding_high() const;
  void _internal_set_padding_high(::int64_t value);

  public:
  // int64 window_dilation = 5;
  void clear_window_dilation() ;
  ::int64_t window_dilation() const;
  void set_window_dilation(::int64_t value);

  private:
  ::int64_t _internal_window_dilation() const;
  void _internal_set_window_dilation(::int64_t value);

  public:
  // int64 base_dilation = 6;
  void clear_base_dilation() ;
  ::int64_t base_dilation() const;
  void set_base_dilation(::int64_t value);

  private:
  ::int64_t _internal_base_dilation() const;
  void _internal_set_base_dilation(::int64_t value);

  public:
  // bool window_reversal = 7;
  void clear_window_reversal() ;
  bool window_reversal() const;
  void set_window_reversal(bool value);

  private:
  bool _internal_window_reversal() const;
  void _internal_set_window_reversal(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.WindowDimension)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 7,
                                   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 WindowDimension& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t size_;
    ::int64_t stride_;
    ::int64_t padding_low_;
    ::int64_t padding_high_;
    ::int64_t window_dilation_;
    ::int64_t base_dilation_;
    bool window_reversal_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<WhileLoopBackendConfig_KnownTripCount>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WhileLoopBackendConfig_KnownTripCount& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WhileLoopBackendConfig_KnownTripCount& from) { WhileLoopBackendConfig_KnownTripCount::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(WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.WhileLoopBackendConfig.KnownTripCount"; }

 protected:
  explicit WhileLoopBackendConfig_KnownTripCount(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  WhileLoopBackendConfig_KnownTripCount(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const WhileLoopBackendConfig_KnownTripCount& from);
  WhileLoopBackendConfig_KnownTripCount(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, WhileLoopBackendConfig_KnownTripCount&& from) noexcept
      : WhileLoopBackendConfig_KnownTripCount(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 {
    kNFieldNumber = 1,
  };
  // int64 n = 1;
  void clear_n() ;
  ::int64_t n() const;
  void set_n(::int64_t value);

  private:
  ::int64_t _internal_n() const;
  void _internal_set_n(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.WhileLoopBackendConfig.KnownTripCount)
 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 WhileLoopBackendConfig_KnownTripCount& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t n_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<WhileLoopBackendConfig_KnownInitStep>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WhileLoopBackendConfig_KnownInitStep& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WhileLoopBackendConfig_KnownInitStep& from) { WhileLoopBackendConfig_KnownInitStep::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(WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.WhileLoopBackendConfig.KnownInitStep"; }

 protected:
  explicit WhileLoopBackendConfig_KnownInitStep(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  WhileLoopBackendConfig_KnownInitStep(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const WhileLoopBackendConfig_KnownInitStep& from);
  WhileLoopBackendConfig_KnownInitStep(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, WhileLoopBackendConfig_KnownInitStep&& from) noexcept
      : WhileLoopBackendConfig_KnownInitStep(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 {
    kInitFieldNumber = 1,
    kStepFieldNumber = 2,
  };
  // int64 init = 1;
  void clear_init() ;
  ::int64_t init() const;
  void set_init(::int64_t value);

  private:
  ::int64_t _internal_init() const;
  void _internal_set_init(::int64_t value);

  public:
  // int64 step = 2;
  void clear_step() ;
  ::int64_t step() const;
  void set_step(::int64_t value);

  private:
  ::int64_t _internal_step() const;
  void _internal_set_step(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.WhileLoopBackendConfig.KnownInitStep)
 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 WhileLoopBackendConfig_KnownInitStep& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t init_;
    ::int64_t step_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<WhileLoopBackendConfig_KnownInductionVariable>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WhileLoopBackendConfig_KnownInductionVariable& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WhileLoopBackendConfig_KnownInductionVariable& from) { WhileLoopBackendConfig_KnownInductionVariable::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(WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.WhileLoopBackendConfig.KnownInductionVariable"; }

 protected:
  explicit WhileLoopBackendConfig_KnownInductionVariable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  WhileLoopBackendConfig_KnownInductionVariable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const WhileLoopBackendConfig_KnownInductionVariable& from);
  WhileLoopBackendConfig_KnownInductionVariable(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, WhileLoopBackendConfig_KnownInductionVariable&& from) noexcept
      : WhileLoopBackendConfig_KnownInductionVariable(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 {
    kTupleIndexFieldNumber = 1,
  };
  // int64 tuple_index = 1;
  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:
  // @@protoc_insertion_point(class_scope:xla.WhileLoopBackendConfig.KnownInductionVariable)
 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 WhileLoopBackendConfig_KnownInductionVariable& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t tuple_index_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  TriangularSolveOptions* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TriangularSolveOptions>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TriangularSolveOptions& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TriangularSolveOptions& from) { TriangularSolveOptions::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(TriangularSolveOptions* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.TriangularSolveOptions"; }

 protected:
  explicit TriangularSolveOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TriangularSolveOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TriangularSolveOptions& from);
  TriangularSolveOptions(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TriangularSolveOptions&& from) noexcept
      : TriangularSolveOptions(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 Transpose = TriangularSolveOptions_Transpose;
  static constexpr Transpose TRANSPOSE_INVALID = TriangularSolveOptions_Transpose_TRANSPOSE_INVALID;
  static constexpr Transpose NO_TRANSPOSE = TriangularSolveOptions_Transpose_NO_TRANSPOSE;
  static constexpr Transpose TRANSPOSE = TriangularSolveOptions_Transpose_TRANSPOSE;
  static constexpr Transpose ADJOINT = TriangularSolveOptions_Transpose_ADJOINT;
  static inline bool Transpose_IsValid(int value) {
    return TriangularSolveOptions_Transpose_IsValid(value);
  }
  static constexpr Transpose Transpose_MIN = TriangularSolveOptions_Transpose_Transpose_MIN;
  static constexpr Transpose Transpose_MAX = TriangularSolveOptions_Transpose_Transpose_MAX;
  static constexpr int Transpose_ARRAYSIZE = TriangularSolveOptions_Transpose_Transpose_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Transpose_descriptor() {
    return TriangularSolveOptions_Transpose_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Transpose_Name(T value) {
    return TriangularSolveOptions_Transpose_Name(value);
  }
  static inline bool Transpose_Parse(
      ::absl::string_view name, Transpose* PROTOBUF_NONNULL value) {
    return TriangularSolveOptions_Transpose_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kLeftSideFieldNumber = 1,
    kLowerFieldNumber = 2,
    kUnitDiagonalFieldNumber = 3,
    kTransposeAFieldNumber = 4,
  };
  // bool left_side = 1;
  void clear_left_side() ;
  bool left_side() const;
  void set_left_side(bool value);

  private:
  bool _internal_left_side() const;
  void _internal_set_left_side(bool value);

  public:
  // bool lower = 2;
  void clear_lower() ;
  bool lower() const;
  void set_lower(bool value);

  private:
  bool _internal_lower() const;
  void _internal_set_lower(bool value);

  public:
  // bool unit_diagonal = 3;
  void clear_unit_diagonal() ;
  bool unit_diagonal() const;
  void set_unit_diagonal(bool value);

  private:
  bool _internal_unit_diagonal() const;
  void _internal_set_unit_diagonal(bool value);

  public:
  // .xla.TriangularSolveOptions.Transpose transpose_a = 4;
  void clear_transpose_a() ;
  ::xla::TriangularSolveOptions_Transpose transpose_a() const;
  void set_transpose_a(::xla::TriangularSolveOptions_Transpose value);

  private:
  ::xla::TriangularSolveOptions_Transpose _internal_transpose_a() const;
  void _internal_set_transpose_a(::xla::TriangularSolveOptions_Transpose value);

  public:
  // @@protoc_insertion_point(class_scope:xla.TriangularSolveOptions)
 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 TriangularSolveOptions& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool left_side_;
    bool lower_;
    bool unit_diagonal_;
    int transpose_a_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  TileProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TileProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TileProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TileProto& from) { TileProto::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(TileProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.TileProto"; }

 protected:
  explicit TileProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TileProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TileProto& from);
  TileProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TileProto&& from) noexcept
      : TileProto(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 {
    kDimensionsFieldNumber = 1,
  };
  // repeated int64 dimensions = 1;
  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:
  // @@protoc_insertion_point(class_scope:xla.TileProto)
 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 TileProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> dimensions_;
    ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  Statistic* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Statistic>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Statistic& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Statistic& from) { Statistic::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(Statistic* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.Statistic"; }

 protected:
  explicit Statistic(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Statistic(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Statistic& from);
  Statistic(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Statistic&& from) noexcept
      : Statistic(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 {
    kStatNameFieldNumber = 1,
    kStatValFieldNumber = 2,
  };
  // string stat_name = 1;
  void clear_stat_name() ;
  const ::std::string& stat_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_stat_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_stat_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_stat_name();
  void set_allocated_stat_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_stat_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_stat_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_stat_name();

  public:
  // double stat_val = 2;
  void clear_stat_val() ;
  double stat_val() const;
  void set_stat_val(double value);

  private:
  double _internal_stat_val() const;
  void _internal_set_stat_val(double value);

  public:
  // @@protoc_insertion_point(class_scope:xla.Statistic)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 31,
                                   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 Statistic& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr stat_name_;
    double stat_val_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  SplitConfigProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SplitConfigProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SplitConfigProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SplitConfigProto& from) { SplitConfigProto::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(SplitConfigProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.SplitConfigProto"; }

 protected:
  explicit SplitConfigProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SplitConfigProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SplitConfigProto& from);
  SplitConfigProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SplitConfigProto&& from) noexcept
      : SplitConfigProto(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 {
    kSplitIndicesFieldNumber = 2,
    kDimensionFieldNumber = 1,
  };
  // repeated int64 split_indices = 2;
  int split_indices_size() const;
  private:
  int _internal_split_indices_size() const;

  public:
  void clear_split_indices() ;
  ::int64_t split_indices(int index) const;
  void set_split_indices(int index, ::int64_t value);
  void add_split_indices(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& split_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_split_indices();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_split_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_split_indices();

  public:
  // int64 dimension = 1;
  void clear_dimension() ;
  ::int64_t dimension() const;
  void set_dimension(::int64_t value);

  private:
  ::int64_t _internal_dimension() const;
  void _internal_set_dimension(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.SplitConfigProto)
 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 SplitConfigProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> split_indices_;
    ::google::protobuf::internal::CachedSize _split_indices_cached_byte_size_;
    ::int64_t dimension_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  SourceTarget* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SourceTarget>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SourceTarget& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SourceTarget& from) { SourceTarget::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(SourceTarget* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.SourceTarget"; }

 protected:
  explicit SourceTarget(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SourceTarget(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SourceTarget& from);
  SourceTarget(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SourceTarget&& from) noexcept
      : SourceTarget(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 {
    kSourceFieldNumber = 1,
    kTargetFieldNumber = 2,
  };
  // int64 source = 1;
  void clear_source() ;
  ::int64_t source() const;
  void set_source(::int64_t value);

  private:
  ::int64_t _internal_source() const;
  void _internal_set_source(::int64_t value);

  public:
  // int64 target = 2;
  void clear_target() ;
  ::int64_t target() const;
  void set_target(::int64_t value);

  private:
  ::int64_t _internal_target() const;
  void _internal_set_target(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.SourceTarget)
 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 SourceTarget& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t source_;
    ::int64_t target_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  SortOptions* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SortOptions>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SortOptions& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SortOptions& from) { SortOptions::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(SortOptions* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.SortOptions"; }

 protected:
  explicit SortOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SortOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SortOptions& from);
  SortOptions(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SortOptions&& from) noexcept
      : SortOptions(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 {
    kDescendingFieldNumber = 1,
  };
  // bool descending = 1;
  void clear_descending() ;
  bool descending() const;
  void set_descending(bool value);

  private:
  bool _internal_descending() const;
  void _internal_set_descending(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.SortOptions)
 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 SortOptions& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool descending_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ScatterDimensionNumbers* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ScatterDimensionNumbers>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ScatterDimensionNumbers& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ScatterDimensionNumbers& from) { ScatterDimensionNumbers::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(ScatterDimensionNumbers* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ScatterDimensionNumbers"; }

 protected:
  explicit ScatterDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ScatterDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ScatterDimensionNumbers& from);
  ScatterDimensionNumbers(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ScatterDimensionNumbers&& from) noexcept
      : ScatterDimensionNumbers(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 {
    kUpdateWindowDimsFieldNumber = 1,
    kInsertedWindowDimsFieldNumber = 2,
    kScatterDimsToOperandDimsFieldNumber = 3,
    kInputBatchingDimsFieldNumber = 5,
    kScatterIndicesBatchingDimsFieldNumber = 6,
    kIndexVectorDimFieldNumber = 4,
  };
  // repeated int64 update_window_dims = 1;
  int update_window_dims_size() const;
  private:
  int _internal_update_window_dims_size() const;

  public:
  void clear_update_window_dims() ;
  ::int64_t update_window_dims(int index) const;
  void set_update_window_dims(int index, ::int64_t value);
  void add_update_window_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& update_window_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_update_window_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_update_window_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_update_window_dims();

  public:
  // repeated int64 inserted_window_dims = 2;
  int inserted_window_dims_size() const;
  private:
  int _internal_inserted_window_dims_size() const;

  public:
  void clear_inserted_window_dims() ;
  ::int64_t inserted_window_dims(int index) const;
  void set_inserted_window_dims(int index, ::int64_t value);
  void add_inserted_window_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& inserted_window_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_inserted_window_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_inserted_window_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_inserted_window_dims();

  public:
  // repeated int64 scatter_dims_to_operand_dims = 3;
  int scatter_dims_to_operand_dims_size() const;
  private:
  int _internal_scatter_dims_to_operand_dims_size() const;

  public:
  void clear_scatter_dims_to_operand_dims() ;
  ::int64_t scatter_dims_to_operand_dims(int index) const;
  void set_scatter_dims_to_operand_dims(int index, ::int64_t value);
  void add_scatter_dims_to_operand_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& scatter_dims_to_operand_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_scatter_dims_to_operand_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_scatter_dims_to_operand_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_scatter_dims_to_operand_dims();

  public:
  // repeated int64 input_batching_dims = 5;
  int input_batching_dims_size() const;
  private:
  int _internal_input_batching_dims_size() const;

  public:
  void clear_input_batching_dims() ;
  ::int64_t input_batching_dims(int index) const;
  void set_input_batching_dims(int index, ::int64_t value);
  void add_input_batching_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& input_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_input_batching_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_input_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_input_batching_dims();

  public:
  // repeated int64 scatter_indices_batching_dims = 6;
  int scatter_indices_batching_dims_size() const;
  private:
  int _internal_scatter_indices_batching_dims_size() const;

  public:
  void clear_scatter_indices_batching_dims() ;
  ::int64_t scatter_indices_batching_dims(int index) const;
  void set_scatter_indices_batching_dims(int index, ::int64_t value);
  void add_scatter_indices_batching_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& scatter_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_scatter_indices_batching_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_scatter_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_scatter_indices_batching_dims();

  public:
  // int64 index_vector_dim = 4;
  void clear_index_vector_dim() ;
  ::int64_t index_vector_dim() const;
  void set_index_vector_dim(::int64_t value);

  private:
  ::int64_t _internal_index_vector_dim() const;
  void _internal_set_index_vector_dim(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ScatterDimensionNumbers)
 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 ScatterDimensionNumbers& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> update_window_dims_;
    ::google::protobuf::internal::CachedSize _update_window_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> inserted_window_dims_;
    ::google::protobuf::internal::CachedSize _inserted_window_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> scatter_dims_to_operand_dims_;
    ::google::protobuf::internal::CachedSize _scatter_dims_to_operand_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> input_batching_dims_;
    ::google::protobuf::internal::CachedSize _input_batching_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> scatter_indices_batching_dims_;
    ::google::protobuf::internal::CachedSize _scatter_indices_batching_dims_cached_byte_size_;
    ::int64_t index_vector_dim_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ResultAccuracy_Tolerance* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ResultAccuracy_Tolerance>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ResultAccuracy_Tolerance& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ResultAccuracy_Tolerance& from) { ResultAccuracy_Tolerance::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(ResultAccuracy_Tolerance* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ResultAccuracy.Tolerance"; }

 protected:
  explicit ResultAccuracy_Tolerance(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ResultAccuracy_Tolerance(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ResultAccuracy_Tolerance& from);
  ResultAccuracy_Tolerance(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ResultAccuracy_Tolerance&& from) noexcept
      : ResultAccuracy_Tolerance(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 {
    kAtolFieldNumber = 1,
    kRtolFieldNumber = 2,
    kUlpsFieldNumber = 3,
  };
  // double atol = 1;
  void clear_atol() ;
  double atol() const;
  void set_atol(double value);

  private:
  double _internal_atol() const;
  void _internal_set_atol(double value);

  public:
  // double rtol = 2;
  void clear_rtol() ;
  double rtol() const;
  void set_rtol(double value);

  private:
  double _internal_rtol() const;
  void _internal_set_rtol(double value);

  public:
  // int64 ulps = 3;
  void clear_ulps() ;
  ::int64_t ulps() const;
  void set_ulps(::int64_t value);

  private:
  ::int64_t _internal_ulps() const;
  void _internal_set_ulps(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ResultAccuracy.Tolerance)
 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 ResultAccuracy_Tolerance& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    double atol_;
    double rtol_;
    ::int64_t ulps_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ReplicaGroup* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ReplicaGroup>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ReplicaGroup& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ReplicaGroup& from) { ReplicaGroup::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(ReplicaGroup* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ReplicaGroup"; }

 protected:
  explicit ReplicaGroup(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ReplicaGroup(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ReplicaGroup& from);
  ReplicaGroup(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ReplicaGroup&& from) noexcept
      : ReplicaGroup(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 {
    kReplicaIdsFieldNumber = 1,
  };
  // repeated int64 replica_ids = 1;
  int replica_ids_size() const;
  private:
  int _internal_replica_ids_size() const;

  public:
  void clear_replica_ids() ;
  ::int64_t replica_ids(int index) const;
  void set_replica_ids(int index, ::int64_t value);
  void add_replica_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& replica_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_replica_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_replica_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_replica_ids();

  public:
  // @@protoc_insertion_point(class_scope:xla.ReplicaGroup)
 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 ReplicaGroup& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> replica_ids_;
    ::google::protobuf::internal::CachedSize _replica_ids_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  PrecisionConfig* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PrecisionConfig>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PrecisionConfig& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PrecisionConfig& from) { PrecisionConfig::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(PrecisionConfig* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.PrecisionConfig"; }

 protected:
  explicit PrecisionConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PrecisionConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PrecisionConfig& from);
  PrecisionConfig(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PrecisionConfig&& from) noexcept
      : PrecisionConfig(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 Precision = PrecisionConfig_Precision;
  static constexpr Precision DEFAULT = PrecisionConfig_Precision_DEFAULT;
  static constexpr Precision HIGH = PrecisionConfig_Precision_HIGH;
  static constexpr Precision HIGHEST = PrecisionConfig_Precision_HIGHEST;
  static inline bool Precision_IsValid(int value) {
    return PrecisionConfig_Precision_IsValid(value);
  }
  static constexpr Precision Precision_MIN = PrecisionConfig_Precision_Precision_MIN;
  static constexpr Precision Precision_MAX = PrecisionConfig_Precision_Precision_MAX;
  static constexpr int Precision_ARRAYSIZE = PrecisionConfig_Precision_Precision_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Precision_descriptor() {
    return PrecisionConfig_Precision_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Precision_Name(T value) {
    return PrecisionConfig_Precision_Name(value);
  }
  static inline bool Precision_Parse(
      ::absl::string_view name, Precision* PROTOBUF_NONNULL value) {
    return PrecisionConfig_Precision_Parse(name, value);
  }
  using Algorithm = PrecisionConfig_Algorithm;
  static constexpr Algorithm ALG_UNSET = PrecisionConfig_Algorithm_ALG_UNSET;
  static constexpr Algorithm ALG_DOT_ANY_F8_ANY_F8_F32 = PrecisionConfig_Algorithm_ALG_DOT_ANY_F8_ANY_F8_F32;
  static constexpr Algorithm ALG_DOT_ANY_F8_ANY_F8_F32_FAST_ACCUM = PrecisionConfig_Algorithm_ALG_DOT_ANY_F8_ANY_F8_F32_FAST_ACCUM;
  static constexpr Algorithm ALG_DOT_F16_F16_F16 = PrecisionConfig_Algorithm_ALG_DOT_F16_F16_F16;
  static constexpr Algorithm ALG_DOT_F16_F16_F32 = PrecisionConfig_Algorithm_ALG_DOT_F16_F16_F32;
  static constexpr Algorithm ALG_DOT_BF16_BF16_BF16 = PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_BF16;
  static constexpr Algorithm ALG_DOT_BF16_BF16_F32 = PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32;
  static constexpr Algorithm ALG_DOT_BF16_BF16_F32_X3 = PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X3;
  static constexpr Algorithm ALG_DOT_BF16_BF16_F32_X6 = PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X6;
  static constexpr Algorithm ALG_DOT_TF32_TF32_F32 = PrecisionConfig_Algorithm_ALG_DOT_TF32_TF32_F32;
  static constexpr Algorithm ALG_DOT_TF32_TF32_F32_X3 = PrecisionConfig_Algorithm_ALG_DOT_TF32_TF32_F32_X3;
  static constexpr Algorithm ALG_DOT_F32_F32_F32 = PrecisionConfig_Algorithm_ALG_DOT_F32_F32_F32;
  static constexpr Algorithm ALG_DOT_F64_F64_F64 = PrecisionConfig_Algorithm_ALG_DOT_F64_F64_F64;
  static constexpr Algorithm ALG_DOT_BF16_BF16_F32_X9 = PrecisionConfig_Algorithm_ALG_DOT_BF16_BF16_F32_X9;
  static inline bool Algorithm_IsValid(int value) {
    return PrecisionConfig_Algorithm_IsValid(value);
  }
  static constexpr Algorithm Algorithm_MIN = PrecisionConfig_Algorithm_Algorithm_MIN;
  static constexpr Algorithm Algorithm_MAX = PrecisionConfig_Algorithm_Algorithm_MAX;
  static constexpr int Algorithm_ARRAYSIZE = PrecisionConfig_Algorithm_Algorithm_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Algorithm_descriptor() {
    return PrecisionConfig_Algorithm_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Algorithm_Name(T value) {
    return PrecisionConfig_Algorithm_Name(value);
  }
  static inline bool Algorithm_Parse(
      ::absl::string_view name, Algorithm* PROTOBUF_NONNULL value) {
    return PrecisionConfig_Algorithm_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kOperandPrecisionFieldNumber = 1,
    kAlgorithmFieldNumber = 2,
  };
  // repeated .xla.PrecisionConfig.Precision operand_precision = 1;
  int operand_precision_size() const;
  private:
  int _internal_operand_precision_size() const;

  public:
  void clear_operand_precision() ;
  public:
  ::xla::PrecisionConfig_Precision operand_precision(int index) const;
  void set_operand_precision(int index, ::xla::PrecisionConfig_Precision value);
  void add_operand_precision(::xla::PrecisionConfig_Precision value);
  const ::google::protobuf::RepeatedField<int>& operand_precision() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_operand_precision();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_operand_precision() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_operand_precision();

  public:
  // .xla.PrecisionConfig.Algorithm algorithm = 2;
  void clear_algorithm() ;
  ::xla::PrecisionConfig_Algorithm algorithm() const;
  void set_algorithm(::xla::PrecisionConfig_Algorithm value);

  private:
  ::xla::PrecisionConfig_Algorithm _internal_algorithm() const;
  void _internal_set_algorithm(::xla::PrecisionConfig_Algorithm value);

  public:
  // @@protoc_insertion_point(class_scope:xla.PrecisionConfig)
 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 PrecisionConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<int> operand_precision_;
    ::google::protobuf::internal::CachedSize _operand_precision_cached_byte_size_;
    int algorithm_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ParameterReplication* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ParameterReplication>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ParameterReplication& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ParameterReplication& from) { ParameterReplication::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(ParameterReplication* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ParameterReplication"; }

 protected:
  explicit ParameterReplication(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ParameterReplication(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ParameterReplication& from);
  ParameterReplication(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ParameterReplication&& from) noexcept
      : ParameterReplication(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 {
    kReplicatedAtLeafBuffersFieldNumber = 1,
  };
  // repeated bool replicated_at_leaf_buffers = 1;
  int replicated_at_leaf_buffers_size() const;
  private:
  int _internal_replicated_at_leaf_buffers_size() const;

  public:
  void clear_replicated_at_leaf_buffers() ;
  bool replicated_at_leaf_buffers(int index) const;
  void set_replicated_at_leaf_buffers(int index, bool value);
  void add_replicated_at_leaf_buffers(bool value);
  const ::google::protobuf::RepeatedField<bool>& replicated_at_leaf_buffers() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_replicated_at_leaf_buffers();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_replicated_at_leaf_buffers() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_replicated_at_leaf_buffers();

  public:
  // @@protoc_insertion_point(class_scope:xla.ParameterReplication)
 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 ParameterReplication& from_msg);
    ::google::protobuf::RepeatedField<bool> replicated_at_leaf_buffers_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PaddingConfig_PaddingConfigDimension>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PaddingConfig_PaddingConfigDimension& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PaddingConfig_PaddingConfigDimension& from) { PaddingConfig_PaddingConfigDimension::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(PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.PaddingConfig.PaddingConfigDimension"; }

 protected:
  explicit PaddingConfig_PaddingConfigDimension(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PaddingConfig_PaddingConfigDimension(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PaddingConfig_PaddingConfigDimension& from);
  PaddingConfig_PaddingConfigDimension(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PaddingConfig_PaddingConfigDimension&& from) noexcept
      : PaddingConfig_PaddingConfigDimension(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 {
    kEdgePaddingLowFieldNumber = 1,
    kEdgePaddingHighFieldNumber = 2,
    kInteriorPaddingFieldNumber = 3,
  };
  // int64 edge_padding_low = 1;
  void clear_edge_padding_low() ;
  ::int64_t edge_padding_low() const;
  void set_edge_padding_low(::int64_t value);

  private:
  ::int64_t _internal_edge_padding_low() const;
  void _internal_set_edge_padding_low(::int64_t value);

  public:
  // int64 edge_padding_high = 2;
  void clear_edge_padding_high() ;
  ::int64_t edge_padding_high() const;
  void set_edge_padding_high(::int64_t value);

  private:
  ::int64_t _internal_edge_padding_high() const;
  void _internal_set_edge_padding_high(::int64_t value);

  public:
  // int64 interior_padding = 3;
  void clear_interior_padding() ;
  ::int64_t interior_padding() const;
  void set_interior_padding(::int64_t value);

  private:
  ::int64_t _internal_interior_padding() const;
  void _internal_set_interior_padding(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.PaddingConfig.PaddingConfigDimension)
 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 PaddingConfig_PaddingConfigDimension& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t edge_padding_low_;
    ::int64_t edge_padding_high_;
    ::int64_t interior_padding_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OutputOperandAliasing* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OutputOperandAliasing>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OutputOperandAliasing& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OutputOperandAliasing& from) { OutputOperandAliasing::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(OutputOperandAliasing* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OutputOperandAliasing"; }

 protected:
  explicit OutputOperandAliasing(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OutputOperandAliasing(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OutputOperandAliasing& from);
  OutputOperandAliasing(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OutputOperandAliasing&& from) noexcept
      : OutputOperandAliasing(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,
    kOperandShapeIndexFieldNumber = 3,
    kOperandIndexFieldNumber = 2,
  };
  // 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 operand_shape_index = 3;
  int operand_shape_index_size() const;
  private:
  int _internal_operand_shape_index_size() const;

  public:
  void clear_operand_shape_index() ;
  ::int64_t operand_shape_index(int index) const;
  void set_operand_shape_index(int index, ::int64_t value);
  void add_operand_shape_index(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& operand_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_operand_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_operand_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_operand_shape_index();

  public:
  // int64 operand_index = 2;
  void clear_operand_index() ;
  ::int64_t operand_index() const;
  void set_operand_index(::int64_t value);

  private:
  ::int64_t _internal_operand_index() const;
  void _internal_set_operand_index(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.OutputOperandAliasing)
 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 OutputOperandAliasing& 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> operand_shape_index_;
    ::google::protobuf::internal::CachedSize _operand_shape_index_cached_byte_size_;
    ::int64_t operand_index_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OriginalArrayProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OriginalArrayProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalArrayProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalArrayProto& from) { OriginalArrayProto::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(OriginalArrayProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OriginalArrayProto"; }

 protected:
  explicit OriginalArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OriginalArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OriginalArrayProto& from);
  OriginalArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OriginalArrayProto&& from) noexcept
      : OriginalArrayProto(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 = 2,
    kInstructionNameFieldNumber = 1,
  };
  // repeated int64 shape_index = 2;
  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 = 1;
  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:
  // @@protoc_insertion_point(class_scope:xla.OriginalArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 47,
                                   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 OriginalArrayProto& 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_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OpMetadata_ProfileInfo* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OpMetadata_ProfileInfo>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OpMetadata_ProfileInfo& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OpMetadata_ProfileInfo& from) { OpMetadata_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(OpMetadata_ProfileInfo* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OpMetadata.ProfileInfo"; }

 protected:
  explicit OpMetadata_ProfileInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OpMetadata_ProfileInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OpMetadata_ProfileInfo& from);
  OpMetadata_ProfileInfo(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OpMetadata_ProfileInfo&& from) noexcept
      : OpMetadata_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 {
    kProfileTypeFieldNumber = 1,
    kRelativeSpeedupFieldNumber = 2,
    kProfileSourceFieldNumber = 3,
    kCompilationEventFieldNumber = 4,
    kProfileGenerationStrategyFieldNumber = 5,
  };
  // repeated .xla.ProfileType profile_type = 1;
  int profile_type_size() const;
  private:
  int _internal_profile_type_size() const;

  public:
  void clear_profile_type() ;
  public:
  ::xla::ProfileType profile_type(int index) const;
  void set_profile_type(int index, ::xla::ProfileType value);
  void add_profile_type(::xla::ProfileType value);
  const ::google::protobuf::RepeatedField<int>& profile_type() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_profile_type();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_profile_type() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_profile_type();

  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.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 = 5;
  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:
  // @@protoc_insertion_point(class_scope:xla.OpMetadata.ProfileInfo)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   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 OpMetadata_ProfileInfo& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<int> profile_type_;
    ::google::protobuf::internal::CachedSize _profile_type_cached_byte_size_;
    double relative_speedup_;
    int profile_source_;
    int compilation_event_;
    int profile_generation_strategy_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  MeshProto_MeshAxis* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MeshProto_MeshAxis>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MeshProto_MeshAxis& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MeshProto_MeshAxis& from) { MeshProto_MeshAxis::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(MeshProto_MeshAxis* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.MeshProto.MeshAxis"; }

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

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

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

  public:
  // 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:
  // @@protoc_insertion_point(class_scope:xla.MeshProto.MeshAxis)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 35,
                                   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 MeshProto_MeshAxis& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::int64_t size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  IotaReplicaGroupListProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<IotaReplicaGroupListProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IotaReplicaGroupListProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IotaReplicaGroupListProto& from) { IotaReplicaGroupListProto::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(IotaReplicaGroupListProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.IotaReplicaGroupListProto"; }

 protected:
  explicit IotaReplicaGroupListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IotaReplicaGroupListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IotaReplicaGroupListProto& from);
  IotaReplicaGroupListProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IotaReplicaGroupListProto&& from) noexcept
      : IotaReplicaGroupListProto(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 {
    kIotaReshapeDimsFieldNumber = 3,
    kIotaTransposePermFieldNumber = 4,
    kNumReplicaGroupsFieldNumber = 1,
    kNumDevicesPerGroupFieldNumber = 2,
  };
  // repeated int64 iota_reshape_dims = 3;
  int iota_reshape_dims_size() const;
  private:
  int _internal_iota_reshape_dims_size() const;

  public:
  void clear_iota_reshape_dims() ;
  ::int64_t iota_reshape_dims(int index) const;
  void set_iota_reshape_dims(int index, ::int64_t value);
  void add_iota_reshape_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& iota_reshape_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_iota_reshape_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_iota_reshape_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_iota_reshape_dims();

  public:
  // repeated int32 iota_transpose_perm = 4;
  int iota_transpose_perm_size() const;
  private:
  int _internal_iota_transpose_perm_size() const;

  public:
  void clear_iota_transpose_perm() ;
  ::int32_t iota_transpose_perm(int index) const;
  void set_iota_transpose_perm(int index, ::int32_t value);
  void add_iota_transpose_perm(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_iota_transpose_perm();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_iota_transpose_perm();

  public:
  // int64 num_replica_groups = 1;
  void clear_num_replica_groups() ;
  ::int64_t num_replica_groups() const;
  void set_num_replica_groups(::int64_t value);

  private:
  ::int64_t _internal_num_replica_groups() const;
  void _internal_set_num_replica_groups(::int64_t value);

  public:
  // int64 num_devices_per_group = 2;
  void clear_num_devices_per_group() ;
  ::int64_t num_devices_per_group() const;
  void set_num_devices_per_group(::int64_t value);

  private:
  ::int64_t _internal_num_devices_per_group() const;
  void _internal_set_num_devices_per_group(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.IotaReplicaGroupListProto)
 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 IotaReplicaGroupListProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> iota_reshape_dims_;
    ::google::protobuf::internal::CachedSize _iota_reshape_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> iota_transpose_perm_;
    ::google::protobuf::internal::CachedSize _iota_transpose_perm_cached_byte_size_;
    ::int64_t num_replica_groups_;
    ::int64_t num_devices_per_group_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  GlobalDataHandle* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GlobalDataHandle>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GlobalDataHandle& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GlobalDataHandle& from) { GlobalDataHandle::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(GlobalDataHandle* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.GlobalDataHandle"; }

 protected:
  explicit GlobalDataHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GlobalDataHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GlobalDataHandle& from);
  GlobalDataHandle(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GlobalDataHandle&& from) noexcept
      : GlobalDataHandle(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 {
    kHandleFieldNumber = 1,
  };
  // int64 handle = 1;
  void clear_handle() ;
  ::int64_t handle() const;
  void set_handle(::int64_t value);

  private:
  ::int64_t _internal_handle() const;
  void _internal_set_handle(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.GlobalDataHandle)
 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 GlobalDataHandle& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t handle_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

class GemmPerfTableEntry_FlopsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<std::string, ::int64_t,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_INT64> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<std::string, ::int64_t,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_INT64>;
  GemmPerfTableEntry_FlopsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GemmPerfTableEntry_FlopsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit GemmPerfTableEntry_FlopsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_GemmPerfTableEntry_FlopsEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 45,
                                   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 GemmPerfTableEntry_FlopsEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

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

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

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

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

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

  GatherDimensionNumbers* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GatherDimensionNumbers>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GatherDimensionNumbers& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GatherDimensionNumbers& from) { GatherDimensionNumbers::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(GatherDimensionNumbers* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.GatherDimensionNumbers"; }

 protected:
  explicit GatherDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GatherDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GatherDimensionNumbers& from);
  GatherDimensionNumbers(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GatherDimensionNumbers&& from) noexcept
      : GatherDimensionNumbers(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 {
    kOffsetDimsFieldNumber = 1,
    kCollapsedSliceDimsFieldNumber = 2,
    kStartIndexMapFieldNumber = 3,
    kOperandBatchingDimsFieldNumber = 5,
    kStartIndicesBatchingDimsFieldNumber = 6,
    kIndexVectorDimFieldNumber = 4,
  };
  // repeated int64 offset_dims = 1;
  int offset_dims_size() const;
  private:
  int _internal_offset_dims_size() const;

  public:
  void clear_offset_dims() ;
  ::int64_t offset_dims(int index) const;
  void set_offset_dims(int index, ::int64_t value);
  void add_offset_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& offset_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_offset_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_offset_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_offset_dims();

  public:
  // repeated int64 collapsed_slice_dims = 2;
  int collapsed_slice_dims_size() const;
  private:
  int _internal_collapsed_slice_dims_size() const;

  public:
  void clear_collapsed_slice_dims() ;
  ::int64_t collapsed_slice_dims(int index) const;
  void set_collapsed_slice_dims(int index, ::int64_t value);
  void add_collapsed_slice_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& collapsed_slice_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_collapsed_slice_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_collapsed_slice_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_collapsed_slice_dims();

  public:
  // repeated int64 start_index_map = 3;
  int start_index_map_size() const;
  private:
  int _internal_start_index_map_size() const;

  public:
  void clear_start_index_map() ;
  ::int64_t start_index_map(int index) const;
  void set_start_index_map(int index, ::int64_t value);
  void add_start_index_map(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& start_index_map() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_start_index_map();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_start_index_map() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_start_index_map();

  public:
  // repeated int64 operand_batching_dims = 5;
  int operand_batching_dims_size() const;
  private:
  int _internal_operand_batching_dims_size() const;

  public:
  void clear_operand_batching_dims() ;
  ::int64_t operand_batching_dims(int index) const;
  void set_operand_batching_dims(int index, ::int64_t value);
  void add_operand_batching_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& operand_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_operand_batching_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_operand_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_operand_batching_dims();

  public:
  // repeated int64 start_indices_batching_dims = 6;
  int start_indices_batching_dims_size() const;
  private:
  int _internal_start_indices_batching_dims_size() const;

  public:
  void clear_start_indices_batching_dims() ;
  ::int64_t start_indices_batching_dims(int index) const;
  void set_start_indices_batching_dims(int index, ::int64_t value);
  void add_start_indices_batching_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& start_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_start_indices_batching_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_start_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_start_indices_batching_dims();

  public:
  // int64 index_vector_dim = 4;
  void clear_index_vector_dim() ;
  ::int64_t index_vector_dim() const;
  void set_index_vector_dim(::int64_t value);

  private:
  ::int64_t _internal_index_vector_dim() const;
  void _internal_set_index_vector_dim(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.GatherDimensionNumbers)
 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 GatherDimensionNumbers& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> offset_dims_;
    ::google::protobuf::internal::CachedSize _offset_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> collapsed_slice_dims_;
    ::google::protobuf::internal::CachedSize _collapsed_slice_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> start_index_map_;
    ::google::protobuf::internal::CachedSize _start_index_map_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> operand_batching_dims_;
    ::google::protobuf::internal::CachedSize _operand_batching_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> start_indices_batching_dims_;
    ::google::protobuf::internal::CachedSize _start_indices_batching_dims_cached_byte_size_;
    ::int64_t index_vector_dim_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

class FrontendAttributes_MapEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<std::string, std::string,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>;
  FrontendAttributes_MapEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FrontendAttributes_MapEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit FrontendAttributes_MapEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_FrontendAttributes_MapEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 48,
                                   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 FrontendAttributes_MapEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

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

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

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

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

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

  ExecutionProfile* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ExecutionProfile>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ExecutionProfile& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ExecutionProfile& from) { ExecutionProfile::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(ExecutionProfile* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ExecutionProfile"; }

 protected:
  explicit ExecutionProfile(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ExecutionProfile(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ExecutionProfile& from);
  ExecutionProfile(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ExecutionProfile&& from) noexcept
      : ExecutionProfile(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 {
    kCompileTimeMsFieldNumber = 2,
    kComputeCycleCountFieldNumber = 3,
    kComputeTimeNsFieldNumber = 4,
    kComputeAndTransferTimeNsFieldNumber = 5,
    kExecutableSizeInBytesFieldNumber = 6,
    kCompilationCacheHitFieldNumber = 1,
    kProfileCacheHitFieldNumber = 7,
    kWarmupRunExecutedFieldNumber = 8,
  };
  // int64 compile_time_ms = 2;
  void clear_compile_time_ms() ;
  ::int64_t compile_time_ms() const;
  void set_compile_time_ms(::int64_t value);

  private:
  ::int64_t _internal_compile_time_ms() const;
  void _internal_set_compile_time_ms(::int64_t value);

  public:
  // int64 compute_cycle_count = 3;
  void clear_compute_cycle_count() ;
  ::int64_t compute_cycle_count() const;
  void set_compute_cycle_count(::int64_t value);

  private:
  ::int64_t _internal_compute_cycle_count() const;
  void _internal_set_compute_cycle_count(::int64_t value);

  public:
  // int64 compute_time_ns = 4;
  void clear_compute_time_ns() ;
  ::int64_t compute_time_ns() const;
  void set_compute_time_ns(::int64_t value);

  private:
  ::int64_t _internal_compute_time_ns() const;
  void _internal_set_compute_time_ns(::int64_t value);

  public:
  // int64 compute_and_transfer_time_ns = 5;
  void clear_compute_and_transfer_time_ns() ;
  ::int64_t compute_and_transfer_time_ns() const;
  void set_compute_and_transfer_time_ns(::int64_t value);

  private:
  ::int64_t _internal_compute_and_transfer_time_ns() const;
  void _internal_set_compute_and_transfer_time_ns(::int64_t value);

  public:
  // int64 executable_size_in_bytes = 6;
  void clear_executable_size_in_bytes() ;
  ::int64_t executable_size_in_bytes() const;
  void set_executable_size_in_bytes(::int64_t value);

  private:
  ::int64_t _internal_executable_size_in_bytes() const;
  void _internal_set_executable_size_in_bytes(::int64_t value);

  public:
  // bool compilation_cache_hit = 1;
  void clear_compilation_cache_hit() ;
  bool compilation_cache_hit() const;
  void set_compilation_cache_hit(bool value);

  private:
  bool _internal_compilation_cache_hit() const;
  void _internal_set_compilation_cache_hit(bool value);

  public:
  // bool profile_cache_hit = 7;
  void clear_profile_cache_hit() ;
  bool profile_cache_hit() const;
  void set_profile_cache_hit(bool value);

  private:
  bool _internal_profile_cache_hit() const;
  void _internal_set_profile_cache_hit(bool value);

  public:
  // bool warmup_run_executed = 8;
  void clear_warmup_run_executed() ;
  bool warmup_run_executed() const;
  void set_warmup_run_executed(bool value);

  private:
  bool _internal_warmup_run_executed() const;
  void _internal_set_warmup_run_executed(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ExecutionProfile& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t compile_time_ms_;
    ::int64_t compute_cycle_count_;
    ::int64_t compute_time_ns_;
    ::int64_t compute_and_transfer_time_ns_;
    ::int64_t executable_size_in_bytes_;
    bool compilation_cache_hit_;
    bool profile_cache_hit_;
    bool warmup_run_executed_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ExecutionHandle* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ExecutionHandle>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ExecutionHandle& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ExecutionHandle& from) { ExecutionHandle::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(ExecutionHandle* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ExecutionHandle"; }

 protected:
  explicit ExecutionHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ExecutionHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ExecutionHandle& from);
  ExecutionHandle(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ExecutionHandle&& from) noexcept
      : ExecutionHandle(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 {
    kHandleFieldNumber = 1,
  };
  // int64 handle = 1;
  void clear_handle() ;
  ::int64_t handle() const;
  void set_handle(::int64_t value);

  private:
  ::int64_t _internal_handle() const;
  void _internal_set_handle(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ExecutionHandle)
 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 ExecutionHandle& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t handle_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  DotDimensionNumbers* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<DotDimensionNumbers>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DotDimensionNumbers& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const DotDimensionNumbers& from) { DotDimensionNumbers::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(DotDimensionNumbers* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.DotDimensionNumbers"; }

 protected:
  explicit DotDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DotDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DotDimensionNumbers& from);
  DotDimensionNumbers(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DotDimensionNumbers&& from) noexcept
      : DotDimensionNumbers(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 {
    kLhsContractingDimensionsFieldNumber = 1,
    kRhsContractingDimensionsFieldNumber = 2,
    kLhsBatchDimensionsFieldNumber = 3,
    kRhsBatchDimensionsFieldNumber = 4,
  };
  // repeated int64 lhs_contracting_dimensions = 1;
  int lhs_contracting_dimensions_size() const;
  private:
  int _internal_lhs_contracting_dimensions_size() const;

  public:
  void clear_lhs_contracting_dimensions() ;
  ::int64_t lhs_contracting_dimensions(int index) const;
  void set_lhs_contracting_dimensions(int index, ::int64_t value);
  void add_lhs_contracting_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lhs_contracting_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lhs_contracting_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lhs_contracting_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lhs_contracting_dimensions();

  public:
  // repeated int64 rhs_contracting_dimensions = 2;
  int rhs_contracting_dimensions_size() const;
  private:
  int _internal_rhs_contracting_dimensions_size() const;

  public:
  void clear_rhs_contracting_dimensions() ;
  ::int64_t rhs_contracting_dimensions(int index) const;
  void set_rhs_contracting_dimensions(int index, ::int64_t value);
  void add_rhs_contracting_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& rhs_contracting_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_rhs_contracting_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_rhs_contracting_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_rhs_contracting_dimensions();

  public:
  // repeated int64 lhs_batch_dimensions = 3;
  int lhs_batch_dimensions_size() const;
  private:
  int _internal_lhs_batch_dimensions_size() const;

  public:
  void clear_lhs_batch_dimensions() ;
  ::int64_t lhs_batch_dimensions(int index) const;
  void set_lhs_batch_dimensions(int index, ::int64_t value);
  void add_lhs_batch_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lhs_batch_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lhs_batch_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lhs_batch_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lhs_batch_dimensions();

  public:
  // repeated int64 rhs_batch_dimensions = 4;
  int rhs_batch_dimensions_size() const;
  private:
  int _internal_rhs_batch_dimensions_size() const;

  public:
  void clear_rhs_batch_dimensions() ;
  ::int64_t rhs_batch_dimensions(int index) const;
  void set_rhs_batch_dimensions(int index, ::int64_t value);
  void add_rhs_batch_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& rhs_batch_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_rhs_batch_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_rhs_batch_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_rhs_batch_dimensions();

  public:
  // @@protoc_insertion_point(class_scope:xla.DotDimensionNumbers)
 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 DotDimensionNumbers& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> lhs_contracting_dimensions_;
    ::google::protobuf::internal::CachedSize _lhs_contracting_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_contracting_dimensions_;
    ::google::protobuf::internal::CachedSize _rhs_contracting_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> lhs_batch_dimensions_;
    ::google::protobuf::internal::CachedSize _lhs_batch_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_batch_dimensions_;
    ::google::protobuf::internal::CachedSize _rhs_batch_dimensions_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  DeviceHandle* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<DeviceHandle>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DeviceHandle& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const DeviceHandle& from) { DeviceHandle::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(DeviceHandle* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.DeviceHandle"; }

 protected:
  explicit DeviceHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DeviceHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DeviceHandle& from);
  DeviceHandle(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DeviceHandle&& from) noexcept
      : DeviceHandle(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 {
    kHandleFieldNumber = 1,
    kDeviceCountFieldNumber = 2,
  };
  // int64 handle = 1;
  void clear_handle() ;
  ::int64_t handle() const;
  void set_handle(::int64_t value);

  private:
  ::int64_t _internal_handle() const;
  void _internal_set_handle(::int64_t value);

  public:
  // int64 device_count = 2;
  void clear_device_count() ;
  ::int64_t device_count() const;
  void set_device_count(::int64_t value);

  private:
  ::int64_t _internal_device_count() const;
  void _internal_set_device_count(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.DeviceHandle)
 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 DeviceHandle& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t handle_;
    ::int64_t device_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<DeviceAssignmentProto_ComputationDevice>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DeviceAssignmentProto_ComputationDevice& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const DeviceAssignmentProto_ComputationDevice& from) { DeviceAssignmentProto_ComputationDevice::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(DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.DeviceAssignmentProto.ComputationDevice"; }

 protected:
  explicit DeviceAssignmentProto_ComputationDevice(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DeviceAssignmentProto_ComputationDevice(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DeviceAssignmentProto_ComputationDevice& from);
  DeviceAssignmentProto_ComputationDevice(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DeviceAssignmentProto_ComputationDevice&& from) noexcept
      : DeviceAssignmentProto_ComputationDevice(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 {
    kReplicaDeviceIdsFieldNumber = 1,
  };
  // repeated int64 replica_device_ids = 1;
  int replica_device_ids_size() const;
  private:
  int _internal_replica_device_ids_size() const;

  public:
  void clear_replica_device_ids() ;
  ::int64_t replica_device_ids(int index) const;
  void set_replica_device_ids(int index, ::int64_t value);
  void add_replica_device_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& replica_device_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_replica_device_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_replica_device_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_replica_device_ids();

  public:
  // @@protoc_insertion_point(class_scope:xla.DeviceAssignmentProto.ComputationDevice)
 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 DeviceAssignmentProto_ComputationDevice& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> replica_device_ids_;
    ::google::protobuf::internal::CachedSize _replica_device_ids_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ConvolutionDimensionNumbers* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ConvolutionDimensionNumbers>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ConvolutionDimensionNumbers& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ConvolutionDimensionNumbers& from) { ConvolutionDimensionNumbers::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(ConvolutionDimensionNumbers* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ConvolutionDimensionNumbers"; }

 protected:
  explicit ConvolutionDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ConvolutionDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ConvolutionDimensionNumbers& from);
  ConvolutionDimensionNumbers(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ConvolutionDimensionNumbers&& from) noexcept
      : ConvolutionDimensionNumbers(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 {
    kKernelSpatialDimensionsFieldNumber = 6,
    kInputSpatialDimensionsFieldNumber = 11,
    kOutputSpatialDimensionsFieldNumber = 12,
    kKernelInputFeatureDimensionFieldNumber = 3,
    kKernelOutputFeatureDimensionFieldNumber = 4,
    kInputBatchDimensionFieldNumber = 7,
    kInputFeatureDimensionFieldNumber = 8,
    kOutputBatchDimensionFieldNumber = 9,
    kOutputFeatureDimensionFieldNumber = 10,
  };
  // repeated int64 kernel_spatial_dimensions = 6;
  int kernel_spatial_dimensions_size() const;
  private:
  int _internal_kernel_spatial_dimensions_size() const;

  public:
  void clear_kernel_spatial_dimensions() ;
  ::int64_t kernel_spatial_dimensions(int index) const;
  void set_kernel_spatial_dimensions(int index, ::int64_t value);
  void add_kernel_spatial_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& kernel_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_kernel_spatial_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_kernel_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_kernel_spatial_dimensions();

  public:
  // repeated int64 input_spatial_dimensions = 11;
  int input_spatial_dimensions_size() const;
  private:
  int _internal_input_spatial_dimensions_size() const;

  public:
  void clear_input_spatial_dimensions() ;
  ::int64_t input_spatial_dimensions(int index) const;
  void set_input_spatial_dimensions(int index, ::int64_t value);
  void add_input_spatial_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& input_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_input_spatial_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_input_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_input_spatial_dimensions();

  public:
  // repeated int64 output_spatial_dimensions = 12;
  int output_spatial_dimensions_size() const;
  private:
  int _internal_output_spatial_dimensions_size() const;

  public:
  void clear_output_spatial_dimensions() ;
  ::int64_t output_spatial_dimensions(int index) const;
  void set_output_spatial_dimensions(int index, ::int64_t value);
  void add_output_spatial_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& output_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_output_spatial_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_output_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_output_spatial_dimensions();

  public:
  // int64 kernel_input_feature_dimension = 3;
  void clear_kernel_input_feature_dimension() ;
  ::int64_t kernel_input_feature_dimension() const;
  void set_kernel_input_feature_dimension(::int64_t value);

  private:
  ::int64_t _internal_kernel_input_feature_dimension() const;
  void _internal_set_kernel_input_feature_dimension(::int64_t value);

  public:
  // int64 kernel_output_feature_dimension = 4;
  void clear_kernel_output_feature_dimension() ;
  ::int64_t kernel_output_feature_dimension() const;
  void set_kernel_output_feature_dimension(::int64_t value);

  private:
  ::int64_t _internal_kernel_output_feature_dimension() const;
  void _internal_set_kernel_output_feature_dimension(::int64_t value);

  public:
  // int64 input_batch_dimension = 7;
  void clear_input_batch_dimension() ;
  ::int64_t input_batch_dimension() const;
  void set_input_batch_dimension(::int64_t value);

  private:
  ::int64_t _internal_input_batch_dimension() const;
  void _internal_set_input_batch_dimension(::int64_t value);

  public:
  // int64 input_feature_dimension = 8;
  void clear_input_feature_dimension() ;
  ::int64_t input_feature_dimension() const;
  void set_input_feature_dimension(::int64_t value);

  private:
  ::int64_t _internal_input_feature_dimension() const;
  void _internal_set_input_feature_dimension(::int64_t value);

  public:
  // int64 output_batch_dimension = 9;
  void clear_output_batch_dimension() ;
  ::int64_t output_batch_dimension() const;
  void set_output_batch_dimension(::int64_t value);

  private:
  ::int64_t _internal_output_batch_dimension() const;
  void _internal_set_output_batch_dimension(::int64_t value);

  public:
  // int64 output_feature_dimension = 10;
  void clear_output_feature_dimension() ;
  ::int64_t output_feature_dimension() const;
  void set_output_feature_dimension(::int64_t value);

  private:
  ::int64_t _internal_output_feature_dimension() const;
  void _internal_set_output_feature_dimension(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ConvolutionDimensionNumbers& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> kernel_spatial_dimensions_;
    ::google::protobuf::internal::CachedSize _kernel_spatial_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> input_spatial_dimensions_;
    ::google::protobuf::internal::CachedSize _input_spatial_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> output_spatial_dimensions_;
    ::google::protobuf::internal::CachedSize _output_spatial_dimensions_cached_byte_size_;
    ::int64_t kernel_input_feature_dimension_;
    ::int64_t kernel_output_feature_dimension_;
    ::int64_t input_batch_dimension_;
    ::int64_t input_feature_dimension_;
    ::int64_t output_batch_dimension_;
    ::int64_t output_feature_dimension_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ComputationStats* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ComputationStats>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ComputationStats& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ComputationStats& from) { ComputationStats::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(ComputationStats* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ComputationStats"; }

 protected:
  explicit ComputationStats(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ComputationStats(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ComputationStats& from);
  ComputationStats(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ComputationStats&& from) noexcept
      : ComputationStats(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 {
    kFlopCountFieldNumber = 1,
    kTranscendentalCountFieldNumber = 2,
  };
  // double flop_count = 1;
  void clear_flop_count() ;
  double flop_count() const;
  void set_flop_count(double value);

  private:
  double _internal_flop_count() const;
  void _internal_set_flop_count(double value);

  public:
  // double transcendental_count = 2;
  void clear_transcendental_count() ;
  double transcendental_count() const;
  void set_transcendental_count(double value);

  private:
  double _internal_transcendental_count() const;
  void _internal_set_transcendental_count(double value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ComputationStats)
 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 ComputationStats& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    double flop_count_;
    double transcendental_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  CholeskyOptions* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CholeskyOptions>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CholeskyOptions& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CholeskyOptions& from) { CholeskyOptions::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(CholeskyOptions* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.CholeskyOptions"; }

 protected:
  explicit CholeskyOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CholeskyOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CholeskyOptions& from);
  CholeskyOptions(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CholeskyOptions&& from) noexcept
      : CholeskyOptions(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 {
    kLowerFieldNumber = 1,
  };
  // bool lower = 1;
  void clear_lower() ;
  bool lower() const;
  void set_lower(bool value);

  private:
  bool _internal_lower() const;
  void _internal_set_lower(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.CholeskyOptions)
 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 CholeskyOptions& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool lower_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ChannelHandle* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ChannelHandle>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ChannelHandle& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ChannelHandle& from) { ChannelHandle::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(ChannelHandle* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ChannelHandle"; }

 protected:
  explicit ChannelHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChannelHandle(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChannelHandle& from);
  ChannelHandle(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChannelHandle&& from) noexcept
      : ChannelHandle(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 ChannelType = ChannelHandle_ChannelType;
  static constexpr ChannelType CHANNEL_TYPE_INVALID = ChannelHandle_ChannelType_CHANNEL_TYPE_INVALID;
  static constexpr ChannelType DEVICE_TO_DEVICE = ChannelHandle_ChannelType_DEVICE_TO_DEVICE;
  static constexpr ChannelType DEVICE_TO_HOST = ChannelHandle_ChannelType_DEVICE_TO_HOST;
  static constexpr ChannelType HOST_TO_DEVICE = ChannelHandle_ChannelType_HOST_TO_DEVICE;
  static inline bool ChannelType_IsValid(int value) {
    return ChannelHandle_ChannelType_IsValid(value);
  }
  static constexpr ChannelType ChannelType_MIN = ChannelHandle_ChannelType_ChannelType_MIN;
  static constexpr ChannelType ChannelType_MAX = ChannelHandle_ChannelType_ChannelType_MAX;
  static constexpr int ChannelType_ARRAYSIZE = ChannelHandle_ChannelType_ChannelType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ChannelType_descriptor() {
    return ChannelHandle_ChannelType_descriptor();
  }
  template <typename T>
  static inline const ::std::string& ChannelType_Name(T value) {
    return ChannelHandle_ChannelType_Name(value);
  }
  static inline bool ChannelType_Parse(
      ::absl::string_view name, ChannelType* PROTOBUF_NONNULL value) {
    return ChannelHandle_ChannelType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kHandleFieldNumber = 1,
    kTypeFieldNumber = 2,
  };
  // int64 handle = 1;
  void clear_handle() ;
  ::int64_t handle() const;
  void set_handle(::int64_t value);

  private:
  ::int64_t _internal_handle() const;
  void _internal_set_handle(::int64_t value);

  public:
  // .xla.ChannelHandle.ChannelType type = 2;
  void clear_type() ;
  ::xla::ChannelHandle_ChannelType type() const;
  void set_type(::xla::ChannelHandle_ChannelType value);

  private:
  ::xla::ChannelHandle_ChannelType _internal_type() const;
  void _internal_set_type(::xla::ChannelHandle_ChannelType value);

  public:
  // @@protoc_insertion_point(class_scope:xla.ChannelHandle)
 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 ChannelHandle& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t handle_;
    int type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  AxisRefProto_SubAxis* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AxisRefProto_SubAxis>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AxisRefProto_SubAxis& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AxisRefProto_SubAxis& from) { AxisRefProto_SubAxis::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(AxisRefProto_SubAxis* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AxisRefProto.SubAxis"; }

 protected:
  explicit AxisRefProto_SubAxis(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AxisRefProto_SubAxis(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AxisRefProto_SubAxis& from);
  AxisRefProto_SubAxis(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AxisRefProto_SubAxis&& from) noexcept
      : AxisRefProto_SubAxis(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 {
    kPreSizeFieldNumber = 1,
    kSizeFieldNumber = 2,
  };
  // int64 pre_size = 1;
  void clear_pre_size() ;
  ::int64_t pre_size() const;
  void set_pre_size(::int64_t value);

  private:
  ::int64_t _internal_pre_size() const;
  void _internal_set_pre_size(::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:
  // @@protoc_insertion_point(class_scope:xla.AxisRefProto.SubAxis)
 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 AxisRefProto_SubAxis& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t pre_size_;
    ::int64_t size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  Window* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Window>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Window& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Window& from) { Window::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(Window* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.Window"; }

 protected:
  explicit Window(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Window(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Window& from);
  Window(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Window&& from) noexcept
      : Window(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 {
    kDimensionsFieldNumber = 1,
  };
  // repeated .xla.WindowDimension dimensions = 1;
  int dimensions_size() const;
  private:
  int _internal_dimensions_size() const;

  public:
  void clear_dimensions() ;
  ::xla::WindowDimension* PROTOBUF_NONNULL mutable_dimensions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>* PROTOBUF_NONNULL mutable_dimensions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>& _internal_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>* PROTOBUF_NONNULL _internal_mutable_dimensions();
  public:
  const ::xla::WindowDimension& dimensions(int index) const;
  ::xla::WindowDimension* PROTOBUF_NONNULL add_dimensions();
  const ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>& dimensions() const;
  // @@protoc_insertion_point(class_scope:xla.Window)
 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 Window& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::WindowDimension > dimensions_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  WhileLoopBackendConfig* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<WhileLoopBackendConfig>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WhileLoopBackendConfig& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WhileLoopBackendConfig& from) { WhileLoopBackendConfig::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(WhileLoopBackendConfig* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.WhileLoopBackendConfig"; }

 protected:
  explicit WhileLoopBackendConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  WhileLoopBackendConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const WhileLoopBackendConfig& from);
  WhileLoopBackendConfig(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, WhileLoopBackendConfig&& from) noexcept
      : WhileLoopBackendConfig(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 KnownInitStep = WhileLoopBackendConfig_KnownInitStep;
  using KnownTripCount = WhileLoopBackendConfig_KnownTripCount;
  using KnownInductionVariable = WhileLoopBackendConfig_KnownInductionVariable;

  // accessors -------------------------------------------------------
  enum : int {
    kDynamicVariableTupleIndicesFieldNumber = 4,
    kKnownTripCountFieldNumber = 1,
    kKnownInitStepFieldNumber = 2,
    kKnownInductionVariableFieldNumber = 3,
  };
  // repeated int64 dynamic_variable_tuple_indices = 4;
  int dynamic_variable_tuple_indices_size() const;
  private:
  int _internal_dynamic_variable_tuple_indices_size() const;

  public:
  void clear_dynamic_variable_tuple_indices() ;
  ::int64_t dynamic_variable_tuple_indices(int index) const;
  void set_dynamic_variable_tuple_indices(int index, ::int64_t value);
  void add_dynamic_variable_tuple_indices(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& dynamic_variable_tuple_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_dynamic_variable_tuple_indices();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dynamic_variable_tuple_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_dynamic_variable_tuple_indices();

  public:
  // .xla.WhileLoopBackendConfig.KnownTripCount known_trip_count = 1;
  bool has_known_trip_count() const;
  void clear_known_trip_count() ;
  const ::xla::WhileLoopBackendConfig_KnownTripCount& known_trip_count() const;
  [[nodiscard]] ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE release_known_trip_count();
  ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL mutable_known_trip_count();
  void set_allocated_known_trip_count(::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_known_trip_count(::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE value);
  ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE unsafe_arena_release_known_trip_count();

  private:
  const ::xla::WhileLoopBackendConfig_KnownTripCount& _internal_known_trip_count() const;
  ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL _internal_mutable_known_trip_count();

  public:
  // .xla.WhileLoopBackendConfig.KnownInitStep known_init_step = 2;
  bool has_known_init_step() const;
  void clear_known_init_step() ;
  const ::xla::WhileLoopBackendConfig_KnownInitStep& known_init_step() const;
  [[nodiscard]] ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE release_known_init_step();
  ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL mutable_known_init_step();
  void set_allocated_known_init_step(::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_known_init_step(::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE value);
  ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE unsafe_arena_release_known_init_step();

  private:
  const ::xla::WhileLoopBackendConfig_KnownInitStep& _internal_known_init_step() const;
  ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL _internal_mutable_known_init_step();

  public:
  // .xla.WhileLoopBackendConfig.KnownInductionVariable known_induction_variable = 3;
  bool has_known_induction_variable() const;
  void clear_known_induction_variable() ;
  const ::xla::WhileLoopBackendConfig_KnownInductionVariable& known_induction_variable() const;
  [[nodiscard]] ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE release_known_induction_variable();
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL mutable_known_induction_variable();
  void set_allocated_known_induction_variable(::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_known_induction_variable(::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE value);
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE unsafe_arena_release_known_induction_variable();

  private:
  const ::xla::WhileLoopBackendConfig_KnownInductionVariable& _internal_known_induction_variable() const;
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL _internal_mutable_known_induction_variable();

  public:
  // @@protoc_insertion_point(class_scope:xla.WhileLoopBackendConfig)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   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 WhileLoopBackendConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> dynamic_variable_tuple_indices_;
    ::google::protobuf::internal::CachedSize _dynamic_variable_tuple_indices_cached_byte_size_;
    ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE known_trip_count_;
    ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE known_init_step_;
    ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE known_induction_variable_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  StatisticsViz* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<StatisticsViz>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const StatisticsViz& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const StatisticsViz& from) { StatisticsViz::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(StatisticsViz* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.StatisticsViz"; }

 protected:
  explicit StatisticsViz(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  StatisticsViz(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const StatisticsViz& from);
  StatisticsViz(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, StatisticsViz&& from) noexcept
      : StatisticsViz(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 {
    kStatisticsFieldNumber = 2,
    kStatIndexToVisualizeFieldNumber = 1,
  };
  // repeated .xla.Statistic statistics = 2;
  int statistics_size() const;
  private:
  int _internal_statistics_size() const;

  public:
  void clear_statistics() ;
  ::xla::Statistic* PROTOBUF_NONNULL mutable_statistics(int index);
  ::google::protobuf::RepeatedPtrField<::xla::Statistic>* PROTOBUF_NONNULL mutable_statistics();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::Statistic>& _internal_statistics() const;
  ::google::protobuf::RepeatedPtrField<::xla::Statistic>* PROTOBUF_NONNULL _internal_mutable_statistics();
  public:
  const ::xla::Statistic& statistics(int index) const;
  ::xla::Statistic* PROTOBUF_NONNULL add_statistics();
  const ::google::protobuf::RepeatedPtrField<::xla::Statistic>& statistics() const;
  // int64 stat_index_to_visualize = 1;
  void clear_stat_index_to_visualize() ;
  ::int64_t stat_index_to_visualize() const;
  void set_stat_index_to_visualize(::int64_t value);

  private:
  ::int64_t _internal_stat_index_to_visualize() const;
  void _internal_set_stat_index_to_visualize(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.StatisticsViz)
 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 StatisticsViz& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::Statistic > statistics_;
    ::int64_t stat_index_to_visualize_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

  inline ResultAccuracy(const ResultAccuracy& from) : ResultAccuracy(nullptr, from) {}
  inline ResultAccuracy(ResultAccuracy&& from) noexcept
      : ResultAccuracy(nullptr, ::std::move(from)) {}
  inline ResultAccuracy& operator=(const ResultAccuracy& from) {
    CopyFrom(from);
    return *this;
  }
  inline ResultAccuracy& operator=(ResultAccuracy&& 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 ResultAccuracy& default_instance() {
    return *reinterpret_cast<const ResultAccuracy*>(
        &_ResultAccuracy_default_instance_);
  }
  enum SpecsCase {
    kMode = 1,
    kTolerance = 2,
    SPECS_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 45;
  friend void swap(ResultAccuracy& a, ResultAccuracy& b) { a.Swap(&b); }
  inline void Swap(ResultAccuracy* 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(ResultAccuracy* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ResultAccuracy* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ResultAccuracy>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ResultAccuracy& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ResultAccuracy& from) { ResultAccuracy::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(ResultAccuracy* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ResultAccuracy"; }

 protected:
  explicit ResultAccuracy(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ResultAccuracy(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ResultAccuracy& from);
  ResultAccuracy(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ResultAccuracy&& from) noexcept
      : ResultAccuracy(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 Tolerance = ResultAccuracy_Tolerance;
  using Mode = ResultAccuracy_Mode;
  static constexpr Mode DEFAULT = ResultAccuracy_Mode_DEFAULT;
  static constexpr Mode HIGHEST = ResultAccuracy_Mode_HIGHEST;
  static inline bool Mode_IsValid(int value) {
    return ResultAccuracy_Mode_IsValid(value);
  }
  static constexpr Mode Mode_MIN = ResultAccuracy_Mode_Mode_MIN;
  static constexpr Mode Mode_MAX = ResultAccuracy_Mode_Mode_MAX;
  static constexpr int Mode_ARRAYSIZE = ResultAccuracy_Mode_Mode_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Mode_descriptor() {
    return ResultAccuracy_Mode_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Mode_Name(T value) {
    return ResultAccuracy_Mode_Name(value);
  }
  static inline bool Mode_Parse(
      ::absl::string_view name, Mode* PROTOBUF_NONNULL value) {
    return ResultAccuracy_Mode_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kModeFieldNumber = 1,
    kToleranceFieldNumber = 2,
  };
  // .xla.ResultAccuracy.Mode mode = 1;
  bool has_mode() const;
  void clear_mode() ;
  ::xla::ResultAccuracy_Mode mode() const;
  void set_mode(::xla::ResultAccuracy_Mode value);

  private:
  ::xla::ResultAccuracy_Mode _internal_mode() const;
  void _internal_set_mode(::xla::ResultAccuracy_Mode value);

  public:
  // .xla.ResultAccuracy.Tolerance tolerance = 2;
  bool has_tolerance() const;
  private:
  bool _internal_has_tolerance() const;

  public:
  void clear_tolerance() ;
  const ::xla::ResultAccuracy_Tolerance& tolerance() const;
  [[nodiscard]] ::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE release_tolerance();
  ::xla::ResultAccuracy_Tolerance* PROTOBUF_NONNULL mutable_tolerance();
  void set_allocated_tolerance(::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_tolerance(::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE value);
  ::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE unsafe_arena_release_tolerance();

  private:
  const ::xla::ResultAccuracy_Tolerance& _internal_tolerance() const;
  ::xla::ResultAccuracy_Tolerance* PROTOBUF_NONNULL _internal_mutable_tolerance();

  public:
  void clear_specs();
  SpecsCase specs_case() const;
  // @@protoc_insertion_point(class_scope:xla.ResultAccuracy)
 private:
  class _Internal;
  void set_has_mode();
  void set_has_tolerance();
  inline bool has_specs() const;
  inline void clear_has_specs();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 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 ResultAccuracy& from_msg);
    union SpecsUnion {
      constexpr SpecsUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      int mode_;
      ::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE tolerance_;
    } specs_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  RaggedDotDimensionNumbers* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RaggedDotDimensionNumbers>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RaggedDotDimensionNumbers& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RaggedDotDimensionNumbers& from) { RaggedDotDimensionNumbers::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(RaggedDotDimensionNumbers* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.RaggedDotDimensionNumbers"; }

 protected:
  explicit RaggedDotDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RaggedDotDimensionNumbers(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RaggedDotDimensionNumbers& from);
  RaggedDotDimensionNumbers(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RaggedDotDimensionNumbers&& from) noexcept
      : RaggedDotDimensionNumbers(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 {
    kLhsRaggedDimensionsFieldNumber = 2,
    kRhsGroupDimensionsFieldNumber = 3,
    kDotDimensionNumbersFieldNumber = 1,
  };
  // repeated int64 lhs_ragged_dimensions = 2;
  int lhs_ragged_dimensions_size() const;
  private:
  int _internal_lhs_ragged_dimensions_size() const;

  public:
  void clear_lhs_ragged_dimensions() ;
  ::int64_t lhs_ragged_dimensions(int index) const;
  void set_lhs_ragged_dimensions(int index, ::int64_t value);
  void add_lhs_ragged_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lhs_ragged_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lhs_ragged_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lhs_ragged_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lhs_ragged_dimensions();

  public:
  // repeated int64 rhs_group_dimensions = 3;
  int rhs_group_dimensions_size() const;
  private:
  int _internal_rhs_group_dimensions_size() const;

  public:
  void clear_rhs_group_dimensions() ;
  ::int64_t rhs_group_dimensions(int index) const;
  void set_rhs_group_dimensions(int index, ::int64_t value);
  void add_rhs_group_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& rhs_group_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_rhs_group_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_rhs_group_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_rhs_group_dimensions();

  public:
  // .xla.DotDimensionNumbers dot_dimension_numbers = 1;
  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:
  // @@protoc_insertion_point(class_scope:xla.RaggedDotDimensionNumbers)
 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 RaggedDotDimensionNumbers& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> lhs_ragged_dimensions_;
    ::google::protobuf::internal::CachedSize _lhs_ragged_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_group_dimensions_;
    ::google::protobuf::internal::CachedSize _rhs_group_dimensions_cached_byte_size_;
    ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE dot_dimension_numbers_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  PaddingConfig* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PaddingConfig>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PaddingConfig& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PaddingConfig& from) { PaddingConfig::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(PaddingConfig* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.PaddingConfig"; }

 protected:
  explicit PaddingConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PaddingConfig(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PaddingConfig& from);
  PaddingConfig(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PaddingConfig&& from) noexcept
      : PaddingConfig(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 PaddingConfigDimension = PaddingConfig_PaddingConfigDimension;

  // accessors -------------------------------------------------------
  enum : int {
    kDimensionsFieldNumber = 1,
  };
  // repeated .xla.PaddingConfig.PaddingConfigDimension dimensions = 1;
  int dimensions_size() const;
  private:
  int _internal_dimensions_size() const;

  public:
  void clear_dimensions() ;
  ::xla::PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL mutable_dimensions(int index);
  ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>* PROTOBUF_NONNULL mutable_dimensions();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>& _internal_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>* PROTOBUF_NONNULL _internal_mutable_dimensions();
  public:
  const ::xla::PaddingConfig_PaddingConfigDimension& dimensions(int index) const;
  ::xla::PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL add_dimensions();
  const ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>& dimensions() const;
  // @@protoc_insertion_point(class_scope:xla.PaddingConfig)
 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 PaddingConfig& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::PaddingConfig_PaddingConfigDimension > dimensions_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OriginalValueElementProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OriginalValueElementProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalValueElementProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalValueElementProto& from) { OriginalValueElementProto::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(OriginalValueElementProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OriginalValueElementProto"; }

 protected:
  explicit OriginalValueElementProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OriginalValueElementProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OriginalValueElementProto& from);
  OriginalValueElementProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OriginalValueElementProto&& from) noexcept
      : OriginalValueElementProto(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 = 1,
    kOriginalArrayFieldNumber = 2,
  };
  // repeated int64 shape_index = 1;
  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:
  // .xla.OriginalArrayProto original_array = 2;
  bool has_original_array() const;
  void clear_original_array() ;
  const ::xla::OriginalArrayProto& original_array() const;
  [[nodiscard]] ::xla::OriginalArrayProto* PROTOBUF_NULLABLE release_original_array();
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL mutable_original_array();
  void set_allocated_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_original_array(::xla::OriginalArrayProto* PROTOBUF_NULLABLE value);
  ::xla::OriginalArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_original_array();

  private:
  const ::xla::OriginalArrayProto& _internal_original_array() const;
  ::xla::OriginalArrayProto* PROTOBUF_NONNULL _internal_mutable_original_array();

  public:
  // @@protoc_insertion_point(class_scope:xla.OriginalValueElementProto)
 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 OriginalValueElementProto& 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_;
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE original_array_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OpMetadata* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OpMetadata>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OpMetadata& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OpMetadata& from) { OpMetadata::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(OpMetadata* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OpMetadata"; }

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

  // accessors -------------------------------------------------------
  enum : int {
    kProfileTypeFieldNumber = 5,
    kOpTypeFieldNumber = 1,
    kOpNameFieldNumber = 2,
    kSourceFileFieldNumber = 3,
    kDeduplicatedNameFieldNumber = 12,
    kSchedulingNameFieldNumber = 16,
    kProfileInfoFieldNumber = 10,
    kSizeOfGeneratedCodeInBytesFieldNumber = 8,
    kSizeOfMemoryWorkingSetInBytesFieldNumber = 9,
    kSourceLineFieldNumber = 4,
    kStackFrameIdFieldNumber = 15,
    kSourceEndLineFieldNumber = 17,
    kSourceColumnFieldNumber = 18,
    kSourceEndColumnFieldNumber = 19,
  };
  // repeated .xla.ProfileType profile_type = 5 [deprecated = true];
  [[deprecated]]  int profile_type_size() const;
  private:
  int _internal_profile_type_size() const;

  public:
  [[deprecated]]  void clear_profile_type() ;
  public:
  [[deprecated]] ::xla::ProfileType profile_type(int index) const;
  [[deprecated]] void set_profile_type(int index, ::xla::ProfileType value);
  [[deprecated]] void add_profile_type(::xla::ProfileType value);
  [[deprecated]] const ::google::protobuf::RepeatedField<int>& profile_type() const;
  [[deprecated]] ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_profile_type();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_profile_type() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_profile_type();

  public:
  // string op_type = 1;
  void clear_op_type() ;
  const ::std::string& op_type() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_op_type(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_op_type();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_op_type();
  void set_allocated_op_type(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_op_type() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_op_type(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_op_type();

  public:
  // string op_name = 2;
  void clear_op_name() ;
  const ::std::string& op_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_op_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_op_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_op_name();
  void set_allocated_op_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_op_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_op_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_op_name();

  public:
  // string source_file = 3;
  void clear_source_file() ;
  const ::std::string& source_file() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_source_file(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_source_file();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_source_file();
  void set_allocated_source_file(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_source_file() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_source_file(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_source_file();

  public:
  // string deduplicated_name = 12;
  void clear_deduplicated_name() ;
  const ::std::string& deduplicated_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_deduplicated_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_deduplicated_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_deduplicated_name();
  void set_allocated_deduplicated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_deduplicated_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_deduplicated_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_deduplicated_name();

  public:
  // string scheduling_name = 16;
  void clear_scheduling_name() ;
  const ::std::string& scheduling_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_scheduling_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_scheduling_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_scheduling_name();
  void set_allocated_scheduling_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_scheduling_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_scheduling_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_scheduling_name();

  public:
  // .xla.OpMetadata.ProfileInfo profile_info = 10;
  bool has_profile_info() const;
  void clear_profile_info() ;
  const ::xla::OpMetadata_ProfileInfo& profile_info() const;
  [[nodiscard]] ::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE release_profile_info();
  ::xla::OpMetadata_ProfileInfo* PROTOBUF_NONNULL mutable_profile_info();
  void set_allocated_profile_info(::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_profile_info(::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE value);
  ::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE unsafe_arena_release_profile_info();

  private:
  const ::xla::OpMetadata_ProfileInfo& _internal_profile_info() const;
  ::xla::OpMetadata_ProfileInfo* PROTOBUF_NONNULL _internal_mutable_profile_info();

  public:
  // int64 size_of_generated_code_in_bytes = 8;
  void clear_size_of_generated_code_in_bytes() ;
  ::int64_t size_of_generated_code_in_bytes() const;
  void set_size_of_generated_code_in_bytes(::int64_t value);

  private:
  ::int64_t _internal_size_of_generated_code_in_bytes() const;
  void _internal_set_size_of_generated_code_in_bytes(::int64_t value);

  public:
  // int64 size_of_memory_working_set_in_bytes = 9;
  void clear_size_of_memory_working_set_in_bytes() ;
  ::int64_t size_of_memory_working_set_in_bytes() const;
  void set_size_of_memory_working_set_in_bytes(::int64_t value);

  private:
  ::int64_t _internal_size_of_memory_working_set_in_bytes() const;
  void _internal_set_size_of_memory_working_set_in_bytes(::int64_t value);

  public:
  // int32 source_line = 4;
  void clear_source_line() ;
  ::int32_t source_line() const;
  void set_source_line(::int32_t value);

  private:
  ::int32_t _internal_source_line() const;
  void _internal_set_source_line(::int32_t value);

  public:
  // int32 stack_frame_id = 15;
  void clear_stack_frame_id() ;
  ::int32_t stack_frame_id() const;
  void set_stack_frame_id(::int32_t value);

  private:
  ::int32_t _internal_stack_frame_id() const;
  void _internal_set_stack_frame_id(::int32_t value);

  public:
  // int32 source_end_line = 17;
  void clear_source_end_line() ;
  ::int32_t source_end_line() const;
  void set_source_end_line(::int32_t value);

  private:
  ::int32_t _internal_source_end_line() const;
  void _internal_set_source_end_line(::int32_t value);

  public:
  // int32 source_column = 18;
  void clear_source_column() ;
  ::int32_t source_column() const;
  void set_source_column(::int32_t value);

  private:
  ::int32_t _internal_source_column() const;
  void _internal_set_source_column(::int32_t value);

  public:
  // int32 source_end_column = 19;
  void clear_source_end_column() ;
  ::int32_t source_end_column() const;
  void set_source_end_column(::int32_t value);

  private:
  ::int32_t _internal_source_end_column() const;
  void _internal_set_source_end_column(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.OpMetadata)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 14,
                                   1, 88,
                                   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 OpMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<int> profile_type_;
    ::google::protobuf::internal::CachedSize _profile_type_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr op_type_;
    ::google::protobuf::internal::ArenaStringPtr op_name_;
    ::google::protobuf::internal::ArenaStringPtr source_file_;
    ::google::protobuf::internal::ArenaStringPtr deduplicated_name_;
    ::google::protobuf::internal::ArenaStringPtr scheduling_name_;
    ::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE profile_info_;
    ::int64_t size_of_generated_code_in_bytes_;
    ::int64_t size_of_memory_working_set_in_bytes_;
    ::int32_t source_line_;
    ::int32_t stack_frame_id_;
    ::int32_t source_end_line_;
    ::int32_t source_column_;
    ::int32_t source_end_column_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  MeshProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MeshProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MeshProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MeshProto& from) { MeshProto::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(MeshProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.MeshProto"; }

 protected:
  explicit MeshProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MeshProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MeshProto& from);
  MeshProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MeshProto&& from) noexcept
      : MeshProto(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 MeshAxis = MeshProto_MeshAxis;

  // accessors -------------------------------------------------------
  enum : int {
    kAxesFieldNumber = 1,
    kDeviceIdsFieldNumber = 2,
  };
  // repeated .xla.MeshProto.MeshAxis axes = 1;
  int axes_size() const;
  private:
  int _internal_axes_size() const;

  public:
  void clear_axes() ;
  ::xla::MeshProto_MeshAxis* PROTOBUF_NONNULL mutable_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>* PROTOBUF_NONNULL mutable_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>& _internal_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>* PROTOBUF_NONNULL _internal_mutable_axes();
  public:
  const ::xla::MeshProto_MeshAxis& axes(int index) const;
  ::xla::MeshProto_MeshAxis* PROTOBUF_NONNULL add_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>& axes() const;
  // repeated int64 device_ids = 2;
  int device_ids_size() const;
  private:
  int _internal_device_ids_size() const;

  public:
  void clear_device_ids() ;
  ::int64_t device_ids(int index) const;
  void set_device_ids(int index, ::int64_t value);
  void add_device_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& device_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_device_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_device_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_device_ids();

  public:
  // @@protoc_insertion_point(class_scope:xla.MeshProto)
 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 MeshProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::MeshProto_MeshAxis > axes_;
    ::google::protobuf::RepeatedField<::int64_t> device_ids_;
    ::google::protobuf::internal::CachedSize _device_ids_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  LayoutProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LayoutProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LayoutProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LayoutProto& from) { LayoutProto::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(LayoutProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.LayoutProto"; }

 protected:
  explicit LayoutProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LayoutProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LayoutProto& from);
  LayoutProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LayoutProto&& from) noexcept
      : LayoutProto(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 {
    kMinorToMajorFieldNumber = 1,
    kTilesFieldNumber = 6,
    kDimLevelTypesFieldNumber = 9,
    kDimUniqueFieldNumber = 13,
    kDimOrderedFieldNumber = 14,
    kSplitConfigsFieldNumber = 17,
    kPhysicalShapeFieldNumber = 10,
    kElementSizeInBitsFieldNumber = 7,
    kMemorySpaceFieldNumber = 8,
    kIndexPrimitiveTypeFieldNumber = 11,
    kPointerPrimitiveTypeFieldNumber = 12,
    kDynamicShapeMetadataPrefixBytesFieldNumber = 15,
    kTailPaddingAlignmentInElementsFieldNumber = 16,
  };
  // repeated int64 minor_to_major = 1;
  int minor_to_major_size() const;
  private:
  int _internal_minor_to_major_size() const;

  public:
  void clear_minor_to_major() ;
  ::int64_t minor_to_major(int index) const;
  void set_minor_to_major(int index, ::int64_t value);
  void add_minor_to_major(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& minor_to_major() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_minor_to_major();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_minor_to_major() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_minor_to_major();

  public:
  // repeated .xla.TileProto tiles = 6;
  int tiles_size() const;
  private:
  int _internal_tiles_size() const;

  public:
  void clear_tiles() ;
  ::xla::TileProto* PROTOBUF_NONNULL mutable_tiles(int index);
  ::google::protobuf::RepeatedPtrField<::xla::TileProto>* PROTOBUF_NONNULL mutable_tiles();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::TileProto>& _internal_tiles() const;
  ::google::protobuf::RepeatedPtrField<::xla::TileProto>* PROTOBUF_NONNULL _internal_mutable_tiles();
  public:
  const ::xla::TileProto& tiles(int index) const;
  ::xla::TileProto* PROTOBUF_NONNULL add_tiles();
  const ::google::protobuf::RepeatedPtrField<::xla::TileProto>& tiles() const;
  // repeated .xla.DimLevelType dim_level_types = 9;
  int dim_level_types_size() const;
  private:
  int _internal_dim_level_types_size() const;

  public:
  void clear_dim_level_types() ;
  public:
  ::xla::DimLevelType dim_level_types(int index) const;
  void set_dim_level_types(int index, ::xla::DimLevelType value);
  void add_dim_level_types(::xla::DimLevelType value);
  const ::google::protobuf::RepeatedField<int>& dim_level_types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_dim_level_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_dim_level_types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_dim_level_types();

  public:
  // repeated bool dim_unique = 13;
  int dim_unique_size() const;
  private:
  int _internal_dim_unique_size() const;

  public:
  void clear_dim_unique() ;
  bool dim_unique(int index) const;
  void set_dim_unique(int index, bool value);
  void add_dim_unique(bool value);
  const ::google::protobuf::RepeatedField<bool>& dim_unique() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_dim_unique();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_dim_unique() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_dim_unique();

  public:
  // repeated bool dim_ordered = 14;
  int dim_ordered_size() const;
  private:
  int _internal_dim_ordered_size() const;

  public:
  void clear_dim_ordered() ;
  bool dim_ordered(int index) const;
  void set_dim_ordered(int index, bool value);
  void add_dim_ordered(bool value);
  const ::google::protobuf::RepeatedField<bool>& dim_ordered() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_dim_ordered();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_dim_ordered() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_dim_ordered();

  public:
  // repeated .xla.SplitConfigProto split_configs = 17;
  int split_configs_size() const;
  private:
  int _internal_split_configs_size() const;

  public:
  void clear_split_configs() ;
  ::xla::SplitConfigProto* PROTOBUF_NONNULL mutable_split_configs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* PROTOBUF_NONNULL mutable_split_configs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>& _internal_split_configs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* PROTOBUF_NONNULL _internal_mutable_split_configs();
  public:
  const ::xla::SplitConfigProto& split_configs(int index) const;
  ::xla::SplitConfigProto* PROTOBUF_NONNULL add_split_configs();
  const ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>& split_configs() const;
  // .xla.ShapeProto physical_shape = 10;
  bool has_physical_shape() const;
  void clear_physical_shape() ;
  const ::xla::ShapeProto& physical_shape() const;
  [[nodiscard]] ::xla::ShapeProto* PROTOBUF_NULLABLE release_physical_shape();
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_physical_shape();
  void set_allocated_physical_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_physical_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_physical_shape();

  private:
  const ::xla::ShapeProto& _internal_physical_shape() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _internal_mutable_physical_shape();

  public:
  // int64 element_size_in_bits = 7;
  void clear_element_size_in_bits() ;
  ::int64_t element_size_in_bits() const;
  void set_element_size_in_bits(::int64_t value);

  private:
  ::int64_t _internal_element_size_in_bits() const;
  void _internal_set_element_size_in_bits(::int64_t value);

  public:
  // int64 memory_space = 8;
  void clear_memory_space() ;
  ::int64_t memory_space() const;
  void set_memory_space(::int64_t value);

  private:
  ::int64_t _internal_memory_space() const;
  void _internal_set_memory_space(::int64_t value);

  public:
  // .xla.PrimitiveType index_primitive_type = 11;
  void clear_index_primitive_type() ;
  ::xla::PrimitiveType index_primitive_type() const;
  void set_index_primitive_type(::xla::PrimitiveType value);

  private:
  ::xla::PrimitiveType _internal_index_primitive_type() const;
  void _internal_set_index_primitive_type(::xla::PrimitiveType value);

  public:
  // .xla.PrimitiveType pointer_primitive_type = 12;
  void clear_pointer_primitive_type() ;
  ::xla::PrimitiveType pointer_primitive_type() const;
  void set_pointer_primitive_type(::xla::PrimitiveType value);

  private:
  ::xla::PrimitiveType _internal_pointer_primitive_type() const;
  void _internal_set_pointer_primitive_type(::xla::PrimitiveType value);

  public:
  // int64 dynamic_shape_metadata_prefix_bytes = 15;
  void clear_dynamic_shape_metadata_prefix_bytes() ;
  ::int64_t dynamic_shape_metadata_prefix_bytes() const;
  void set_dynamic_shape_metadata_prefix_bytes(::int64_t value);

  private:
  ::int64_t _internal_dynamic_shape_metadata_prefix_bytes() const;
  void _internal_set_dynamic_shape_metadata_prefix_bytes(::int64_t value);

  public:
  // int64 tail_padding_alignment_in_elements = 16;
  void clear_tail_padding_alignment_in_elements() ;
  ::int64_t tail_padding_alignment_in_elements() const;
  void set_tail_padding_alignment_in_elements(::int64_t value);

  private:
  ::int64_t _internal_tail_padding_alignment_in_elements() const;
  void _internal_set_tail_padding_alignment_in_elements(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.LayoutProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 13,
                                   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 LayoutProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> minor_to_major_;
    ::google::protobuf::internal::CachedSize _minor_to_major_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::TileProto > tiles_;
    ::google::protobuf::RepeatedField<int> dim_level_types_;
    ::google::protobuf::internal::CachedSize _dim_level_types_cached_byte_size_;
    ::google::protobuf::RepeatedField<bool> dim_unique_;
    ::google::protobuf::RepeatedField<bool> dim_ordered_;
    ::google::protobuf::RepeatedPtrField< ::xla::SplitConfigProto > split_configs_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE physical_shape_;
    ::int64_t element_size_in_bits_;
    ::int64_t memory_space_;
    int index_primitive_type_;
    int pointer_primitive_type_;
    ::int64_t dynamic_shape_metadata_prefix_bytes_;
    ::int64_t tail_padding_alignment_in_elements_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ShapeProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ShapeProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ShapeProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ShapeProto& from) { ShapeProto::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(ShapeProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ShapeProto"; }

 protected:
  explicit ShapeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShapeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShapeProto& from);
  ShapeProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShapeProto&& from) noexcept
      : ShapeProto(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 {
    kDimensionsFieldNumber = 3,
    kTupleShapesFieldNumber = 4,
    kIsDynamicDimensionFieldNumber = 6,
    kLayoutFieldNumber = 5,
    kElementTypeFieldNumber = 2,
  };
  // repeated int64 dimensions = 3;
  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.ShapeProto tuple_shapes = 4;
  int tuple_shapes_size() const;
  private:
  int _internal_tuple_shapes_size() const;

  public:
  void clear_tuple_shapes() ;
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_tuple_shapes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL mutable_tuple_shapes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_tuple_shapes() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL _internal_mutable_tuple_shapes();
  public:
  const ::xla::ShapeProto& tuple_shapes(int index) const;
  ::xla::ShapeProto* PROTOBUF_NONNULL add_tuple_shapes();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& tuple_shapes() const;
  // repeated bool is_dynamic_dimension = 6;
  int is_dynamic_dimension_size() const;
  private:
  int _internal_is_dynamic_dimension_size() const;

  public:
  void clear_is_dynamic_dimension() ;
  bool is_dynamic_dimension(int index) const;
  void set_is_dynamic_dimension(int index, bool value);
  void add_is_dynamic_dimension(bool value);
  const ::google::protobuf::RepeatedField<bool>& is_dynamic_dimension() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_is_dynamic_dimension();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_is_dynamic_dimension() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_is_dynamic_dimension();

  public:
  // .xla.LayoutProto layout = 5;
  bool has_layout() const;
  void clear_layout() ;
  const ::xla::LayoutProto& layout() const;
  [[nodiscard]] ::xla::LayoutProto* PROTOBUF_NULLABLE release_layout();
  ::xla::LayoutProto* PROTOBUF_NONNULL mutable_layout();
  void set_allocated_layout(::xla::LayoutProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_layout(::xla::LayoutProto* PROTOBUF_NULLABLE value);
  ::xla::LayoutProto* PROTOBUF_NULLABLE unsafe_arena_release_layout();

  private:
  const ::xla::LayoutProto& _internal_layout() const;
  ::xla::LayoutProto* PROTOBUF_NONNULL _internal_mutable_layout();

  public:
  // .xla.PrimitiveType element_type = 2;
  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.ShapeProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   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 ShapeProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _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::ShapeProto > tuple_shapes_;
    ::google::protobuf::RepeatedField<bool> is_dynamic_dimension_;
    ::xla::LayoutProto* PROTOBUF_NULLABLE layout_;
    int element_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  GemmPerfTableEntry* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GemmPerfTableEntry>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GemmPerfTableEntry& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GemmPerfTableEntry& from) { GemmPerfTableEntry::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(GemmPerfTableEntry* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.GemmPerfTableEntry"; }

 protected:
  explicit GemmPerfTableEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GemmPerfTableEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GemmPerfTableEntry& from);
  GemmPerfTableEntry(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GemmPerfTableEntry&& from) noexcept
      : GemmPerfTableEntry(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 {
    kFlopsFieldNumber = 5,
    kBFieldNumber = 1,
    kMFieldNumber = 2,
    kNFieldNumber = 3,
    kKFieldNumber = 4,
  };
  // map<string, int64> flops = 5;
  int flops_size() const;
  private:
  int _internal_flops_size() const;

  public:
  void clear_flops() ;
  const ::google::protobuf::Map<std::string, ::int64_t>& flops() const;
  ::google::protobuf::Map<std::string, ::int64_t>* PROTOBUF_NONNULL mutable_flops();

  private:
  const ::google::protobuf::Map<std::string, ::int64_t>& _internal_flops() const;
  ::google::protobuf::Map<std::string, ::int64_t>* PROTOBUF_NONNULL _internal_mutable_flops();

  public:
  // int64 b = 1;
  void clear_b() ;
  ::int64_t b() const;
  void set_b(::int64_t value);

  private:
  ::int64_t _internal_b() const;
  void _internal_set_b(::int64_t value);

  public:
  // int64 m = 2;
  void clear_m() ;
  ::int64_t m() const;
  void set_m(::int64_t value);

  private:
  ::int64_t _internal_m() const;
  void _internal_set_m(::int64_t value);

  public:
  // int64 n = 3;
  void clear_n() ;
  ::int64_t n() const;
  void set_n(::int64_t value);

  private:
  ::int64_t _internal_n() const;
  void _internal_set_n(::int64_t value);

  public:
  // int64 k = 4;
  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:
  // @@protoc_insertion_point(class_scope:xla.GemmPerfTableEntry)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 5,
                                   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 GemmPerfTableEntry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<GemmPerfTableEntry_FlopsEntry_DoNotUse, std::string, ::int64_t,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_INT64>
        flops_;
    ::int64_t b_;
    ::int64_t m_;
    ::int64_t n_;
    ::int64_t k_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  FrontendAttributes* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FrontendAttributes>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FrontendAttributes& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FrontendAttributes& from) { FrontendAttributes::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(FrontendAttributes* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.FrontendAttributes"; }

 protected:
  explicit FrontendAttributes(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FrontendAttributes(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FrontendAttributes& from);
  FrontendAttributes(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FrontendAttributes&& from) noexcept
      : FrontendAttributes(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 {
    kMapFieldNumber = 1,
  };
  // map<string, string> map = 1;
  int map_size() const;
  private:
  int _internal_map_size() const;

  public:
  void clear_map() ;
  const ::google::protobuf::Map<std::string, std::string>& map() const;
  ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL mutable_map();

  private:
  const ::google::protobuf::Map<std::string, std::string>& _internal_map() const;
  ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL _internal_mutable_map();

  public:
  // @@protoc_insertion_point(class_scope:xla.FrontendAttributes)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 34,
                                   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 FrontendAttributes& from_msg);
    ::google::protobuf::internal::MapField<FrontendAttributes_MapEntry_DoNotUse, std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        map_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  DeviceAssignmentProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<DeviceAssignmentProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DeviceAssignmentProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const DeviceAssignmentProto& from) { DeviceAssignmentProto::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(DeviceAssignmentProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.DeviceAssignmentProto"; }

 protected:
  explicit DeviceAssignmentProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DeviceAssignmentProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DeviceAssignmentProto& from);
  DeviceAssignmentProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DeviceAssignmentProto&& from) noexcept
      : DeviceAssignmentProto(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 ComputationDevice = DeviceAssignmentProto_ComputationDevice;

  // accessors -------------------------------------------------------
  enum : int {
    kComputationDevicesFieldNumber = 3,
    kReplicaCountFieldNumber = 1,
    kComputationCountFieldNumber = 2,
  };
  // repeated .xla.DeviceAssignmentProto.ComputationDevice computation_devices = 3;
  int computation_devices_size() const;
  private:
  int _internal_computation_devices_size() const;

  public:
  void clear_computation_devices() ;
  ::xla::DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL mutable_computation_devices(int index);
  ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>* PROTOBUF_NONNULL mutable_computation_devices();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>& _internal_computation_devices() const;
  ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>* PROTOBUF_NONNULL _internal_mutable_computation_devices();
  public:
  const ::xla::DeviceAssignmentProto_ComputationDevice& computation_devices(int index) const;
  ::xla::DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL add_computation_devices();
  const ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>& computation_devices() const;
  // int32 replica_count = 1;
  void clear_replica_count() ;
  ::int32_t replica_count() const;
  void set_replica_count(::int32_t value);

  private:
  ::int32_t _internal_replica_count() const;
  void _internal_set_replica_count(::int32_t value);

  public:
  // int32 computation_count = 2;
  void clear_computation_count() ;
  ::int32_t computation_count() const;
  void set_computation_count(::int32_t value);

  private:
  ::int32_t _internal_computation_count() const;
  void _internal_set_computation_count(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.DeviceAssignmentProto)
 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 DeviceAssignmentProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::DeviceAssignmentProto_ComputationDevice > computation_devices_;
    ::int32_t replica_count_;
    ::int32_t computation_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  CollectiveDeviceListProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CollectiveDeviceListProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CollectiveDeviceListProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CollectiveDeviceListProto& from) { CollectiveDeviceListProto::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(CollectiveDeviceListProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.CollectiveDeviceListProto"; }

 protected:
  explicit CollectiveDeviceListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CollectiveDeviceListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CollectiveDeviceListProto& from);
  CollectiveDeviceListProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CollectiveDeviceListProto&& from) noexcept
      : CollectiveDeviceListProto(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 {
    kReplicaGroupsFieldNumber = 1,
    kIotaReplicaGroupListFieldNumber = 2,
  };
  // repeated .xla.ReplicaGroup replica_groups = 1;
  int replica_groups_size() const;
  private:
  int _internal_replica_groups_size() const;

  public:
  void clear_replica_groups() ;
  ::xla::ReplicaGroup* PROTOBUF_NONNULL mutable_replica_groups(int index);
  ::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:
  const ::xla::ReplicaGroup& replica_groups(int index) const;
  ::xla::ReplicaGroup* PROTOBUF_NONNULL add_replica_groups();
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& replica_groups() const;
  // .xla.IotaReplicaGroupListProto iota_replica_group_list = 2;
  bool has_iota_replica_group_list() const;
  void clear_iota_replica_group_list() ;
  const ::xla::IotaReplicaGroupListProto& iota_replica_group_list() const;
  [[nodiscard]] ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE release_iota_replica_group_list();
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL mutable_iota_replica_group_list();
  void set_allocated_iota_replica_group_list(::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_iota_replica_group_list(::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value);
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE unsafe_arena_release_iota_replica_group_list();

  private:
  const ::xla::IotaReplicaGroupListProto& _internal_iota_replica_group_list() const;
  ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL _internal_mutable_iota_replica_group_list();

  public:
  // @@protoc_insertion_point(class_scope:xla.CollectiveDeviceListProto)
 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 CollectiveDeviceListProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ReplicaGroup > replica_groups_;
    ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE iota_replica_group_list_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  AxisRefProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AxisRefProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AxisRefProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AxisRefProto& from) { AxisRefProto::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(AxisRefProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.AxisRefProto"; }

 protected:
  explicit AxisRefProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AxisRefProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AxisRefProto& from);
  AxisRefProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AxisRefProto&& from) noexcept
      : AxisRefProto(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 SubAxis = AxisRefProto_SubAxis;

  // accessors -------------------------------------------------------
  enum : int {
    kSubAxisInfoFieldNumber = 2,
    kMeshAxisIndexFieldNumber = 1,
  };
  // optional .xla.AxisRefProto.SubAxis sub_axis_info = 2;
  bool has_sub_axis_info() const;
  void clear_sub_axis_info() ;
  const ::xla::AxisRefProto_SubAxis& sub_axis_info() const;
  [[nodiscard]] ::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE release_sub_axis_info();
  ::xla::AxisRefProto_SubAxis* PROTOBUF_NONNULL mutable_sub_axis_info();
  void set_allocated_sub_axis_info(::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sub_axis_info(::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE value);
  ::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE unsafe_arena_release_sub_axis_info();

  private:
  const ::xla::AxisRefProto_SubAxis& _internal_sub_axis_info() const;
  ::xla::AxisRefProto_SubAxis* PROTOBUF_NONNULL _internal_mutable_sub_axis_info();

  public:
  // int64 mesh_axis_index = 1;
  void clear_mesh_axis_index() ;
  ::int64_t mesh_axis_index() const;
  void set_mesh_axis_index(::int64_t value);

  private:
  ::int64_t _internal_mesh_axis_index() const;
  void _internal_set_mesh_axis_index(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:xla.AxisRefProto)
 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 AxisRefProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE sub_axis_info_;
    ::int64_t mesh_axis_index_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  ProgramShapeProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ProgramShapeProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ProgramShapeProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ProgramShapeProto& from) { ProgramShapeProto::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(ProgramShapeProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.ProgramShapeProto"; }

 protected:
  explicit ProgramShapeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ProgramShapeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ProgramShapeProto& from);
  ProgramShapeProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ProgramShapeProto&& from) noexcept
      : ProgramShapeProto(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 {
    kParametersFieldNumber = 1,
    kParameterNamesFieldNumber = 3,
    kResultFieldNumber = 2,
  };
  // repeated .xla.ShapeProto parameters = 1;
  int parameters_size() const;
  private:
  int _internal_parameters_size() const;

  public:
  void clear_parameters() ;
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_parameters(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL mutable_parameters();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_parameters() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL _internal_mutable_parameters();
  public:
  const ::xla::ShapeProto& parameters(int index) const;
  ::xla::ShapeProto* PROTOBUF_NONNULL add_parameters();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& parameters() const;
  // repeated string parameter_names = 3;
  int parameter_names_size() const;
  private:
  int _internal_parameter_names_size() const;

  public:
  void clear_parameter_names() ;
  const ::std::string& parameter_names(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_parameter_names(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_parameter_names(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_parameter_names();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_parameter_names(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& parameter_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_parameter_names();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_parameter_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_parameter_names();

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

  private:
  const ::xla::ShapeProto& _internal_result() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _internal_mutable_result();

  public:
  // @@protoc_insertion_point(class_scope:xla.ProgramShapeProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   2, 45,
                                   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 ProgramShapeProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > parameters_;
    ::google::protobuf::RepeatedPtrField<::std::string> parameter_names_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE result_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  OriginalValueProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OriginalValueProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalValueProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalValueProto& from) { OriginalValueProto::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(OriginalValueProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OriginalValueProto"; }

 protected:
  explicit OriginalValueProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OriginalValueProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OriginalValueProto& from);
  OriginalValueProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OriginalValueProto&& from) noexcept
      : OriginalValueProto(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 {
    kElementsFieldNumber = 1,
    kIsSyntheticCallFieldNumber = 2,
  };
  // repeated .xla.OriginalValueElementProto elements = 1;
  int elements_size() const;
  private:
  int _internal_elements_size() const;

  public:
  void clear_elements() ;
  ::xla::OriginalValueElementProto* PROTOBUF_NONNULL mutable_elements(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>* PROTOBUF_NONNULL mutable_elements();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>& _internal_elements() const;
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>* PROTOBUF_NONNULL _internal_mutable_elements();
  public:
  const ::xla::OriginalValueElementProto& elements(int index) const;
  ::xla::OriginalValueElementProto* PROTOBUF_NONNULL add_elements();
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>& elements() const;
  // bool is_synthetic_call = 2;
  void clear_is_synthetic_call() ;
  bool is_synthetic_call() const;
  void set_is_synthetic_call(bool value);

  private:
  bool _internal_is_synthetic_call() const;
  void _internal_set_is_synthetic_call(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.OriginalValueProto)
 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 OriginalValueProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::OriginalValueElementProto > elements_;
    bool is_synthetic_call_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<NamedShardingProto_DimensionSharding>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NamedShardingProto_DimensionSharding& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NamedShardingProto_DimensionSharding& from) { NamedShardingProto_DimensionSharding::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(NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.NamedShardingProto.DimensionSharding"; }

 protected:
  explicit NamedShardingProto_DimensionSharding(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  NamedShardingProto_DimensionSharding(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const NamedShardingProto_DimensionSharding& from);
  NamedShardingProto_DimensionSharding(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, NamedShardingProto_DimensionSharding&& from) noexcept
      : NamedShardingProto_DimensionSharding(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 {
    kAxesFieldNumber = 1,
    kIsClosedFieldNumber = 2,
  };
  // repeated .xla.AxisRefProto axes = 1;
  int axes_size() const;
  private:
  int _internal_axes_size() const;

  public:
  void clear_axes() ;
  ::xla::AxisRefProto* PROTOBUF_NONNULL mutable_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL mutable_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& _internal_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL _internal_mutable_axes();
  public:
  const ::xla::AxisRefProto& axes(int index) const;
  ::xla::AxisRefProto* PROTOBUF_NONNULL add_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& axes() const;
  // bool is_closed = 2;
  void clear_is_closed() ;
  bool is_closed() const;
  void set_is_closed(bool value);

  private:
  bool _internal_is_closed() const;
  void _internal_set_is_closed(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.NamedShardingProto.DimensionSharding)
 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 NamedShardingProto_DimensionSharding& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::AxisRefProto > axes_;
    bool is_closed_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MeshAxesReplicaGroupListProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MeshAxesReplicaGroupListProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MeshAxesReplicaGroupListProto& from) { MeshAxesReplicaGroupListProto::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(MeshAxesReplicaGroupListProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.MeshAxesReplicaGroupListProto"; }

 protected:
  explicit MeshAxesReplicaGroupListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MeshAxesReplicaGroupListProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MeshAxesReplicaGroupListProto& from);
  MeshAxesReplicaGroupListProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MeshAxesReplicaGroupListProto&& from) noexcept
      : MeshAxesReplicaGroupListProto(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 {
    kAxesFieldNumber = 2,
    kMeshFieldNumber = 1,
  };
  // repeated .xla.AxisRefProto axes = 2;
  int axes_size() const;
  private:
  int _internal_axes_size() const;

  public:
  void clear_axes() ;
  ::xla::AxisRefProto* PROTOBUF_NONNULL mutable_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL mutable_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& _internal_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL _internal_mutable_axes();
  public:
  const ::xla::AxisRefProto& axes(int index) const;
  ::xla::AxisRefProto* PROTOBUF_NONNULL add_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& axes() const;
  // .xla.MeshProto mesh = 1;
  bool has_mesh() const;
  void clear_mesh() ;
  const ::xla::MeshProto& mesh() const;
  [[nodiscard]] ::xla::MeshProto* PROTOBUF_NULLABLE release_mesh();
  ::xla::MeshProto* PROTOBUF_NONNULL mutable_mesh();
  void set_allocated_mesh(::xla::MeshProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_mesh(::xla::MeshProto* PROTOBUF_NULLABLE value);
  ::xla::MeshProto* PROTOBUF_NULLABLE unsafe_arena_release_mesh();

  private:
  const ::xla::MeshProto& _internal_mesh() const;
  ::xla::MeshProto* PROTOBUF_NONNULL _internal_mutable_mesh();

  public:
  // @@protoc_insertion_point(class_scope:xla.MeshAxesReplicaGroupListProto)
 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 MeshAxesReplicaGroupListProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::AxisRefProto > axes_;
    ::xla::MeshProto* PROTOBUF_NULLABLE mesh_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  LiteralProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LiteralProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LiteralProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LiteralProto& from) { LiteralProto::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(LiteralProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.LiteralProto"; }

 protected:
  explicit LiteralProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LiteralProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LiteralProto& from);
  LiteralProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LiteralProto&& from) noexcept
      : LiteralProto(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 {
    kPredsFieldNumber = 2,
    kS32SFieldNumber = 4,
    kS64SFieldNumber = 5,
    kU32SFieldNumber = 6,
    kU64SFieldNumber = 7,
    kF32SFieldNumber = 8,
    kF64SFieldNumber = 9,
    kTupleLiteralsFieldNumber = 10,
    kC64SFieldNumber = 12,
    kSparseIndicesFieldNumber = 14,
    kC128SFieldNumber = 18,
    kU8SFieldNumber = 3,
    kF16SFieldNumber = 11,
    kBf16SFieldNumber = 13,
    kS8SFieldNumber = 15,
    kU16SFieldNumber = 16,
    kS16SFieldNumber = 17,
    kF8E5M2SFieldNumber = 19,
    kF8E4M3FnsFieldNumber = 20,
    kS4SFieldNumber = 21,
    kU4SFieldNumber = 22,
    kF8E4M3B11FnuzsFieldNumber = 23,
    kF8E5M2FnuzsFieldNumber = 24,
    kF8E4M3FnuzsFieldNumber = 25,
    kS2SFieldNumber = 26,
    kU2SFieldNumber = 27,
    kF8E4M3SFieldNumber = 28,
    kF8E3M4SFieldNumber = 29,
    kS1SFieldNumber = 30,
    kU1SFieldNumber = 31,
    kF4E2M1FnsFieldNumber = 32,
    kF8E8M0FnusFieldNumber = 33,
    kShapeFieldNumber = 1,
  };
  // repeated bool preds = 2;
  int preds_size() const;
  private:
  int _internal_preds_size() const;

  public:
  void clear_preds() ;
  bool preds(int index) const;
  void set_preds(int index, bool value);
  void add_preds(bool value);
  const ::google::protobuf::RepeatedField<bool>& preds() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_preds();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_preds() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_preds();

  public:
  // repeated int32 s32s = 4;
  int s32s_size() const;
  private:
  int _internal_s32s_size() const;

  public:
  void clear_s32s() ;
  ::int32_t s32s(int index) const;
  void set_s32s(int index, ::int32_t value);
  void add_s32s(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& s32s() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_s32s();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_s32s() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_s32s();

  public:
  // repeated int64 s64s = 5;
  int s64s_size() const;
  private:
  int _internal_s64s_size() const;

  public:
  void clear_s64s() ;
  ::int64_t s64s(int index) const;
  void set_s64s(int index, ::int64_t value);
  void add_s64s(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& s64s() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_s64s();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_s64s() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_s64s();

  public:
  // repeated uint32 u32s = 6;
  int u32s_size() const;
  private:
  int _internal_u32s_size() const;

  public:
  void clear_u32s() ;
  ::uint32_t u32s(int index) const;
  void set_u32s(int index, ::uint32_t value);
  void add_u32s(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& u32s() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_u32s();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_u32s() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_u32s();

  public:
  // repeated uint64 u64s = 7;
  int u64s_size() const;
  private:
  int _internal_u64s_size() const;

  public:
  void clear_u64s() ;
  ::uint64_t u64s(int index) const;
  void set_u64s(int index, ::uint64_t value);
  void add_u64s(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& u64s() const;
  ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL mutable_u64s();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_u64s() const;
  ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL _internal_mutable_u64s();

  public:
  // repeated float f32s = 8;
  int f32s_size() const;
  private:
  int _internal_f32s_size() const;

  public:
  void clear_f32s() ;
  float f32s(int index) const;
  void set_f32s(int index, float value);
  void add_f32s(float value);
  const ::google::protobuf::RepeatedField<float>& f32s() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_f32s();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_f32s() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_f32s();

  public:
  // repeated double f64s = 9;
  int f64s_size() const;
  private:
  int _internal_f64s_size() const;

  public:
  void clear_f64s() ;
  double f64s(int index) const;
  void set_f64s(int index, double value);
  void add_f64s(double value);
  const ::google::protobuf::RepeatedField<double>& f64s() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL mutable_f64s();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_f64s() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL _internal_mutable_f64s();

  public:
  // repeated .xla.LiteralProto tuple_literals = 10;
  int tuple_literals_size() const;
  private:
  int _internal_tuple_literals_size() const;

  public:
  void clear_tuple_literals() ;
  ::xla::LiteralProto* PROTOBUF_NONNULL mutable_tuple_literals(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL mutable_tuple_literals();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_tuple_literals() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL _internal_mutable_tuple_literals();
  public:
  const ::xla::LiteralProto& tuple_literals(int index) const;
  ::xla::LiteralProto* PROTOBUF_NONNULL add_tuple_literals();
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& tuple_literals() const;
  // repeated float c64s = 12;
  int c64s_size() const;
  private:
  int _internal_c64s_size() const;

  public:
  void clear_c64s() ;
  float c64s(int index) const;
  void set_c64s(int index, float value);
  void add_c64s(float value);
  const ::google::protobuf::RepeatedField<float>& c64s() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_c64s();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_c64s() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_c64s();

  public:
  // repeated int64 sparse_indices = 14;
  int sparse_indices_size() const;
  private:
  int _internal_sparse_indices_size() const;

  public:
  void clear_sparse_indices() ;
  ::int64_t sparse_indices(int index) const;
  void set_sparse_indices(int index, ::int64_t value);
  void add_sparse_indices(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& sparse_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_sparse_indices();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_sparse_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_sparse_indices();

  public:
  // repeated double c128s = 18;
  int c128s_size() const;
  private:
  int _internal_c128s_size() const;

  public:
  void clear_c128s() ;
  double c128s(int index) const;
  void set_c128s(int index, double value);
  void add_c128s(double value);
  const ::google::protobuf::RepeatedField<double>& c128s() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL mutable_c128s();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_c128s() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL _internal_mutable_c128s();

  public:
  // bytes u8s = 3;
  void clear_u8s() ;
  const ::std::string& u8s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_u8s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_u8s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_u8s();
  void set_allocated_u8s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_u8s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_u8s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_u8s();

  public:
  // bytes f16s = 11;
  void clear_f16s() ;
  const ::std::string& f16s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f16s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f16s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f16s();
  void set_allocated_f16s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f16s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f16s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f16s();

  public:
  // bytes bf16s = 13;
  void clear_bf16s() ;
  const ::std::string& bf16s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_bf16s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_bf16s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_bf16s();
  void set_allocated_bf16s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_bf16s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_bf16s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_bf16s();

  public:
  // bytes s8s = 15;
  void clear_s8s() ;
  const ::std::string& s8s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s8s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_s8s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_s8s();
  void set_allocated_s8s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_s8s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_s8s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_s8s();

  public:
  // bytes u16s = 16;
  void clear_u16s() ;
  const ::std::string& u16s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_u16s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_u16s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_u16s();
  void set_allocated_u16s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_u16s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_u16s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_u16s();

  public:
  // bytes s16s = 17;
  void clear_s16s() ;
  const ::std::string& s16s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s16s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_s16s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_s16s();
  void set_allocated_s16s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_s16s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_s16s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_s16s();

  public:
  // bytes f8e5m2s = 19;
  void clear_f8e5m2s() ;
  const ::std::string& f8e5m2s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e5m2s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e5m2s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e5m2s();
  void set_allocated_f8e5m2s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e5m2s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e5m2s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e5m2s();

  public:
  // bytes f8e4m3fns = 20;
  void clear_f8e4m3fns() ;
  const ::std::string& f8e4m3fns() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e4m3fns(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e4m3fns();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e4m3fns();
  void set_allocated_f8e4m3fns(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e4m3fns() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3fns(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e4m3fns();

  public:
  // bytes s4s = 21;
  void clear_s4s() ;
  const ::std::string& s4s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s4s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_s4s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_s4s();
  void set_allocated_s4s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_s4s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_s4s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_s4s();

  public:
  // bytes u4s = 22;
  void clear_u4s() ;
  const ::std::string& u4s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_u4s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_u4s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_u4s();
  void set_allocated_u4s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_u4s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_u4s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_u4s();

  public:
  // bytes f8e4m3b11fnuzs = 23;
  void clear_f8e4m3b11fnuzs() ;
  const ::std::string& f8e4m3b11fnuzs() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e4m3b11fnuzs(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e4m3b11fnuzs();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e4m3b11fnuzs();
  void set_allocated_f8e4m3b11fnuzs(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e4m3b11fnuzs() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3b11fnuzs(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e4m3b11fnuzs();

  public:
  // bytes f8e5m2fnuzs = 24;
  void clear_f8e5m2fnuzs() ;
  const ::std::string& f8e5m2fnuzs() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e5m2fnuzs(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e5m2fnuzs();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e5m2fnuzs();
  void set_allocated_f8e5m2fnuzs(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e5m2fnuzs() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e5m2fnuzs(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e5m2fnuzs();

  public:
  // bytes f8e4m3fnuzs = 25;
  void clear_f8e4m3fnuzs() ;
  const ::std::string& f8e4m3fnuzs() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e4m3fnuzs(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e4m3fnuzs();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e4m3fnuzs();
  void set_allocated_f8e4m3fnuzs(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e4m3fnuzs() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3fnuzs(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e4m3fnuzs();

  public:
  // bytes s2s = 26;
  void clear_s2s() ;
  const ::std::string& s2s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s2s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_s2s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_s2s();
  void set_allocated_s2s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_s2s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_s2s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_s2s();

  public:
  // bytes u2s = 27;
  void clear_u2s() ;
  const ::std::string& u2s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_u2s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_u2s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_u2s();
  void set_allocated_u2s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_u2s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_u2s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_u2s();

  public:
  // bytes f8e4m3s = 28;
  void clear_f8e4m3s() ;
  const ::std::string& f8e4m3s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e4m3s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e4m3s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e4m3s();
  void set_allocated_f8e4m3s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e4m3s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e4m3s();

  public:
  // bytes f8e3m4s = 29;
  void clear_f8e3m4s() ;
  const ::std::string& f8e3m4s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e3m4s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e3m4s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e3m4s();
  void set_allocated_f8e3m4s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e3m4s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e3m4s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e3m4s();

  public:
  // bytes s1s = 30;
  void clear_s1s() ;
  const ::std::string& s1s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s1s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_s1s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_s1s();
  void set_allocated_s1s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_s1s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_s1s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_s1s();

  public:
  // bytes u1s = 31;
  void clear_u1s() ;
  const ::std::string& u1s() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_u1s(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_u1s();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_u1s();
  void set_allocated_u1s(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_u1s() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_u1s(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_u1s();

  public:
  // bytes f4e2m1fns = 32;
  void clear_f4e2m1fns() ;
  const ::std::string& f4e2m1fns() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f4e2m1fns(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f4e2m1fns();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f4e2m1fns();
  void set_allocated_f4e2m1fns(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f4e2m1fns() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f4e2m1fns(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f4e2m1fns();

  public:
  // bytes f8e8m0fnus = 33;
  void clear_f8e8m0fnus() ;
  const ::std::string& f8e8m0fnus() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_f8e8m0fnus(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_f8e8m0fnus();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_f8e8m0fnus();
  void set_allocated_f8e8m0fnus(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_f8e8m0fnus() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_f8e8m0fnus(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_f8e8m0fnus();

  public:
  // .xla.ShapeProto shape = 1;
  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:
  // @@protoc_insertion_point(class_scope:xla.LiteralProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<5, 33,
                                   2, 0,
                                   7>
      _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 LiteralProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<bool> preds_;
    ::google::protobuf::RepeatedField<::int32_t> s32s_;
    ::google::protobuf::internal::CachedSize _s32s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> s64s_;
    ::google::protobuf::internal::CachedSize _s64s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint32_t> u32s_;
    ::google::protobuf::internal::CachedSize _u32s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> u64s_;
    ::google::protobuf::internal::CachedSize _u64s_cached_byte_size_;
    ::google::protobuf::RepeatedField<float> f32s_;
    ::google::protobuf::RepeatedField<double> f64s_;
    ::google::protobuf::RepeatedPtrField< ::xla::LiteralProto > tuple_literals_;
    ::google::protobuf::RepeatedField<float> c64s_;
    ::google::protobuf::RepeatedField<::int64_t> sparse_indices_;
    ::google::protobuf::internal::CachedSize _sparse_indices_cached_byte_size_;
    ::google::protobuf::RepeatedField<double> c128s_;
    ::google::protobuf::internal::ArenaStringPtr u8s_;
    ::google::protobuf::internal::ArenaStringPtr f16s_;
    ::google::protobuf::internal::ArenaStringPtr bf16s_;
    ::google::protobuf::internal::ArenaStringPtr s8s_;
    ::google::protobuf::internal::ArenaStringPtr u16s_;
    ::google::protobuf::internal::ArenaStringPtr s16s_;
    ::google::protobuf::internal::ArenaStringPtr f8e5m2s_;
    ::google::protobuf::internal::ArenaStringPtr f8e4m3fns_;
    ::google::protobuf::internal::ArenaStringPtr s4s_;
    ::google::protobuf::internal::ArenaStringPtr u4s_;
    ::google::protobuf::internal::ArenaStringPtr f8e4m3b11fnuzs_;
    ::google::protobuf::internal::ArenaStringPtr f8e5m2fnuzs_;
    ::google::protobuf::internal::ArenaStringPtr f8e4m3fnuzs_;
    ::google::protobuf::internal::ArenaStringPtr s2s_;
    ::google::protobuf::internal::ArenaStringPtr u2s_;
    ::google::protobuf::internal::ArenaStringPtr f8e4m3s_;
    ::google::protobuf::internal::ArenaStringPtr f8e3m4s_;
    ::google::protobuf::internal::ArenaStringPtr s1s_;
    ::google::protobuf::internal::ArenaStringPtr u1s_;
    ::google::protobuf::internal::ArenaStringPtr f4e2m1fns_;
    ::google::protobuf::internal::ArenaStringPtr f8e8m0fnus_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE shape_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  GemmPerfTableEntryValues* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GemmPerfTableEntryValues>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GemmPerfTableEntryValues& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GemmPerfTableEntryValues& from) { GemmPerfTableEntryValues::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(GemmPerfTableEntryValues* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.GemmPerfTableEntryValues"; }

 protected:
  explicit GemmPerfTableEntryValues(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GemmPerfTableEntryValues(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GemmPerfTableEntryValues& from);
  GemmPerfTableEntryValues(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GemmPerfTableEntryValues&& from) noexcept
      : GemmPerfTableEntryValues(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 {
    kEntriesFieldNumber = 1,
  };
  // repeated .xla.GemmPerfTableEntry entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>* PROTOBUF_NONNULL _internal_mutable_entries();
  public:
  const ::xla::GemmPerfTableEntry& entries(int index) const;
  ::xla::GemmPerfTableEntry* PROTOBUF_NONNULL add_entries();
  const ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>& entries() const;
  // @@protoc_insertion_point(class_scope:xla.GemmPerfTableEntryValues)
 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 GemmPerfTableEntryValues& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::GemmPerfTableEntry > entries_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  NamedShardingProto* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<NamedShardingProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NamedShardingProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NamedShardingProto& from) { NamedShardingProto::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(NamedShardingProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.NamedShardingProto"; }

 protected:
  explicit NamedShardingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  NamedShardingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const NamedShardingProto& from);
  NamedShardingProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, NamedShardingProto&& from) noexcept
      : NamedShardingProto(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 DimensionSharding = NamedShardingProto_DimensionSharding;

  // accessors -------------------------------------------------------
  enum : int {
    kDimShardingsFieldNumber = 3,
    kReplicatedAxesFieldNumber = 4,
    kUnreducedAxesFieldNumber = 5,
    kMetadataFieldNumber = 6,
    kManualAxesFieldNumber = 7,
    kMeshFieldNumber = 2,
  };
  // repeated .xla.NamedShardingProto.DimensionSharding dim_shardings = 3;
  int dim_shardings_size() const;
  private:
  int _internal_dim_shardings_size() const;

  public:
  void clear_dim_shardings() ;
  ::xla::NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL mutable_dim_shardings(int index);
  ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>* PROTOBUF_NONNULL mutable_dim_shardings();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>& _internal_dim_shardings() const;
  ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>* PROTOBUF_NONNULL _internal_mutable_dim_shardings();
  public:
  const ::xla::NamedShardingProto_DimensionSharding& dim_shardings(int index) const;
  ::xla::NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL add_dim_shardings();
  const ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>& dim_shardings() const;
  // repeated .xla.AxisRefProto replicated_axes = 4;
  int replicated_axes_size() const;
  private:
  int _internal_replicated_axes_size() const;

  public:
  void clear_replicated_axes() ;
  ::xla::AxisRefProto* PROTOBUF_NONNULL mutable_replicated_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL mutable_replicated_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& _internal_replicated_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL _internal_mutable_replicated_axes();
  public:
  const ::xla::AxisRefProto& replicated_axes(int index) const;
  ::xla::AxisRefProto* PROTOBUF_NONNULL add_replicated_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& replicated_axes() const;
  // repeated .xla.AxisRefProto unreduced_axes = 5;
  int unreduced_axes_size() const;
  private:
  int _internal_unreduced_axes_size() const;

  public:
  void clear_unreduced_axes() ;
  ::xla::AxisRefProto* PROTOBUF_NONNULL mutable_unreduced_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL mutable_unreduced_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& _internal_unreduced_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL _internal_mutable_unreduced_axes();
  public:
  const ::xla::AxisRefProto& unreduced_axes(int index) const;
  ::xla::AxisRefProto* PROTOBUF_NONNULL add_unreduced_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& unreduced_axes() const;
  // repeated .xla.OpMetadata metadata = 6;
  int metadata_size() const;
  private:
  int _internal_metadata_size() const;

  public:
  void clear_metadata() ;
  ::xla::OpMetadata* PROTOBUF_NONNULL mutable_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL mutable_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& _internal_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL _internal_mutable_metadata();
  public:
  const ::xla::OpMetadata& metadata(int index) const;
  ::xla::OpMetadata* PROTOBUF_NONNULL add_metadata();
  const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& metadata() const;
  // repeated .xla.AxisRefProto manual_axes = 7;
  int manual_axes_size() const;
  private:
  int _internal_manual_axes_size() const;

  public:
  void clear_manual_axes() ;
  ::xla::AxisRefProto* PROTOBUF_NONNULL mutable_manual_axes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL mutable_manual_axes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& _internal_manual_axes() const;
  ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL _internal_mutable_manual_axes();
  public:
  const ::xla::AxisRefProto& manual_axes(int index) const;
  ::xla::AxisRefProto* PROTOBUF_NONNULL add_manual_axes();
  const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& manual_axes() const;
  // .xla.MeshProto mesh = 2;
  bool has_mesh() const;
  void clear_mesh() ;
  const ::xla::MeshProto& mesh() const;
  [[nodiscard]] ::xla::MeshProto* PROTOBUF_NULLABLE release_mesh();
  ::xla::MeshProto* PROTOBUF_NONNULL mutable_mesh();
  void set_allocated_mesh(::xla::MeshProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_mesh(::xla::MeshProto* PROTOBUF_NULLABLE value);
  ::xla::MeshProto* PROTOBUF_NULLABLE unsafe_arena_release_mesh();

  private:
  const ::xla::MeshProto& _internal_mesh() const;
  ::xla::MeshProto* PROTOBUF_NONNULL _internal_mutable_mesh();

  public:
  // @@protoc_insertion_point(class_scope:xla.NamedShardingProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   6, 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 NamedShardingProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::NamedShardingProto_DimensionSharding > dim_shardings_;
    ::google::protobuf::RepeatedPtrField< ::xla::AxisRefProto > replicated_axes_;
    ::google::protobuf::RepeatedPtrField< ::xla::AxisRefProto > unreduced_axes_;
    ::google::protobuf::RepeatedPtrField< ::xla::OpMetadata > metadata_;
    ::google::protobuf::RepeatedPtrField< ::xla::AxisRefProto > manual_axes_;
    ::xla::MeshProto* PROTOBUF_NULLABLE mesh_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

class GemmPerfTable_EntriesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  GemmPerfTable_EntriesEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GemmPerfTable_EntriesEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit GemmPerfTable_EntriesEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_GemmPerfTable_EntriesEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 42,
                                   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 GemmPerfTable_EntriesEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

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

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

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

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

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

  OpSharding* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OpSharding>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OpSharding& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OpSharding& from) { OpSharding::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(OpSharding* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.OpSharding"; }

 protected:
  explicit OpSharding(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OpSharding(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OpSharding& from);
  OpSharding(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OpSharding&& from) noexcept
      : OpSharding(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 Type = OpSharding_Type;
  static constexpr Type REPLICATED = OpSharding_Type_REPLICATED;
  static constexpr Type MAXIMAL = OpSharding_Type_MAXIMAL;
  static constexpr Type TUPLE = OpSharding_Type_TUPLE;
  static constexpr Type OTHER = OpSharding_Type_OTHER;
  static constexpr Type MANUAL = OpSharding_Type_MANUAL;
  static constexpr Type UNKNOWN = OpSharding_Type_UNKNOWN;
  static constexpr Type UNREDUCED = OpSharding_Type_UNREDUCED;
  static inline bool Type_IsValid(int value) {
    return OpSharding_Type_IsValid(value);
  }
  static constexpr Type Type_MIN = OpSharding_Type_Type_MIN;
  static constexpr Type Type_MAX = OpSharding_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE = OpSharding_Type_Type_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Type_descriptor() {
    return OpSharding_Type_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Type_Name(T value) {
    return OpSharding_Type_Name(value);
  }
  static inline bool Type_Parse(
      ::absl::string_view name, Type* PROTOBUF_NONNULL value) {
    return OpSharding_Type_Parse(name, value);
  }
  using ShardGroupType = OpSharding_ShardGroupType;
  static constexpr ShardGroupType AS = OpSharding_ShardGroupType_AS;
  static constexpr ShardGroupType LIKE = OpSharding_ShardGroupType_LIKE;
  static inline bool ShardGroupType_IsValid(int value) {
    return OpSharding_ShardGroupType_IsValid(value);
  }
  static constexpr ShardGroupType ShardGroupType_MIN = OpSharding_ShardGroupType_ShardGroupType_MIN;
  static constexpr ShardGroupType ShardGroupType_MAX = OpSharding_ShardGroupType_ShardGroupType_MAX;
  static constexpr int ShardGroupType_ARRAYSIZE = OpSharding_ShardGroupType_ShardGroupType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ShardGroupType_descriptor() {
    return OpSharding_ShardGroupType_descriptor();
  }
  template <typename T>
  static inline const ::std::string& ShardGroupType_Name(T value) {
    return OpSharding_ShardGroupType_Name(value);
  }
  static inline bool ShardGroupType_Parse(
      ::absl::string_view name, ShardGroupType* PROTOBUF_NONNULL value) {
    return OpSharding_ShardGroupType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kTileAssignmentDimensionsFieldNumber = 3,
    kTileAssignmentDevicesFieldNumber = 4,
    kTupleShardingsFieldNumber = 5,
    kMetadataFieldNumber = 7,
    kLastTileDimsFieldNumber = 8,
    kIotaReshapeDimsFieldNumber = 9,
    kIotaTransposePermFieldNumber = 10,
    kTileShapeFieldNumber = 2,
    kNamedShardingFieldNumber = 14,
    kTypeFieldNumber = 1,
    kReplicateOnLastTileDimFieldNumber = 6,
    kIsShardGroupFieldNumber = 11,
    kShardGroupIdFieldNumber = 12,
    kShardGroupTypeFieldNumber = 13,
  };
  // repeated int64 tile_assignment_dimensions = 3;
  int tile_assignment_dimensions_size() const;
  private:
  int _internal_tile_assignment_dimensions_size() const;

  public:
  void clear_tile_assignment_dimensions() ;
  ::int64_t tile_assignment_dimensions(int index) const;
  void set_tile_assignment_dimensions(int index, ::int64_t value);
  void add_tile_assignment_dimensions(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& tile_assignment_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_tile_assignment_dimensions();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_tile_assignment_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_tile_assignment_dimensions();

  public:
  // repeated int64 tile_assignment_devices = 4;
  int tile_assignment_devices_size() const;
  private:
  int _internal_tile_assignment_devices_size() const;

  public:
  void clear_tile_assignment_devices() ;
  ::int64_t tile_assignment_devices(int index) const;
  void set_tile_assignment_devices(int index, ::int64_t value);
  void add_tile_assignment_devices(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& tile_assignment_devices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_tile_assignment_devices();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_tile_assignment_devices() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_tile_assignment_devices();

  public:
  // repeated .xla.OpSharding tuple_shardings = 5;
  int tuple_shardings_size() const;
  private:
  int _internal_tuple_shardings_size() const;

  public:
  void clear_tuple_shardings() ;
  ::xla::OpSharding* PROTOBUF_NONNULL mutable_tuple_shardings(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL mutable_tuple_shardings();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& _internal_tuple_shardings() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL _internal_mutable_tuple_shardings();
  public:
  const ::xla::OpSharding& tuple_shardings(int index) const;
  ::xla::OpSharding* PROTOBUF_NONNULL add_tuple_shardings();
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& tuple_shardings() const;
  // repeated .xla.OpMetadata metadata = 7;
  int metadata_size() const;
  private:
  int _internal_metadata_size() const;

  public:
  void clear_metadata() ;
  ::xla::OpMetadata* PROTOBUF_NONNULL mutable_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL mutable_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& _internal_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL _internal_mutable_metadata();
  public:
  const ::xla::OpMetadata& metadata(int index) const;
  ::xla::OpMetadata* PROTOBUF_NONNULL add_metadata();
  const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& metadata() const;
  // repeated .xla.OpSharding.Type last_tile_dims = 8;
  int last_tile_dims_size() const;
  private:
  int _internal_last_tile_dims_size() const;

  public:
  void clear_last_tile_dims() ;
  public:
  ::xla::OpSharding_Type last_tile_dims(int index) const;
  void set_last_tile_dims(int index, ::xla::OpSharding_Type value);
  void add_last_tile_dims(::xla::OpSharding_Type value);
  const ::google::protobuf::RepeatedField<int>& last_tile_dims() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_last_tile_dims();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_last_tile_dims() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_last_tile_dims();

  public:
  // repeated int64 iota_reshape_dims = 9;
  int iota_reshape_dims_size() const;
  private:
  int _internal_iota_reshape_dims_size() const;

  public:
  void clear_iota_reshape_dims() ;
  ::int64_t iota_reshape_dims(int index) const;
  void set_iota_reshape_dims(int index, ::int64_t value);
  void add_iota_reshape_dims(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& iota_reshape_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_iota_reshape_dims();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_iota_reshape_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_iota_reshape_dims();

  public:
  // repeated int32 iota_transpose_perm = 10;
  int iota_transpose_perm_size() const;
  private:
  int _internal_iota_transpose_perm_size() const;

  public:
  void clear_iota_transpose_perm() ;
  ::int32_t iota_transpose_perm(int index) const;
  void set_iota_transpose_perm(int index, ::int32_t value);
  void add_iota_transpose_perm(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_iota_transpose_perm();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_iota_transpose_perm();

  public:
  // .xla.ShapeProto tile_shape = 2;
  bool has_tile_shape() const;
  void clear_tile_shape() ;
  const ::xla::ShapeProto& tile_shape() const;
  [[nodiscard]] ::xla::ShapeProto* PROTOBUF_NULLABLE release_tile_shape();
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_tile_shape();
  void set_allocated_tile_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_tile_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_tile_shape();

  private:
  const ::xla::ShapeProto& _internal_tile_shape() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _internal_mutable_tile_shape();

  public:
  // optional .xla.NamedShardingProto named_sharding = 14;
  bool has_named_sharding() const;
  void clear_named_sharding() ;
  const ::xla::NamedShardingProto& named_sharding() const;
  [[nodiscard]] ::xla::NamedShardingProto* PROTOBUF_NULLABLE release_named_sharding();
  ::xla::NamedShardingProto* PROTOBUF_NONNULL mutable_named_sharding();
  void set_allocated_named_sharding(::xla::NamedShardingProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_named_sharding(::xla::NamedShardingProto* PROTOBUF_NULLABLE value);
  ::xla::NamedShardingProto* PROTOBUF_NULLABLE unsafe_arena_release_named_sharding();

  private:
  const ::xla::NamedShardingProto& _internal_named_sharding() const;
  ::xla::NamedShardingProto* PROTOBUF_NONNULL _internal_mutable_named_sharding();

  public:
  // .xla.OpSharding.Type type = 1;
  void clear_type() ;
  ::xla::OpSharding_Type type() const;
  void set_type(::xla::OpSharding_Type value);

  private:
  ::xla::OpSharding_Type _internal_type() const;
  void _internal_set_type(::xla::OpSharding_Type value);

  public:
  // bool replicate_on_last_tile_dim = 6;
  void clear_replicate_on_last_tile_dim() ;
  bool replicate_on_last_tile_dim() const;
  void set_replicate_on_last_tile_dim(bool value);

  private:
  bool _internal_replicate_on_last_tile_dim() const;
  void _internal_set_replicate_on_last_tile_dim(bool value);

  public:
  // bool is_shard_group = 11;
  void clear_is_shard_group() ;
  bool is_shard_group() const;
  void set_is_shard_group(bool value);

  private:
  bool _internal_is_shard_group() const;
  void _internal_set_is_shard_group(bool value);

  public:
  // int64 shard_group_id = 12;
  void clear_shard_group_id() ;
  ::int64_t shard_group_id() const;
  void set_shard_group_id(::int64_t value);

  private:
  ::int64_t _internal_shard_group_id() const;
  void _internal_set_shard_group_id(::int64_t value);

  public:
  // .xla.OpSharding.ShardGroupType shard_group_type = 13;
  void clear_shard_group_type() ;
  ::xla::OpSharding_ShardGroupType shard_group_type() const;
  void set_shard_group_type(::xla::OpSharding_ShardGroupType value);

  private:
  ::xla::OpSharding_ShardGroupType _internal_shard_group_type() const;
  void _internal_set_shard_group_type(::xla::OpSharding_ShardGroupType value);

  public:
  // @@protoc_insertion_point(class_scope:xla.OpSharding)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 14,
                                   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 OpSharding& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> tile_assignment_dimensions_;
    ::google::protobuf::internal::CachedSize _tile_assignment_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> tile_assignment_devices_;
    ::google::protobuf::internal::CachedSize _tile_assignment_devices_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::OpSharding > tuple_shardings_;
    ::google::protobuf::RepeatedPtrField< ::xla::OpMetadata > metadata_;
    ::google::protobuf::RepeatedField<int> last_tile_dims_;
    ::google::protobuf::internal::CachedSize _last_tile_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> iota_reshape_dims_;
    ::google::protobuf::internal::CachedSize _iota_reshape_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> iota_transpose_perm_;
    ::google::protobuf::internal::CachedSize _iota_transpose_perm_cached_byte_size_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE tile_shape_;
    ::xla::NamedShardingProto* PROTOBUF_NULLABLE named_sharding_;
    int type_;
    bool replicate_on_last_tile_dim_;
    bool is_shard_group_;
    ::int64_t shard_group_id_;
    int shard_group_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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

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

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

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

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

  GemmPerfTable* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GemmPerfTable>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GemmPerfTable& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GemmPerfTable& from) { GemmPerfTable::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(GemmPerfTable* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "xla.GemmPerfTable"; }

 protected:
  explicit GemmPerfTable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GemmPerfTable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GemmPerfTable& from);
  GemmPerfTable(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GemmPerfTable&& from) noexcept
      : GemmPerfTable(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 {
    kEntriesFieldNumber = 1,
  };
  // map<string, .xla.GemmPerfTableEntryValues> entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  const ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>& entries() const;
  ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* PROTOBUF_NONNULL mutable_entries();

  private:
  const ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>& _internal_entries() const;
  ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* PROTOBUF_NONNULL _internal_mutable_entries();

  public:
  // @@protoc_insertion_point(class_scope:xla.GemmPerfTable)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   2, 33,
                                   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 GemmPerfTable& from_msg);
    ::google::protobuf::internal::MapField<GemmPerfTable_EntriesEntry_DoNotUse, std::string, ::xla::GemmPerfTableEntryValues,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        entries_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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

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




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


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

// PaddingConfig_PaddingConfigDimension

// int64 edge_padding_low = 1;
inline void PaddingConfig_PaddingConfigDimension::clear_edge_padding_low() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edge_padding_low_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::edge_padding_low() const {
  // @@protoc_insertion_point(field_get:xla.PaddingConfig.PaddingConfigDimension.edge_padding_low)
  return _internal_edge_padding_low();
}
inline void PaddingConfig_PaddingConfigDimension::set_edge_padding_low(::int64_t value) {
  _internal_set_edge_padding_low(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.PaddingConfig.PaddingConfigDimension.edge_padding_low)
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::_internal_edge_padding_low() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.edge_padding_low_;
}
inline void PaddingConfig_PaddingConfigDimension::_internal_set_edge_padding_low(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edge_padding_low_ = value;
}

// int64 edge_padding_high = 2;
inline void PaddingConfig_PaddingConfigDimension::clear_edge_padding_high() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edge_padding_high_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::edge_padding_high() const {
  // @@protoc_insertion_point(field_get:xla.PaddingConfig.PaddingConfigDimension.edge_padding_high)
  return _internal_edge_padding_high();
}
inline void PaddingConfig_PaddingConfigDimension::set_edge_padding_high(::int64_t value) {
  _internal_set_edge_padding_high(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.PaddingConfig.PaddingConfigDimension.edge_padding_high)
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::_internal_edge_padding_high() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.edge_padding_high_;
}
inline void PaddingConfig_PaddingConfigDimension::_internal_set_edge_padding_high(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edge_padding_high_ = value;
}

// int64 interior_padding = 3;
inline void PaddingConfig_PaddingConfigDimension::clear_interior_padding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interior_padding_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::interior_padding() const {
  // @@protoc_insertion_point(field_get:xla.PaddingConfig.PaddingConfigDimension.interior_padding)
  return _internal_interior_padding();
}
inline void PaddingConfig_PaddingConfigDimension::set_interior_padding(::int64_t value) {
  _internal_set_interior_padding(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.PaddingConfig.PaddingConfigDimension.interior_padding)
}
inline ::int64_t PaddingConfig_PaddingConfigDimension::_internal_interior_padding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interior_padding_;
}
inline void PaddingConfig_PaddingConfigDimension::_internal_set_interior_padding(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interior_padding_ = value;
}

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

// PaddingConfig

// repeated .xla.PaddingConfig.PaddingConfigDimension dimensions = 1;
inline int PaddingConfig::_internal_dimensions_size() const {
  return _internal_dimensions().size();
}
inline int PaddingConfig::dimensions_size() const {
  return _internal_dimensions_size();
}
inline void PaddingConfig::clear_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimensions_.Clear();
}
inline ::xla::PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL PaddingConfig::mutable_dimensions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.PaddingConfig.dimensions)
  return _internal_mutable_dimensions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>* PROTOBUF_NONNULL PaddingConfig::mutable_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.PaddingConfig.dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dimensions();
}
inline const ::xla::PaddingConfig_PaddingConfigDimension& PaddingConfig::dimensions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.PaddingConfig.dimensions)
  return _internal_dimensions().Get(index);
}
inline ::xla::PaddingConfig_PaddingConfigDimension* PROTOBUF_NONNULL PaddingConfig::add_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::PaddingConfig_PaddingConfigDimension* _add = _internal_mutable_dimensions()->Add();
  // @@protoc_insertion_point(field_add:xla.PaddingConfig.dimensions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>& PaddingConfig::dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.PaddingConfig.dimensions)
  return _internal_dimensions();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>&
PaddingConfig::_internal_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dimensions_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>* PROTOBUF_NONNULL
PaddingConfig::_internal_mutable_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dimensions_;
}

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

// TileProto

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

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

// SplitConfigProto

// int64 dimension = 1;
inline void SplitConfigProto::clear_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t SplitConfigProto::dimension() const {
  // @@protoc_insertion_point(field_get:xla.SplitConfigProto.dimension)
  return _internal_dimension();
}
inline void SplitConfigProto::set_dimension(::int64_t value) {
  _internal_set_dimension(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.SplitConfigProto.dimension)
}
inline ::int64_t SplitConfigProto::_internal_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dimension_;
}
inline void SplitConfigProto::_internal_set_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimension_ = value;
}

// repeated int64 split_indices = 2;
inline int SplitConfigProto::_internal_split_indices_size() const {
  return _internal_split_indices().size();
}
inline int SplitConfigProto::split_indices_size() const {
  return _internal_split_indices_size();
}
inline void SplitConfigProto::clear_split_indices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.split_indices_.Clear();
}
inline ::int64_t SplitConfigProto::split_indices(int index) const {
  // @@protoc_insertion_point(field_get:xla.SplitConfigProto.split_indices)
  return _internal_split_indices().Get(index);
}
inline void SplitConfigProto::set_split_indices(int index, ::int64_t value) {
  _internal_mutable_split_indices()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.SplitConfigProto.split_indices)
}
inline void SplitConfigProto::add_split_indices(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_split_indices()->Add(value);
  // @@protoc_insertion_point(field_add:xla.SplitConfigProto.split_indices)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& SplitConfigProto::split_indices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.SplitConfigProto.split_indices)
  return _internal_split_indices();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL SplitConfigProto::mutable_split_indices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.SplitConfigProto.split_indices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_split_indices();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
SplitConfigProto::_internal_split_indices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.split_indices_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
SplitConfigProto::_internal_mutable_split_indices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.split_indices_;
}

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

// LayoutProto

// repeated int64 minor_to_major = 1;
inline int LayoutProto::_internal_minor_to_major_size() const {
  return _internal_minor_to_major().size();
}
inline int LayoutProto::minor_to_major_size() const {
  return _internal_minor_to_major_size();
}
inline void LayoutProto::clear_minor_to_major() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.minor_to_major_.Clear();
}
inline ::int64_t LayoutProto::minor_to_major(int index) const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.minor_to_major)
  return _internal_minor_to_major().Get(index);
}
inline void LayoutProto::set_minor_to_major(int index, ::int64_t value) {
  _internal_mutable_minor_to_major()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LayoutProto.minor_to_major)
}
inline void LayoutProto::add_minor_to_major(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_minor_to_major()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LayoutProto.minor_to_major)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& LayoutProto::minor_to_major() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.minor_to_major)
  return _internal_minor_to_major();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL LayoutProto::mutable_minor_to_major()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.minor_to_major)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_minor_to_major();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
LayoutProto::_internal_minor_to_major() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.minor_to_major_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_minor_to_major() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.minor_to_major_;
}

// repeated .xla.DimLevelType dim_level_types = 9;
inline int LayoutProto::_internal_dim_level_types_size() const {
  return _internal_dim_level_types().size();
}
inline int LayoutProto::dim_level_types_size() const {
  return _internal_dim_level_types_size();
}
inline void LayoutProto::clear_dim_level_types() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dim_level_types_.Clear();
}
inline ::xla::DimLevelType LayoutProto::dim_level_types(int index) const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.dim_level_types)
  return static_cast<::xla::DimLevelType>(_internal_dim_level_types().Get(index));
}
inline void LayoutProto::set_dim_level_types(int index, ::xla::DimLevelType value) {
  _internal_mutable_dim_level_types()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LayoutProto.dim_level_types)
}
inline void LayoutProto::add_dim_level_types(::xla::DimLevelType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dim_level_types()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LayoutProto.dim_level_types)
}
inline const ::google::protobuf::RepeatedField<int>& LayoutProto::dim_level_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.dim_level_types)
  return _internal_dim_level_types();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL LayoutProto::mutable_dim_level_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.dim_level_types)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dim_level_types();
}
inline const ::google::protobuf::RepeatedField<int>& LayoutProto::_internal_dim_level_types()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dim_level_types_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_dim_level_types() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dim_level_types_;
}

// repeated bool dim_unique = 13;
inline int LayoutProto::_internal_dim_unique_size() const {
  return _internal_dim_unique().size();
}
inline int LayoutProto::dim_unique_size() const {
  return _internal_dim_unique_size();
}
inline void LayoutProto::clear_dim_unique() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dim_unique_.Clear();
}
inline bool LayoutProto::dim_unique(int index) const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.dim_unique)
  return _internal_dim_unique().Get(index);
}
inline void LayoutProto::set_dim_unique(int index, bool value) {
  _internal_mutable_dim_unique()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LayoutProto.dim_unique)
}
inline void LayoutProto::add_dim_unique(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dim_unique()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LayoutProto.dim_unique)
}
inline const ::google::protobuf::RepeatedField<bool>& LayoutProto::dim_unique() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.dim_unique)
  return _internal_dim_unique();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL LayoutProto::mutable_dim_unique()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.dim_unique)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dim_unique();
}
inline const ::google::protobuf::RepeatedField<bool>&
LayoutProto::_internal_dim_unique() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dim_unique_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_dim_unique() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dim_unique_;
}

// repeated bool dim_ordered = 14;
inline int LayoutProto::_internal_dim_ordered_size() const {
  return _internal_dim_ordered().size();
}
inline int LayoutProto::dim_ordered_size() const {
  return _internal_dim_ordered_size();
}
inline void LayoutProto::clear_dim_ordered() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dim_ordered_.Clear();
}
inline bool LayoutProto::dim_ordered(int index) const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.dim_ordered)
  return _internal_dim_ordered().Get(index);
}
inline void LayoutProto::set_dim_ordered(int index, bool value) {
  _internal_mutable_dim_ordered()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LayoutProto.dim_ordered)
}
inline void LayoutProto::add_dim_ordered(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dim_ordered()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LayoutProto.dim_ordered)
}
inline const ::google::protobuf::RepeatedField<bool>& LayoutProto::dim_ordered() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.dim_ordered)
  return _internal_dim_ordered();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL LayoutProto::mutable_dim_ordered()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.dim_ordered)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dim_ordered();
}
inline const ::google::protobuf::RepeatedField<bool>&
LayoutProto::_internal_dim_ordered() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dim_ordered_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_dim_ordered() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dim_ordered_;
}

// repeated .xla.TileProto tiles = 6;
inline int LayoutProto::_internal_tiles_size() const {
  return _internal_tiles().size();
}
inline int LayoutProto::tiles_size() const {
  return _internal_tiles_size();
}
inline void LayoutProto::clear_tiles() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tiles_.Clear();
}
inline ::xla::TileProto* PROTOBUF_NONNULL LayoutProto::mutable_tiles(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.LayoutProto.tiles)
  return _internal_mutable_tiles()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::TileProto>* PROTOBUF_NONNULL LayoutProto::mutable_tiles()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.tiles)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tiles();
}
inline const ::xla::TileProto& LayoutProto::tiles(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.tiles)
  return _internal_tiles().Get(index);
}
inline ::xla::TileProto* PROTOBUF_NONNULL LayoutProto::add_tiles()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::TileProto* _add = _internal_mutable_tiles()->Add();
  // @@protoc_insertion_point(field_add:xla.LayoutProto.tiles)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::TileProto>& LayoutProto::tiles() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.tiles)
  return _internal_tiles();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::TileProto>&
LayoutProto::_internal_tiles() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tiles_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::TileProto>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_tiles() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tiles_;
}

// int64 tail_padding_alignment_in_elements = 16;
inline void LayoutProto::clear_tail_padding_alignment_in_elements() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tail_padding_alignment_in_elements_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline ::int64_t LayoutProto::tail_padding_alignment_in_elements() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.tail_padding_alignment_in_elements)
  return _internal_tail_padding_alignment_in_elements();
}
inline void LayoutProto::set_tail_padding_alignment_in_elements(::int64_t value) {
  _internal_set_tail_padding_alignment_in_elements(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.tail_padding_alignment_in_elements)
}
inline ::int64_t LayoutProto::_internal_tail_padding_alignment_in_elements() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tail_padding_alignment_in_elements_;
}
inline void LayoutProto::_internal_set_tail_padding_alignment_in_elements(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tail_padding_alignment_in_elements_ = value;
}

// int64 element_size_in_bits = 7;
inline void LayoutProto::clear_element_size_in_bits() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_size_in_bits_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t LayoutProto::element_size_in_bits() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.element_size_in_bits)
  return _internal_element_size_in_bits();
}
inline void LayoutProto::set_element_size_in_bits(::int64_t value) {
  _internal_set_element_size_in_bits(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.element_size_in_bits)
}
inline ::int64_t LayoutProto::_internal_element_size_in_bits() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.element_size_in_bits_;
}
inline void LayoutProto::_internal_set_element_size_in_bits(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_size_in_bits_ = value;
}

// int64 memory_space = 8;
inline void LayoutProto::clear_memory_space() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_space_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t LayoutProto::memory_space() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.memory_space)
  return _internal_memory_space();
}
inline void LayoutProto::set_memory_space(::int64_t value) {
  _internal_set_memory_space(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.memory_space)
}
inline ::int64_t LayoutProto::_internal_memory_space() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.memory_space_;
}
inline void LayoutProto::_internal_set_memory_space(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_space_ = value;
}

// .xla.PrimitiveType index_primitive_type = 11;
inline void LayoutProto::clear_index_primitive_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_primitive_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::PrimitiveType LayoutProto::index_primitive_type() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.index_primitive_type)
  return _internal_index_primitive_type();
}
inline void LayoutProto::set_index_primitive_type(::xla::PrimitiveType value) {
  _internal_set_index_primitive_type(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.index_primitive_type)
}
inline ::xla::PrimitiveType LayoutProto::_internal_index_primitive_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PrimitiveType>(_impl_.index_primitive_type_);
}
inline void LayoutProto::_internal_set_index_primitive_type(::xla::PrimitiveType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_primitive_type_ = value;
}

// .xla.PrimitiveType pointer_primitive_type = 12;
inline void LayoutProto::clear_pointer_primitive_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pointer_primitive_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::xla::PrimitiveType LayoutProto::pointer_primitive_type() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.pointer_primitive_type)
  return _internal_pointer_primitive_type();
}
inline void LayoutProto::set_pointer_primitive_type(::xla::PrimitiveType value) {
  _internal_set_pointer_primitive_type(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.pointer_primitive_type)
}
inline ::xla::PrimitiveType LayoutProto::_internal_pointer_primitive_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PrimitiveType>(_impl_.pointer_primitive_type_);
}
inline void LayoutProto::_internal_set_pointer_primitive_type(::xla::PrimitiveType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pointer_primitive_type_ = value;
}

// .xla.ShapeProto physical_shape = 10;
inline bool LayoutProto::has_physical_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.physical_shape_ != nullptr);
  return value;
}
inline void LayoutProto::clear_physical_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.physical_shape_ != nullptr) _impl_.physical_shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::ShapeProto& LayoutProto::_internal_physical_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.physical_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& LayoutProto::physical_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.physical_shape)
  return _internal_physical_shape();
}
inline void LayoutProto::unsafe_arena_set_allocated_physical_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.physical_shape_);
  }
  _impl_.physical_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.LayoutProto.physical_shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE LayoutProto::release_physical_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.physical_shape_;
  _impl_.physical_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 LayoutProto::unsafe_arena_release_physical_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LayoutProto.physical_shape)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.physical_shape_;
  _impl_.physical_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL LayoutProto::_internal_mutable_physical_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.physical_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.physical_shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.physical_shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL LayoutProto::mutable_physical_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_physical_shape();
  // @@protoc_insertion_point(field_mutable:xla.LayoutProto.physical_shape)
  return _msg;
}
inline void LayoutProto::set_allocated_physical_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_.physical_shape_);
  }

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

// int64 dynamic_shape_metadata_prefix_bytes = 15;
inline void LayoutProto::clear_dynamic_shape_metadata_prefix_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dynamic_shape_metadata_prefix_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int64_t LayoutProto::dynamic_shape_metadata_prefix_bytes() const {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.dynamic_shape_metadata_prefix_bytes)
  return _internal_dynamic_shape_metadata_prefix_bytes();
}
inline void LayoutProto::set_dynamic_shape_metadata_prefix_bytes(::int64_t value) {
  _internal_set_dynamic_shape_metadata_prefix_bytes(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.LayoutProto.dynamic_shape_metadata_prefix_bytes)
}
inline ::int64_t LayoutProto::_internal_dynamic_shape_metadata_prefix_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dynamic_shape_metadata_prefix_bytes_;
}
inline void LayoutProto::_internal_set_dynamic_shape_metadata_prefix_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dynamic_shape_metadata_prefix_bytes_ = value;
}

// repeated .xla.SplitConfigProto split_configs = 17;
inline int LayoutProto::_internal_split_configs_size() const {
  return _internal_split_configs().size();
}
inline int LayoutProto::split_configs_size() const {
  return _internal_split_configs_size();
}
inline void LayoutProto::clear_split_configs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.split_configs_.Clear();
}
inline ::xla::SplitConfigProto* PROTOBUF_NONNULL LayoutProto::mutable_split_configs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.LayoutProto.split_configs)
  return _internal_mutable_split_configs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* PROTOBUF_NONNULL LayoutProto::mutable_split_configs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LayoutProto.split_configs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_split_configs();
}
inline const ::xla::SplitConfigProto& LayoutProto::split_configs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LayoutProto.split_configs)
  return _internal_split_configs().Get(index);
}
inline ::xla::SplitConfigProto* PROTOBUF_NONNULL LayoutProto::add_split_configs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SplitConfigProto* _add = _internal_mutable_split_configs()->Add();
  // @@protoc_insertion_point(field_add:xla.LayoutProto.split_configs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>& LayoutProto::split_configs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LayoutProto.split_configs)
  return _internal_split_configs();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>&
LayoutProto::_internal_split_configs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.split_configs_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* PROTOBUF_NONNULL
LayoutProto::_internal_mutable_split_configs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.split_configs_;
}

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

// ShapeProto

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

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

// repeated bool is_dynamic_dimension = 6;
inline int ShapeProto::_internal_is_dynamic_dimension_size() const {
  return _internal_is_dynamic_dimension().size();
}
inline int ShapeProto::is_dynamic_dimension_size() const {
  return _internal_is_dynamic_dimension_size();
}
inline void ShapeProto::clear_is_dynamic_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_dynamic_dimension_.Clear();
}
inline bool ShapeProto::is_dynamic_dimension(int index) const {
  // @@protoc_insertion_point(field_get:xla.ShapeProto.is_dynamic_dimension)
  return _internal_is_dynamic_dimension().Get(index);
}
inline void ShapeProto::set_is_dynamic_dimension(int index, bool value) {
  _internal_mutable_is_dynamic_dimension()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ShapeProto.is_dynamic_dimension)
}
inline void ShapeProto::add_is_dynamic_dimension(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_is_dynamic_dimension()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ShapeProto.is_dynamic_dimension)
}
inline const ::google::protobuf::RepeatedField<bool>& ShapeProto::is_dynamic_dimension() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ShapeProto.is_dynamic_dimension)
  return _internal_is_dynamic_dimension();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL ShapeProto::mutable_is_dynamic_dimension()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ShapeProto.is_dynamic_dimension)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_is_dynamic_dimension();
}
inline const ::google::protobuf::RepeatedField<bool>&
ShapeProto::_internal_is_dynamic_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_dynamic_dimension_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
ShapeProto::_internal_mutable_is_dynamic_dimension() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.is_dynamic_dimension_;
}

// repeated .xla.ShapeProto tuple_shapes = 4;
inline int ShapeProto::_internal_tuple_shapes_size() const {
  return _internal_tuple_shapes().size();
}
inline int ShapeProto::tuple_shapes_size() const {
  return _internal_tuple_shapes_size();
}
inline void ShapeProto::clear_tuple_shapes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_shapes_.Clear();
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ShapeProto::mutable_tuple_shapes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.ShapeProto.tuple_shapes)
  return _internal_mutable_tuple_shapes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL ShapeProto::mutable_tuple_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ShapeProto.tuple_shapes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tuple_shapes();
}
inline const ::xla::ShapeProto& ShapeProto::tuple_shapes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ShapeProto.tuple_shapes)
  return _internal_tuple_shapes().Get(index);
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ShapeProto::add_tuple_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapeProto* _add = _internal_mutable_tuple_shapes()->Add();
  // @@protoc_insertion_point(field_add:xla.ShapeProto.tuple_shapes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& ShapeProto::tuple_shapes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ShapeProto.tuple_shapes)
  return _internal_tuple_shapes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>&
ShapeProto::_internal_tuple_shapes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tuple_shapes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL
ShapeProto::_internal_mutable_tuple_shapes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tuple_shapes_;
}

// .xla.LayoutProto layout = 5;
inline bool ShapeProto::has_layout() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.layout_ != nullptr);
  return value;
}
inline void ShapeProto::clear_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.layout_ != nullptr) _impl_.layout_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::LayoutProto& ShapeProto::_internal_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::LayoutProto* p = _impl_.layout_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::LayoutProto&>(::xla::_LayoutProto_default_instance_);
}
inline const ::xla::LayoutProto& ShapeProto::layout() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ShapeProto.layout)
  return _internal_layout();
}
inline void ShapeProto::unsafe_arena_set_allocated_layout(
    ::xla::LayoutProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.layout_);
  }
  _impl_.layout_ = reinterpret_cast<::xla::LayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ShapeProto.layout)
}
inline ::xla::LayoutProto* PROTOBUF_NULLABLE ShapeProto::release_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LayoutProto* released = _impl_.layout_;
  _impl_.layout_ = 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::LayoutProto* PROTOBUF_NULLABLE ShapeProto::unsafe_arena_release_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ShapeProto.layout)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LayoutProto* temp = _impl_.layout_;
  _impl_.layout_ = nullptr;
  return temp;
}
inline ::xla::LayoutProto* PROTOBUF_NONNULL ShapeProto::_internal_mutable_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.layout_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::LayoutProto>(GetArena());
    _impl_.layout_ = reinterpret_cast<::xla::LayoutProto*>(p);
  }
  return _impl_.layout_;
}
inline ::xla::LayoutProto* PROTOBUF_NONNULL ShapeProto::mutable_layout()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::LayoutProto* _msg = _internal_mutable_layout();
  // @@protoc_insertion_point(field_mutable:xla.ShapeProto.layout)
  return _msg;
}
inline void ShapeProto::set_allocated_layout(::xla::LayoutProto* 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_.layout_);
  }

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

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

// ProgramShapeProto

// repeated .xla.ShapeProto parameters = 1;
inline int ProgramShapeProto::_internal_parameters_size() const {
  return _internal_parameters().size();
}
inline int ProgramShapeProto::parameters_size() const {
  return _internal_parameters_size();
}
inline void ProgramShapeProto::clear_parameters() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameters_.Clear();
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ProgramShapeProto::mutable_parameters(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.ProgramShapeProto.parameters)
  return _internal_mutable_parameters()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL ProgramShapeProto::mutable_parameters()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ProgramShapeProto.parameters)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_parameters();
}
inline const ::xla::ShapeProto& ProgramShapeProto::parameters(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ProgramShapeProto.parameters)
  return _internal_parameters().Get(index);
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ProgramShapeProto::add_parameters()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapeProto* _add = _internal_mutable_parameters()->Add();
  // @@protoc_insertion_point(field_add:xla.ProgramShapeProto.parameters)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& ProgramShapeProto::parameters() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ProgramShapeProto.parameters)
  return _internal_parameters();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>&
ProgramShapeProto::_internal_parameters() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameters_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL
ProgramShapeProto::_internal_mutable_parameters() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.parameters_;
}

// .xla.ShapeProto result = 2;
inline bool ProgramShapeProto::has_result() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_ != nullptr);
  return value;
}
inline void ProgramShapeProto::clear_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_ != nullptr) _impl_.result_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::ShapeProto& ProgramShapeProto::_internal_result() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.result_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& ProgramShapeProto::result() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ProgramShapeProto.result)
  return _internal_result();
}
inline void ProgramShapeProto::unsafe_arena_set_allocated_result(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }
  _impl_.result_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ProgramShapeProto.result)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE ProgramShapeProto::release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* 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::ShapeProto* PROTOBUF_NULLABLE ProgramShapeProto::unsafe_arena_release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ProgramShapeProto.result)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.result_;
  _impl_.result_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ProgramShapeProto::_internal_mutable_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.result_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.result_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL ProgramShapeProto::mutable_result()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_result();
  // @@protoc_insertion_point(field_mutable:xla.ProgramShapeProto.result)
  return _msg;
}
inline void ProgramShapeProto::set_allocated_result(::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_.result_);
  }

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

// repeated string parameter_names = 3;
inline int ProgramShapeProto::_internal_parameter_names_size() const {
  return _internal_parameter_names().size();
}
inline int ProgramShapeProto::parameter_names_size() const {
  return _internal_parameter_names_size();
}
inline void ProgramShapeProto::clear_parameter_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_names_.Clear();
}
inline ::std::string* PROTOBUF_NONNULL ProgramShapeProto::add_parameter_names()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s = _internal_mutable_parameter_names()->Add();
  // @@protoc_insertion_point(field_add_mutable:xla.ProgramShapeProto.parameter_names)
  return _s;
}
inline const ::std::string& ProgramShapeProto::parameter_names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ProgramShapeProto.parameter_names)
  return _internal_parameter_names().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL ProgramShapeProto::mutable_parameter_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.ProgramShapeProto.parameter_names)
  return _internal_mutable_parameter_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ProgramShapeProto::set_parameter_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_parameter_names()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:xla.ProgramShapeProto.parameter_names)
}
template <typename Arg_, typename... Args_>
inline void ProgramShapeProto::add_parameter_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_parameter_names(),
                               ::std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:xla.ProgramShapeProto.parameter_names)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& ProgramShapeProto::parameter_names()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ProgramShapeProto.parameter_names)
  return _internal_parameter_names();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ProgramShapeProto::mutable_parameter_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ProgramShapeProto.parameter_names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_parameter_names();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
ProgramShapeProto::_internal_parameter_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_names_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ProgramShapeProto::_internal_mutable_parameter_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.parameter_names_;
}

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

// ComputationStats

// double flop_count = 1;
inline void ComputationStats::clear_flop_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flop_count_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline double ComputationStats::flop_count() const {
  // @@protoc_insertion_point(field_get:xla.ComputationStats.flop_count)
  return _internal_flop_count();
}
inline void ComputationStats::set_flop_count(double value) {
  _internal_set_flop_count(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ComputationStats.flop_count)
}
inline double ComputationStats::_internal_flop_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flop_count_;
}
inline void ComputationStats::_internal_set_flop_count(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flop_count_ = value;
}

// double transcendental_count = 2;
inline void ComputationStats::clear_transcendental_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transcendental_count_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline double ComputationStats::transcendental_count() const {
  // @@protoc_insertion_point(field_get:xla.ComputationStats.transcendental_count)
  return _internal_transcendental_count();
}
inline void ComputationStats::set_transcendental_count(double value) {
  _internal_set_transcendental_count(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ComputationStats.transcendental_count)
}
inline double ComputationStats::_internal_transcendental_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transcendental_count_;
}
inline void ComputationStats::_internal_set_transcendental_count(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transcendental_count_ = value;
}

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

// OpMetadata_ProfileInfo

// repeated .xla.ProfileType profile_type = 1;
inline int OpMetadata_ProfileInfo::_internal_profile_type_size() const {
  return _internal_profile_type().size();
}
inline int OpMetadata_ProfileInfo::profile_type_size() const {
  return _internal_profile_type_size();
}
inline void OpMetadata_ProfileInfo::clear_profile_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_type_.Clear();
}
inline ::xla::ProfileType OpMetadata_ProfileInfo::profile_type(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.ProfileInfo.profile_type)
  return static_cast<::xla::ProfileType>(_internal_profile_type().Get(index));
}
inline void OpMetadata_ProfileInfo::set_profile_type(int index, ::xla::ProfileType value) {
  _internal_mutable_profile_type()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpMetadata.ProfileInfo.profile_type)
}
inline void OpMetadata_ProfileInfo::add_profile_type(::xla::ProfileType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_profile_type()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpMetadata.ProfileInfo.profile_type)
}
inline const ::google::protobuf::RepeatedField<int>& OpMetadata_ProfileInfo::profile_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpMetadata.ProfileInfo.profile_type)
  return _internal_profile_type();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL OpMetadata_ProfileInfo::mutable_profile_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpMetadata.ProfileInfo.profile_type)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_profile_type();
}
inline const ::google::protobuf::RepeatedField<int>& OpMetadata_ProfileInfo::_internal_profile_type()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_type_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
OpMetadata_ProfileInfo::_internal_mutable_profile_type() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.profile_type_;
}

// double relative_speedup = 2;
inline void OpMetadata_ProfileInfo::clear_relative_speedup() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.relative_speedup_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline double OpMetadata_ProfileInfo::relative_speedup() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.ProfileInfo.relative_speedup)
  return _internal_relative_speedup();
}
inline void OpMetadata_ProfileInfo::set_relative_speedup(double value) {
  _internal_set_relative_speedup(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.ProfileInfo.relative_speedup)
}
inline double OpMetadata_ProfileInfo::_internal_relative_speedup() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.relative_speedup_;
}
inline void OpMetadata_ProfileInfo::_internal_set_relative_speedup(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.relative_speedup_ = value;
}

// .xla.ProfileSource profile_source = 3;
inline void OpMetadata_ProfileInfo::clear_profile_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_source_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::xla::ProfileSource OpMetadata_ProfileInfo::profile_source() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.ProfileInfo.profile_source)
  return _internal_profile_source();
}
inline void OpMetadata_ProfileInfo::set_profile_source(::xla::ProfileSource value) {
  _internal_set_profile_source(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.ProfileInfo.profile_source)
}
inline ::xla::ProfileSource OpMetadata_ProfileInfo::_internal_profile_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ProfileSource>(_impl_.profile_source_);
}
inline void OpMetadata_ProfileInfo::_internal_set_profile_source(::xla::ProfileSource value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_source_ = value;
}

// .xla.CompilationEvent compilation_event = 4;
inline void OpMetadata_ProfileInfo::clear_compilation_event() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_event_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::xla::CompilationEvent OpMetadata_ProfileInfo::compilation_event() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.ProfileInfo.compilation_event)
  return _internal_compilation_event();
}
inline void OpMetadata_ProfileInfo::set_compilation_event(::xla::CompilationEvent value) {
  _internal_set_compilation_event(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.ProfileInfo.compilation_event)
}
inline ::xla::CompilationEvent OpMetadata_ProfileInfo::_internal_compilation_event() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CompilationEvent>(_impl_.compilation_event_);
}
inline void OpMetadata_ProfileInfo::_internal_set_compilation_event(::xla::CompilationEvent value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_event_ = value;
}

// .xla.ProfileGenerationStrategy profile_generation_strategy = 5;
inline void OpMetadata_ProfileInfo::clear_profile_generation_strategy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_generation_strategy_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::ProfileGenerationStrategy OpMetadata_ProfileInfo::profile_generation_strategy() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.ProfileInfo.profile_generation_strategy)
  return _internal_profile_generation_strategy();
}
inline void OpMetadata_ProfileInfo::set_profile_generation_strategy(::xla::ProfileGenerationStrategy value) {
  _internal_set_profile_generation_strategy(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.ProfileInfo.profile_generation_strategy)
}
inline ::xla::ProfileGenerationStrategy OpMetadata_ProfileInfo::_internal_profile_generation_strategy() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ProfileGenerationStrategy>(_impl_.profile_generation_strategy_);
}
inline void OpMetadata_ProfileInfo::_internal_set_profile_generation_strategy(::xla::ProfileGenerationStrategy value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_generation_strategy_ = value;
}

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

// OpMetadata

// string op_type = 1;
inline void OpMetadata::clear_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_type_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& OpMetadata::op_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.op_type)
  return _internal_op_type();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpMetadata::set_op_type(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.op_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.op_type)
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::mutable_op_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_op_type();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.op_type)
  return _s;
}
inline const ::std::string& OpMetadata::_internal_op_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.op_type_.Get();
}
inline void OpMetadata::_internal_set_op_type(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.op_type_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::_internal_mutable_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.op_type_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpMetadata::release_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.op_type)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.op_type_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.op_type_.Set("", GetArena());
  }
  return released;
}
inline void OpMetadata::set_allocated_op_type(::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_.op_type_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.op_type_.IsDefault()) {
    _impl_.op_type_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.op_type)
}

// string op_name = 2;
inline void OpMetadata::clear_op_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::std::string& OpMetadata::op_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.op_name)
  return _internal_op_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpMetadata::set_op_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.op_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.op_name)
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::mutable_op_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_op_name();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.op_name)
  return _s;
}
inline const ::std::string& OpMetadata::_internal_op_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.op_name_.Get();
}
inline void OpMetadata::_internal_set_op_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.op_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::_internal_mutable_op_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.op_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpMetadata::release_op_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.op_name)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.op_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.op_name_.Set("", GetArena());
  }
  return released;
}
inline void OpMetadata::set_allocated_op_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_.op_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.op_name_.IsDefault()) {
    _impl_.op_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.op_name)
}

// string source_file = 3;
inline void OpMetadata::clear_source_file() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_file_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::std::string& OpMetadata::source_file() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.source_file)
  return _internal_source_file();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpMetadata::set_source_file(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.source_file_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_file)
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::mutable_source_file()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_source_file();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.source_file)
  return _s;
}
inline const ::std::string& OpMetadata::_internal_source_file() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_file_.Get();
}
inline void OpMetadata::_internal_set_source_file(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.source_file_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::_internal_mutable_source_file() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.source_file_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpMetadata::release_source_file() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.source_file)
  if ((_impl_._has_bits_[0] & 0x00000004u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* released = _impl_.source_file_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.source_file_.Set("", GetArena());
  }
  return released;
}
inline void OpMetadata::set_allocated_source_file(::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_.source_file_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.source_file_.IsDefault()) {
    _impl_.source_file_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.source_file)
}

// int32 source_line = 4;
inline void OpMetadata::clear_source_line() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_line_ = 0;
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline ::int32_t OpMetadata::source_line() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.source_line)
  return _internal_source_line();
}
inline void OpMetadata::set_source_line(::int32_t value) {
  _internal_set_source_line(value);
  _impl_._has_bits_[0] |= 0x00000100u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_line)
}
inline ::int32_t OpMetadata::_internal_source_line() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_line_;
}
inline void OpMetadata::_internal_set_source_line(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_line_ = value;
}

// int32 source_end_line = 17;
inline void OpMetadata::clear_source_end_line() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_end_line_ = 0;
  _impl_._has_bits_[0] &= ~0x00000400u;
}
inline ::int32_t OpMetadata::source_end_line() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.source_end_line)
  return _internal_source_end_line();
}
inline void OpMetadata::set_source_end_line(::int32_t value) {
  _internal_set_source_end_line(value);
  _impl_._has_bits_[0] |= 0x00000400u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_end_line)
}
inline ::int32_t OpMetadata::_internal_source_end_line() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_end_line_;
}
inline void OpMetadata::_internal_set_source_end_line(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_end_line_ = value;
}

// int32 source_column = 18;
inline void OpMetadata::clear_source_column() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_column_ = 0;
  _impl_._has_bits_[0] &= ~0x00000800u;
}
inline ::int32_t OpMetadata::source_column() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.source_column)
  return _internal_source_column();
}
inline void OpMetadata::set_source_column(::int32_t value) {
  _internal_set_source_column(value);
  _impl_._has_bits_[0] |= 0x00000800u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_column)
}
inline ::int32_t OpMetadata::_internal_source_column() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_column_;
}
inline void OpMetadata::_internal_set_source_column(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_column_ = value;
}

// int32 source_end_column = 19;
inline void OpMetadata::clear_source_end_column() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_end_column_ = 0;
  _impl_._has_bits_[0] &= ~0x00001000u;
}
inline ::int32_t OpMetadata::source_end_column() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.source_end_column)
  return _internal_source_end_column();
}
inline void OpMetadata::set_source_end_column(::int32_t value) {
  _internal_set_source_end_column(value);
  _impl_._has_bits_[0] |= 0x00001000u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_end_column)
}
inline ::int32_t OpMetadata::_internal_source_end_column() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_end_column_;
}
inline void OpMetadata::_internal_set_source_end_column(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_end_column_ = value;
}

// repeated .xla.ProfileType profile_type = 5 [deprecated = true];
inline int OpMetadata::_internal_profile_type_size() const {
  return _internal_profile_type().size();
}
inline int OpMetadata::profile_type_size() const {
  return _internal_profile_type_size();
}
inline void OpMetadata::clear_profile_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_type_.Clear();
}
inline ::xla::ProfileType OpMetadata::profile_type(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.profile_type)
  return static_cast<::xla::ProfileType>(_internal_profile_type().Get(index));
}
inline void OpMetadata::set_profile_type(int index, ::xla::ProfileType value) {
  _internal_mutable_profile_type()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpMetadata.profile_type)
}
inline void OpMetadata::add_profile_type(::xla::ProfileType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_profile_type()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpMetadata.profile_type)
}
inline const ::google::protobuf::RepeatedField<int>& OpMetadata::profile_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpMetadata.profile_type)
  return _internal_profile_type();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL OpMetadata::mutable_profile_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpMetadata.profile_type)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_profile_type();
}
inline const ::google::protobuf::RepeatedField<int>& OpMetadata::_internal_profile_type()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_type_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
OpMetadata::_internal_mutable_profile_type() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.profile_type_;
}

// int64 size_of_generated_code_in_bytes = 8;
inline void OpMetadata::clear_size_of_generated_code_in_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_of_generated_code_in_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline ::int64_t OpMetadata::size_of_generated_code_in_bytes() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.size_of_generated_code_in_bytes)
  return _internal_size_of_generated_code_in_bytes();
}
inline void OpMetadata::set_size_of_generated_code_in_bytes(::int64_t value) {
  _internal_set_size_of_generated_code_in_bytes(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.size_of_generated_code_in_bytes)
}
inline ::int64_t OpMetadata::_internal_size_of_generated_code_in_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_of_generated_code_in_bytes_;
}
inline void OpMetadata::_internal_set_size_of_generated_code_in_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_of_generated_code_in_bytes_ = value;
}

// int64 size_of_memory_working_set_in_bytes = 9;
inline void OpMetadata::clear_size_of_memory_working_set_in_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_of_memory_working_set_in_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline ::int64_t OpMetadata::size_of_memory_working_set_in_bytes() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.size_of_memory_working_set_in_bytes)
  return _internal_size_of_memory_working_set_in_bytes();
}
inline void OpMetadata::set_size_of_memory_working_set_in_bytes(::int64_t value) {
  _internal_set_size_of_memory_working_set_in_bytes(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.size_of_memory_working_set_in_bytes)
}
inline ::int64_t OpMetadata::_internal_size_of_memory_working_set_in_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_of_memory_working_set_in_bytes_;
}
inline void OpMetadata::_internal_set_size_of_memory_working_set_in_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_of_memory_working_set_in_bytes_ = value;
}

// .xla.OpMetadata.ProfileInfo profile_info = 10;
inline bool OpMetadata::has_profile_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.profile_info_ != nullptr);
  return value;
}
inline void OpMetadata::clear_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.profile_info_ != nullptr) _impl_.profile_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const ::xla::OpMetadata_ProfileInfo& OpMetadata::_internal_profile_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OpMetadata_ProfileInfo* p = _impl_.profile_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OpMetadata_ProfileInfo&>(::xla::_OpMetadata_ProfileInfo_default_instance_);
}
inline const ::xla::OpMetadata_ProfileInfo& OpMetadata::profile_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.profile_info)
  return _internal_profile_info();
}
inline void OpMetadata::unsafe_arena_set_allocated_profile_info(
    ::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.profile_info_);
  }
  _impl_.profile_info_ = reinterpret_cast<::xla::OpMetadata_ProfileInfo*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OpMetadata.profile_info)
}
inline ::xla::OpMetadata_ProfileInfo* PROTOBUF_NULLABLE OpMetadata::release_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::OpMetadata_ProfileInfo* released = _impl_.profile_info_;
  _impl_.profile_info_ = 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_ProfileInfo* PROTOBUF_NULLABLE OpMetadata::unsafe_arena_release_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.profile_info)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::OpMetadata_ProfileInfo* temp = _impl_.profile_info_;
  _impl_.profile_info_ = nullptr;
  return temp;
}
inline ::xla::OpMetadata_ProfileInfo* PROTOBUF_NONNULL OpMetadata::_internal_mutable_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.profile_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OpMetadata_ProfileInfo>(GetArena());
    _impl_.profile_info_ = reinterpret_cast<::xla::OpMetadata_ProfileInfo*>(p);
  }
  return _impl_.profile_info_;
}
inline ::xla::OpMetadata_ProfileInfo* PROTOBUF_NONNULL OpMetadata::mutable_profile_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::OpMetadata_ProfileInfo* _msg = _internal_mutable_profile_info();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.profile_info)
  return _msg;
}
inline void OpMetadata::set_allocated_profile_info(::xla::OpMetadata_ProfileInfo* 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_.profile_info_);
  }

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

  _impl_.profile_info_ = reinterpret_cast<::xla::OpMetadata_ProfileInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.profile_info)
}

// string deduplicated_name = 12;
inline void OpMetadata::clear_deduplicated_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicated_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const ::std::string& OpMetadata::deduplicated_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.deduplicated_name)
  return _internal_deduplicated_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpMetadata::set_deduplicated_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.deduplicated_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.deduplicated_name)
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::mutable_deduplicated_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_deduplicated_name();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.deduplicated_name)
  return _s;
}
inline const ::std::string& OpMetadata::_internal_deduplicated_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.deduplicated_name_.Get();
}
inline void OpMetadata::_internal_set_deduplicated_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.deduplicated_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::_internal_mutable_deduplicated_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  return _impl_.deduplicated_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpMetadata::release_deduplicated_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.deduplicated_name)
  if ((_impl_._has_bits_[0] & 0x00000008u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000008u;
  auto* released = _impl_.deduplicated_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.deduplicated_name_.Set("", GetArena());
  }
  return released;
}
inline void OpMetadata::set_allocated_deduplicated_name(::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_.deduplicated_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.deduplicated_name_.IsDefault()) {
    _impl_.deduplicated_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.deduplicated_name)
}

// int32 stack_frame_id = 15;
inline void OpMetadata::clear_stack_frame_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stack_frame_id_ = 0;
  _impl_._has_bits_[0] &= ~0x00000200u;
}
inline ::int32_t OpMetadata::stack_frame_id() const {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.stack_frame_id)
  return _internal_stack_frame_id();
}
inline void OpMetadata::set_stack_frame_id(::int32_t value) {
  _internal_set_stack_frame_id(value);
  _impl_._has_bits_[0] |= 0x00000200u;
  // @@protoc_insertion_point(field_set:xla.OpMetadata.stack_frame_id)
}
inline ::int32_t OpMetadata::_internal_stack_frame_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stack_frame_id_;
}
inline void OpMetadata::_internal_set_stack_frame_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stack_frame_id_ = value;
}

// string scheduling_name = 16;
inline void OpMetadata::clear_scheduling_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scheduling_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const ::std::string& OpMetadata::scheduling_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpMetadata.scheduling_name)
  return _internal_scheduling_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpMetadata::set_scheduling_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.scheduling_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.scheduling_name)
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::mutable_scheduling_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_scheduling_name();
  // @@protoc_insertion_point(field_mutable:xla.OpMetadata.scheduling_name)
  return _s;
}
inline const ::std::string& OpMetadata::_internal_scheduling_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.scheduling_name_.Get();
}
inline void OpMetadata::_internal_set_scheduling_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.scheduling_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpMetadata::_internal_mutable_scheduling_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  return _impl_.scheduling_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpMetadata::release_scheduling_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.scheduling_name)
  if ((_impl_._has_bits_[0] & 0x00000010u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000010u;
  auto* released = _impl_.scheduling_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.scheduling_name_.Set("", GetArena());
  }
  return released;
}
inline void OpMetadata::set_allocated_scheduling_name(::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_.scheduling_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.scheduling_name_.IsDefault()) {
    _impl_.scheduling_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OpMetadata.scheduling_name)
}

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

// ExecutionProfile

// bool compilation_cache_hit = 1;
inline void ExecutionProfile::clear_compilation_cache_hit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_cache_hit_ = false;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline bool ExecutionProfile::compilation_cache_hit() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.compilation_cache_hit)
  return _internal_compilation_cache_hit();
}
inline void ExecutionProfile::set_compilation_cache_hit(bool value) {
  _internal_set_compilation_cache_hit(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.compilation_cache_hit)
}
inline bool ExecutionProfile::_internal_compilation_cache_hit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compilation_cache_hit_;
}
inline void ExecutionProfile::_internal_set_compilation_cache_hit(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compilation_cache_hit_ = value;
}

// int64 compile_time_ms = 2;
inline void ExecutionProfile::clear_compile_time_ms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compile_time_ms_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t ExecutionProfile::compile_time_ms() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.compile_time_ms)
  return _internal_compile_time_ms();
}
inline void ExecutionProfile::set_compile_time_ms(::int64_t value) {
  _internal_set_compile_time_ms(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.compile_time_ms)
}
inline ::int64_t ExecutionProfile::_internal_compile_time_ms() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compile_time_ms_;
}
inline void ExecutionProfile::_internal_set_compile_time_ms(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compile_time_ms_ = value;
}

// int64 compute_cycle_count = 3;
inline void ExecutionProfile::clear_compute_cycle_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_cycle_count_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t ExecutionProfile::compute_cycle_count() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.compute_cycle_count)
  return _internal_compute_cycle_count();
}
inline void ExecutionProfile::set_compute_cycle_count(::int64_t value) {
  _internal_set_compute_cycle_count(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.compute_cycle_count)
}
inline ::int64_t ExecutionProfile::_internal_compute_cycle_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compute_cycle_count_;
}
inline void ExecutionProfile::_internal_set_compute_cycle_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_cycle_count_ = value;
}

// int64 compute_time_ns = 4;
inline void ExecutionProfile::clear_compute_time_ns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_time_ns_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t ExecutionProfile::compute_time_ns() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.compute_time_ns)
  return _internal_compute_time_ns();
}
inline void ExecutionProfile::set_compute_time_ns(::int64_t value) {
  _internal_set_compute_time_ns(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.compute_time_ns)
}
inline ::int64_t ExecutionProfile::_internal_compute_time_ns() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compute_time_ns_;
}
inline void ExecutionProfile::_internal_set_compute_time_ns(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_time_ns_ = value;
}

// int64 compute_and_transfer_time_ns = 5;
inline void ExecutionProfile::clear_compute_and_transfer_time_ns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_and_transfer_time_ns_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t ExecutionProfile::compute_and_transfer_time_ns() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.compute_and_transfer_time_ns)
  return _internal_compute_and_transfer_time_ns();
}
inline void ExecutionProfile::set_compute_and_transfer_time_ns(::int64_t value) {
  _internal_set_compute_and_transfer_time_ns(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.compute_and_transfer_time_ns)
}
inline ::int64_t ExecutionProfile::_internal_compute_and_transfer_time_ns() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compute_and_transfer_time_ns_;
}
inline void ExecutionProfile::_internal_set_compute_and_transfer_time_ns(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compute_and_transfer_time_ns_ = value;
}

// int64 executable_size_in_bytes = 6;
inline void ExecutionProfile::clear_executable_size_in_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.executable_size_in_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t ExecutionProfile::executable_size_in_bytes() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.executable_size_in_bytes)
  return _internal_executable_size_in_bytes();
}
inline void ExecutionProfile::set_executable_size_in_bytes(::int64_t value) {
  _internal_set_executable_size_in_bytes(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.executable_size_in_bytes)
}
inline ::int64_t ExecutionProfile::_internal_executable_size_in_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.executable_size_in_bytes_;
}
inline void ExecutionProfile::_internal_set_executable_size_in_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.executable_size_in_bytes_ = value;
}

// bool profile_cache_hit = 7;
inline void ExecutionProfile::clear_profile_cache_hit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_cache_hit_ = false;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline bool ExecutionProfile::profile_cache_hit() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.profile_cache_hit)
  return _internal_profile_cache_hit();
}
inline void ExecutionProfile::set_profile_cache_hit(bool value) {
  _internal_set_profile_cache_hit(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.profile_cache_hit)
}
inline bool ExecutionProfile::_internal_profile_cache_hit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_cache_hit_;
}
inline void ExecutionProfile::_internal_set_profile_cache_hit(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_cache_hit_ = value;
}

// bool warmup_run_executed = 8;
inline void ExecutionProfile::clear_warmup_run_executed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.warmup_run_executed_ = false;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline bool ExecutionProfile::warmup_run_executed() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionProfile.warmup_run_executed)
  return _internal_warmup_run_executed();
}
inline void ExecutionProfile::set_warmup_run_executed(bool value) {
  _internal_set_warmup_run_executed(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:xla.ExecutionProfile.warmup_run_executed)
}
inline bool ExecutionProfile::_internal_warmup_run_executed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.warmup_run_executed_;
}
inline void ExecutionProfile::_internal_set_warmup_run_executed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.warmup_run_executed_ = value;
}

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

// ExecutionHandle

// int64 handle = 1;
inline void ExecutionHandle::clear_handle() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t ExecutionHandle::handle() const {
  // @@protoc_insertion_point(field_get:xla.ExecutionHandle.handle)
  return _internal_handle();
}
inline void ExecutionHandle::set_handle(::int64_t value) {
  _internal_set_handle(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ExecutionHandle.handle)
}
inline ::int64_t ExecutionHandle::_internal_handle() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.handle_;
}
inline void ExecutionHandle::_internal_set_handle(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = value;
}

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

// GlobalDataHandle

// int64 handle = 1;
inline void GlobalDataHandle::clear_handle() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t GlobalDataHandle::handle() const {
  // @@protoc_insertion_point(field_get:xla.GlobalDataHandle.handle)
  return _internal_handle();
}
inline void GlobalDataHandle::set_handle(::int64_t value) {
  _internal_set_handle(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.GlobalDataHandle.handle)
}
inline ::int64_t GlobalDataHandle::_internal_handle() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.handle_;
}
inline void GlobalDataHandle::_internal_set_handle(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = value;
}

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

// DeviceHandle

// int64 handle = 1;
inline void DeviceHandle::clear_handle() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t DeviceHandle::handle() const {
  // @@protoc_insertion_point(field_get:xla.DeviceHandle.handle)
  return _internal_handle();
}
inline void DeviceHandle::set_handle(::int64_t value) {
  _internal_set_handle(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.DeviceHandle.handle)
}
inline ::int64_t DeviceHandle::_internal_handle() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.handle_;
}
inline void DeviceHandle::_internal_set_handle(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = value;
}

// int64 device_count = 2;
inline void DeviceHandle::clear_device_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_count_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t DeviceHandle::device_count() const {
  // @@protoc_insertion_point(field_get:xla.DeviceHandle.device_count)
  return _internal_device_count();
}
inline void DeviceHandle::set_device_count(::int64_t value) {
  _internal_set_device_count(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.DeviceHandle.device_count)
}
inline ::int64_t DeviceHandle::_internal_device_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_count_;
}
inline void DeviceHandle::_internal_set_device_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_count_ = value;
}

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

// ChannelHandle

// int64 handle = 1;
inline void ChannelHandle::clear_handle() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t ChannelHandle::handle() const {
  // @@protoc_insertion_point(field_get:xla.ChannelHandle.handle)
  return _internal_handle();
}
inline void ChannelHandle::set_handle(::int64_t value) {
  _internal_set_handle(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ChannelHandle.handle)
}
inline ::int64_t ChannelHandle::_internal_handle() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.handle_;
}
inline void ChannelHandle::_internal_set_handle(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.handle_ = value;
}

// .xla.ChannelHandle.ChannelType type = 2;
inline void ChannelHandle::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::xla::ChannelHandle_ChannelType ChannelHandle::type() const {
  // @@protoc_insertion_point(field_get:xla.ChannelHandle.type)
  return _internal_type();
}
inline void ChannelHandle::set_type(::xla::ChannelHandle_ChannelType value) {
  _internal_set_type(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ChannelHandle.type)
}
inline ::xla::ChannelHandle_ChannelType ChannelHandle::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ChannelHandle_ChannelType>(_impl_.type_);
}
inline void ChannelHandle::_internal_set_type(::xla::ChannelHandle_ChannelType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

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

// DeviceAssignmentProto_ComputationDevice

// repeated int64 replica_device_ids = 1;
inline int DeviceAssignmentProto_ComputationDevice::_internal_replica_device_ids_size() const {
  return _internal_replica_device_ids().size();
}
inline int DeviceAssignmentProto_ComputationDevice::replica_device_ids_size() const {
  return _internal_replica_device_ids_size();
}
inline void DeviceAssignmentProto_ComputationDevice::clear_replica_device_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replica_device_ids_.Clear();
}
inline ::int64_t DeviceAssignmentProto_ComputationDevice::replica_device_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.DeviceAssignmentProto.ComputationDevice.replica_device_ids)
  return _internal_replica_device_ids().Get(index);
}
inline void DeviceAssignmentProto_ComputationDevice::set_replica_device_ids(int index, ::int64_t value) {
  _internal_mutable_replica_device_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.DeviceAssignmentProto.ComputationDevice.replica_device_ids)
}
inline void DeviceAssignmentProto_ComputationDevice::add_replica_device_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_replica_device_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.DeviceAssignmentProto.ComputationDevice.replica_device_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DeviceAssignmentProto_ComputationDevice::replica_device_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DeviceAssignmentProto.ComputationDevice.replica_device_ids)
  return _internal_replica_device_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DeviceAssignmentProto_ComputationDevice::mutable_replica_device_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DeviceAssignmentProto.ComputationDevice.replica_device_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replica_device_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DeviceAssignmentProto_ComputationDevice::_internal_replica_device_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_device_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DeviceAssignmentProto_ComputationDevice::_internal_mutable_replica_device_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_device_ids_;
}

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

// DeviceAssignmentProto

// int32 replica_count = 1;
inline void DeviceAssignmentProto::clear_replica_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replica_count_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int32_t DeviceAssignmentProto::replica_count() const {
  // @@protoc_insertion_point(field_get:xla.DeviceAssignmentProto.replica_count)
  return _internal_replica_count();
}
inline void DeviceAssignmentProto::set_replica_count(::int32_t value) {
  _internal_set_replica_count(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.DeviceAssignmentProto.replica_count)
}
inline ::int32_t DeviceAssignmentProto::_internal_replica_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_count_;
}
inline void DeviceAssignmentProto::_internal_set_replica_count(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replica_count_ = value;
}

// int32 computation_count = 2;
inline void DeviceAssignmentProto::clear_computation_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_count_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int32_t DeviceAssignmentProto::computation_count() const {
  // @@protoc_insertion_point(field_get:xla.DeviceAssignmentProto.computation_count)
  return _internal_computation_count();
}
inline void DeviceAssignmentProto::set_computation_count(::int32_t value) {
  _internal_set_computation_count(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.DeviceAssignmentProto.computation_count)
}
inline ::int32_t DeviceAssignmentProto::_internal_computation_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.computation_count_;
}
inline void DeviceAssignmentProto::_internal_set_computation_count(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_count_ = value;
}

// repeated .xla.DeviceAssignmentProto.ComputationDevice computation_devices = 3;
inline int DeviceAssignmentProto::_internal_computation_devices_size() const {
  return _internal_computation_devices().size();
}
inline int DeviceAssignmentProto::computation_devices_size() const {
  return _internal_computation_devices_size();
}
inline void DeviceAssignmentProto::clear_computation_devices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.computation_devices_.Clear();
}
inline ::xla::DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL DeviceAssignmentProto::mutable_computation_devices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.DeviceAssignmentProto.computation_devices)
  return _internal_mutable_computation_devices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>* PROTOBUF_NONNULL DeviceAssignmentProto::mutable_computation_devices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DeviceAssignmentProto.computation_devices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_computation_devices();
}
inline const ::xla::DeviceAssignmentProto_ComputationDevice& DeviceAssignmentProto::computation_devices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.DeviceAssignmentProto.computation_devices)
  return _internal_computation_devices().Get(index);
}
inline ::xla::DeviceAssignmentProto_ComputationDevice* PROTOBUF_NONNULL DeviceAssignmentProto::add_computation_devices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::DeviceAssignmentProto_ComputationDevice* _add = _internal_mutable_computation_devices()->Add();
  // @@protoc_insertion_point(field_add:xla.DeviceAssignmentProto.computation_devices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>& DeviceAssignmentProto::computation_devices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DeviceAssignmentProto.computation_devices)
  return _internal_computation_devices();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>&
DeviceAssignmentProto::_internal_computation_devices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.computation_devices_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>* PROTOBUF_NONNULL
DeviceAssignmentProto::_internal_mutable_computation_devices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.computation_devices_;
}

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

// LiteralProto

// .xla.ShapeProto shape = 1;
inline bool LiteralProto::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00200000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline void LiteralProto::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ != nullptr) _impl_.shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00200000u;
}
inline const ::xla::ShapeProto& LiteralProto::_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& LiteralProto::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.shape)
  return _internal_shape();
}
inline void LiteralProto::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] |= 0x00200000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00200000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.LiteralProto.shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE LiteralProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00200000u;
  ::xla::ShapeProto* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL LiteralProto::_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 LiteralProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00200000u;
  ::xla::ShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.shape)
  return _msg;
}
inline void LiteralProto::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 = 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_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.shape)
}

// repeated bool preds = 2;
inline int LiteralProto::_internal_preds_size() const {
  return _internal_preds().size();
}
inline int LiteralProto::preds_size() const {
  return _internal_preds_size();
}
inline void LiteralProto::clear_preds() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.preds_.Clear();
}
inline bool LiteralProto::preds(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.preds)
  return _internal_preds().Get(index);
}
inline void LiteralProto::set_preds(int index, bool value) {
  _internal_mutable_preds()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.preds)
}
inline void LiteralProto::add_preds(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_preds()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.preds)
}
inline const ::google::protobuf::RepeatedField<bool>& LiteralProto::preds() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.preds)
  return _internal_preds();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL LiteralProto::mutable_preds()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.preds)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_preds();
}
inline const ::google::protobuf::RepeatedField<bool>&
LiteralProto::_internal_preds() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.preds_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_preds() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.preds_;
}

// bytes s1s = 30;
inline void LiteralProto::clear_s1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s1s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00020000u;
}
inline const ::std::string& LiteralProto::s1s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s1s)
  return _internal_s1s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s1s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00020000u;
  _impl_.s1s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s1s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_s1s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_s1s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.s1s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_s1s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s1s_.Get();
}
inline void LiteralProto::_internal_set_s1s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00020000u;
  _impl_.s1s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_s1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00020000u;
  return _impl_.s1s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_s1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s1s)
  if ((_impl_._has_bits_[0] & 0x00020000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00020000u;
  auto* released = _impl_.s1s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.s1s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_s1s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00020000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00020000u;
  }
  _impl_.s1s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.s1s_.IsDefault()) {
    _impl_.s1s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.s1s)
}

// bytes s2s = 26;
inline void LiteralProto::clear_s2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s2s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00002000u;
}
inline const ::std::string& LiteralProto::s2s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s2s)
  return _internal_s2s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s2s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00002000u;
  _impl_.s2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s2s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_s2s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_s2s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.s2s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_s2s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s2s_.Get();
}
inline void LiteralProto::_internal_set_s2s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00002000u;
  _impl_.s2s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_s2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00002000u;
  return _impl_.s2s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_s2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s2s)
  if ((_impl_._has_bits_[0] & 0x00002000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00002000u;
  auto* released = _impl_.s2s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.s2s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_s2s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00002000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00002000u;
  }
  _impl_.s2s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.s2s_.IsDefault()) {
    _impl_.s2s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.s2s)
}

// bytes s4s = 21;
inline void LiteralProto::clear_s4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s4s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline const ::std::string& LiteralProto::s4s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s4s)
  return _internal_s4s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s4s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000100u;
  _impl_.s4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s4s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_s4s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_s4s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.s4s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_s4s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s4s_.Get();
}
inline void LiteralProto::_internal_set_s4s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000100u;
  _impl_.s4s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_s4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000100u;
  return _impl_.s4s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_s4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s4s)
  if ((_impl_._has_bits_[0] & 0x00000100u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000100u;
  auto* released = _impl_.s4s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.s4s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_s4s(::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_.s4s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.s4s_.IsDefault()) {
    _impl_.s4s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.s4s)
}

// bytes s8s = 15;
inline void LiteralProto::clear_s8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s8s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const ::std::string& LiteralProto::s8s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s8s)
  return _internal_s8s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s8s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.s8s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s8s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_s8s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_s8s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.s8s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_s8s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s8s_.Get();
}
inline void LiteralProto::_internal_set_s8s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.s8s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_s8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000008u;
  return _impl_.s8s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_s8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s8s)
  if ((_impl_._has_bits_[0] & 0x00000008u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000008u;
  auto* released = _impl_.s8s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.s8s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_s8s(::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_.s8s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.s8s_.IsDefault()) {
    _impl_.s8s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.s8s)
}

// bytes u1s = 31;
inline void LiteralProto::clear_u1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u1s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00040000u;
}
inline const ::std::string& LiteralProto::u1s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u1s)
  return _internal_u1s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u1s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00040000u;
  _impl_.u1s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u1s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_u1s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_u1s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.u1s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_u1s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u1s_.Get();
}
inline void LiteralProto::_internal_set_u1s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00040000u;
  _impl_.u1s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_u1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00040000u;
  return _impl_.u1s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_u1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u1s)
  if ((_impl_._has_bits_[0] & 0x00040000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00040000u;
  auto* released = _impl_.u1s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.u1s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_u1s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00040000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00040000u;
  }
  _impl_.u1s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.u1s_.IsDefault()) {
    _impl_.u1s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.u1s)
}

// bytes u2s = 27;
inline void LiteralProto::clear_u2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u2s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00004000u;
}
inline const ::std::string& LiteralProto::u2s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u2s)
  return _internal_u2s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u2s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00004000u;
  _impl_.u2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u2s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_u2s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_u2s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.u2s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_u2s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u2s_.Get();
}
inline void LiteralProto::_internal_set_u2s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00004000u;
  _impl_.u2s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_u2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00004000u;
  return _impl_.u2s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_u2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u2s)
  if ((_impl_._has_bits_[0] & 0x00004000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00004000u;
  auto* released = _impl_.u2s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.u2s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_u2s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00004000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00004000u;
  }
  _impl_.u2s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.u2s_.IsDefault()) {
    _impl_.u2s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.u2s)
}

// bytes u4s = 22;
inline void LiteralProto::clear_u4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u4s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000200u;
}
inline const ::std::string& LiteralProto::u4s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u4s)
  return _internal_u4s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u4s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000200u;
  _impl_.u4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u4s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_u4s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_u4s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.u4s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_u4s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u4s_.Get();
}
inline void LiteralProto::_internal_set_u4s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000200u;
  _impl_.u4s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_u4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000200u;
  return _impl_.u4s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_u4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u4s)
  if ((_impl_._has_bits_[0] & 0x00000200u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000200u;
  auto* released = _impl_.u4s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.u4s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_u4s(::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_.u4s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.u4s_.IsDefault()) {
    _impl_.u4s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.u4s)
}

// bytes u8s = 3;
inline void LiteralProto::clear_u8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u8s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& LiteralProto::u8s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u8s)
  return _internal_u8s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u8s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.u8s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u8s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_u8s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_u8s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.u8s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_u8s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u8s_.Get();
}
inline void LiteralProto::_internal_set_u8s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.u8s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_u8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.u8s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_u8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u8s)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.u8s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.u8s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_u8s(::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_.u8s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.u8s_.IsDefault()) {
    _impl_.u8s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.u8s)
}

// repeated int32 s32s = 4;
inline int LiteralProto::_internal_s32s_size() const {
  return _internal_s32s().size();
}
inline int LiteralProto::s32s_size() const {
  return _internal_s32s_size();
}
inline void LiteralProto::clear_s32s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s32s_.Clear();
}
inline ::int32_t LiteralProto::s32s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s32s)
  return _internal_s32s().Get(index);
}
inline void LiteralProto::set_s32s(int index, ::int32_t value) {
  _internal_mutable_s32s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s32s)
}
inline void LiteralProto::add_s32s(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_s32s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.s32s)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& LiteralProto::s32s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.s32s)
  return _internal_s32s();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL LiteralProto::mutable_s32s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.s32s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_s32s();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
LiteralProto::_internal_s32s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s32s_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_s32s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.s32s_;
}

// repeated int64 s64s = 5;
inline int LiteralProto::_internal_s64s_size() const {
  return _internal_s64s().size();
}
inline int LiteralProto::s64s_size() const {
  return _internal_s64s_size();
}
inline void LiteralProto::clear_s64s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s64s_.Clear();
}
inline ::int64_t LiteralProto::s64s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s64s)
  return _internal_s64s().Get(index);
}
inline void LiteralProto::set_s64s(int index, ::int64_t value) {
  _internal_mutable_s64s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s64s)
}
inline void LiteralProto::add_s64s(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_s64s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.s64s)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& LiteralProto::s64s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.s64s)
  return _internal_s64s();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL LiteralProto::mutable_s64s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.s64s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_s64s();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
LiteralProto::_internal_s64s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s64s_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_s64s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.s64s_;
}

// repeated uint32 u32s = 6;
inline int LiteralProto::_internal_u32s_size() const {
  return _internal_u32s().size();
}
inline int LiteralProto::u32s_size() const {
  return _internal_u32s_size();
}
inline void LiteralProto::clear_u32s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u32s_.Clear();
}
inline ::uint32_t LiteralProto::u32s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u32s)
  return _internal_u32s().Get(index);
}
inline void LiteralProto::set_u32s(int index, ::uint32_t value) {
  _internal_mutable_u32s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u32s)
}
inline void LiteralProto::add_u32s(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_u32s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.u32s)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& LiteralProto::u32s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.u32s)
  return _internal_u32s();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL LiteralProto::mutable_u32s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.u32s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_u32s();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
LiteralProto::_internal_u32s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u32s_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_u32s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.u32s_;
}

// repeated uint64 u64s = 7;
inline int LiteralProto::_internal_u64s_size() const {
  return _internal_u64s().size();
}
inline int LiteralProto::u64s_size() const {
  return _internal_u64s_size();
}
inline void LiteralProto::clear_u64s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u64s_.Clear();
}
inline ::uint64_t LiteralProto::u64s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u64s)
  return _internal_u64s().Get(index);
}
inline void LiteralProto::set_u64s(int index, ::uint64_t value) {
  _internal_mutable_u64s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u64s)
}
inline void LiteralProto::add_u64s(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_u64s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.u64s)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& LiteralProto::u64s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.u64s)
  return _internal_u64s();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL LiteralProto::mutable_u64s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.u64s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_u64s();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
LiteralProto::_internal_u64s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u64s_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_u64s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.u64s_;
}

// repeated float f32s = 8;
inline int LiteralProto::_internal_f32s_size() const {
  return _internal_f32s().size();
}
inline int LiteralProto::f32s_size() const {
  return _internal_f32s_size();
}
inline void LiteralProto::clear_f32s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f32s_.Clear();
}
inline float LiteralProto::f32s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f32s)
  return _internal_f32s().Get(index);
}
inline void LiteralProto::set_f32s(int index, float value) {
  _internal_mutable_f32s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f32s)
}
inline void LiteralProto::add_f32s(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_f32s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.f32s)
}
inline const ::google::protobuf::RepeatedField<float>& LiteralProto::f32s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.f32s)
  return _internal_f32s();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL LiteralProto::mutable_f32s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.f32s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_f32s();
}
inline const ::google::protobuf::RepeatedField<float>&
LiteralProto::_internal_f32s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f32s_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_f32s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.f32s_;
}

// repeated double f64s = 9;
inline int LiteralProto::_internal_f64s_size() const {
  return _internal_f64s().size();
}
inline int LiteralProto::f64s_size() const {
  return _internal_f64s_size();
}
inline void LiteralProto::clear_f64s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f64s_.Clear();
}
inline double LiteralProto::f64s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f64s)
  return _internal_f64s().Get(index);
}
inline void LiteralProto::set_f64s(int index, double value) {
  _internal_mutable_f64s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f64s)
}
inline void LiteralProto::add_f64s(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_f64s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.f64s)
}
inline const ::google::protobuf::RepeatedField<double>& LiteralProto::f64s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.f64s)
  return _internal_f64s();
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL LiteralProto::mutable_f64s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.f64s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_f64s();
}
inline const ::google::protobuf::RepeatedField<double>&
LiteralProto::_internal_f64s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f64s_;
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_f64s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.f64s_;
}

// repeated float c64s = 12;
inline int LiteralProto::_internal_c64s_size() const {
  return _internal_c64s().size();
}
inline int LiteralProto::c64s_size() const {
  return _internal_c64s_size();
}
inline void LiteralProto::clear_c64s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.c64s_.Clear();
}
inline float LiteralProto::c64s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.c64s)
  return _internal_c64s().Get(index);
}
inline void LiteralProto::set_c64s(int index, float value) {
  _internal_mutable_c64s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.c64s)
}
inline void LiteralProto::add_c64s(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_c64s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.c64s)
}
inline const ::google::protobuf::RepeatedField<float>& LiteralProto::c64s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.c64s)
  return _internal_c64s();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL LiteralProto::mutable_c64s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.c64s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_c64s();
}
inline const ::google::protobuf::RepeatedField<float>&
LiteralProto::_internal_c64s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.c64s_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_c64s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.c64s_;
}

// repeated double c128s = 18;
inline int LiteralProto::_internal_c128s_size() const {
  return _internal_c128s().size();
}
inline int LiteralProto::c128s_size() const {
  return _internal_c128s_size();
}
inline void LiteralProto::clear_c128s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.c128s_.Clear();
}
inline double LiteralProto::c128s(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.c128s)
  return _internal_c128s().Get(index);
}
inline void LiteralProto::set_c128s(int index, double value) {
  _internal_mutable_c128s()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.c128s)
}
inline void LiteralProto::add_c128s(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_c128s()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.c128s)
}
inline const ::google::protobuf::RepeatedField<double>& LiteralProto::c128s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.c128s)
  return _internal_c128s();
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL LiteralProto::mutable_c128s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.c128s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_c128s();
}
inline const ::google::protobuf::RepeatedField<double>&
LiteralProto::_internal_c128s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.c128s_;
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_c128s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.c128s_;
}

// repeated .xla.LiteralProto tuple_literals = 10;
inline int LiteralProto::_internal_tuple_literals_size() const {
  return _internal_tuple_literals().size();
}
inline int LiteralProto::tuple_literals_size() const {
  return _internal_tuple_literals_size();
}
inline void LiteralProto::clear_tuple_literals() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_literals_.Clear();
}
inline ::xla::LiteralProto* PROTOBUF_NONNULL LiteralProto::mutable_tuple_literals(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.tuple_literals)
  return _internal_mutable_tuple_literals()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL LiteralProto::mutable_tuple_literals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.tuple_literals)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tuple_literals();
}
inline const ::xla::LiteralProto& LiteralProto::tuple_literals(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.tuple_literals)
  return _internal_tuple_literals().Get(index);
}
inline ::xla::LiteralProto* PROTOBUF_NONNULL LiteralProto::add_tuple_literals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::LiteralProto* _add = _internal_mutable_tuple_literals()->Add();
  // @@protoc_insertion_point(field_add:xla.LiteralProto.tuple_literals)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& LiteralProto::tuple_literals() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.tuple_literals)
  return _internal_tuple_literals();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>&
LiteralProto::_internal_tuple_literals() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tuple_literals_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_tuple_literals() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tuple_literals_;
}

// bytes f16s = 11;
inline void LiteralProto::clear_f16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f16s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::std::string& LiteralProto::f16s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f16s)
  return _internal_f16s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f16s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.f16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f16s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f16s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f16s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f16s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f16s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f16s_.Get();
}
inline void LiteralProto::_internal_set_f16s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.f16s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.f16s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f16s)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.f16s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f16s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f16s(::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_.f16s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f16s_.IsDefault()) {
    _impl_.f16s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f16s)
}

// bytes bf16s = 13;
inline void LiteralProto::clear_bf16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bf16s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::std::string& LiteralProto::bf16s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.bf16s)
  return _internal_bf16s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_bf16s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.bf16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.bf16s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_bf16s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_bf16s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.bf16s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_bf16s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bf16s_.Get();
}
inline void LiteralProto::_internal_set_bf16s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.bf16s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_bf16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.bf16s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_bf16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.bf16s)
  if ((_impl_._has_bits_[0] & 0x00000004u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* released = _impl_.bf16s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.bf16s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_bf16s(::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_.bf16s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.bf16s_.IsDefault()) {
    _impl_.bf16s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.bf16s)
}

// bytes u16s = 16;
inline void LiteralProto::clear_u16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u16s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const ::std::string& LiteralProto::u16s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.u16s)
  return _internal_u16s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u16s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.u16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u16s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_u16s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_u16s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.u16s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_u16s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.u16s_.Get();
}
inline void LiteralProto::_internal_set_u16s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.u16s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_u16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000010u;
  return _impl_.u16s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_u16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u16s)
  if ((_impl_._has_bits_[0] & 0x00000010u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000010u;
  auto* released = _impl_.u16s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.u16s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_u16s(::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_.u16s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.u16s_.IsDefault()) {
    _impl_.u16s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.u16s)
}

// bytes s16s = 17;
inline void LiteralProto::clear_s16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s16s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const ::std::string& LiteralProto::s16s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.s16s)
  return _internal_s16s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s16s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000020u;
  _impl_.s16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s16s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_s16s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_s16s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.s16s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_s16s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s16s_.Get();
}
inline void LiteralProto::_internal_set_s16s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000020u;
  _impl_.s16s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_s16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000020u;
  return _impl_.s16s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_s16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s16s)
  if ((_impl_._has_bits_[0] & 0x00000020u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000020u;
  auto* released = _impl_.s16s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.s16s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_s16s(::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_.s16s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.s16s_.IsDefault()) {
    _impl_.s16s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.s16s)
}

// bytes f4e2m1fns = 32;
inline void LiteralProto::clear_f4e2m1fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f4e2m1fns_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00080000u;
}
inline const ::std::string& LiteralProto::f4e2m1fns() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f4e2m1fns)
  return _internal_f4e2m1fns();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f4e2m1fns(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00080000u;
  _impl_.f4e2m1fns_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f4e2m1fns)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f4e2m1fns()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f4e2m1fns();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f4e2m1fns)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f4e2m1fns() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f4e2m1fns_.Get();
}
inline void LiteralProto::_internal_set_f4e2m1fns(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00080000u;
  _impl_.f4e2m1fns_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f4e2m1fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00080000u;
  return _impl_.f4e2m1fns_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f4e2m1fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f4e2m1fns)
  if ((_impl_._has_bits_[0] & 0x00080000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00080000u;
  auto* released = _impl_.f4e2m1fns_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f4e2m1fns_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f4e2m1fns(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00080000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00080000u;
  }
  _impl_.f4e2m1fns_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f4e2m1fns_.IsDefault()) {
    _impl_.f4e2m1fns_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f4e2m1fns)
}

// bytes f8e3m4s = 29;
inline void LiteralProto::clear_f8e3m4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e3m4s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00010000u;
}
inline const ::std::string& LiteralProto::f8e3m4s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e3m4s)
  return _internal_f8e3m4s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e3m4s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00010000u;
  _impl_.f8e3m4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e3m4s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e3m4s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e3m4s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e3m4s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e3m4s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e3m4s_.Get();
}
inline void LiteralProto::_internal_set_f8e3m4s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00010000u;
  _impl_.f8e3m4s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e3m4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00010000u;
  return _impl_.f8e3m4s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e3m4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e3m4s)
  if ((_impl_._has_bits_[0] & 0x00010000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00010000u;
  auto* released = _impl_.f8e3m4s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e3m4s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e3m4s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00010000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00010000u;
  }
  _impl_.f8e3m4s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e3m4s_.IsDefault()) {
    _impl_.f8e3m4s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e3m4s)
}

// bytes f8e4m3b11fnuzs = 23;
inline void LiteralProto::clear_f8e4m3b11fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3b11fnuzs_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000400u;
}
inline const ::std::string& LiteralProto::f8e4m3b11fnuzs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e4m3b11fnuzs)
  return _internal_f8e4m3b11fnuzs();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3b11fnuzs(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000400u;
  _impl_.f8e4m3b11fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3b11fnuzs)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e4m3b11fnuzs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e4m3b11fnuzs();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e4m3b11fnuzs)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e4m3b11fnuzs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e4m3b11fnuzs_.Get();
}
inline void LiteralProto::_internal_set_f8e4m3b11fnuzs(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000400u;
  _impl_.f8e4m3b11fnuzs_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e4m3b11fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000400u;
  return _impl_.f8e4m3b11fnuzs_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e4m3b11fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3b11fnuzs)
  if ((_impl_._has_bits_[0] & 0x00000400u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000400u;
  auto* released = _impl_.f8e4m3b11fnuzs_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e4m3b11fnuzs_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e4m3b11fnuzs(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  _impl_.f8e4m3b11fnuzs_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e4m3b11fnuzs_.IsDefault()) {
    _impl_.f8e4m3b11fnuzs_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e4m3b11fnuzs)
}

// bytes f8e4m3fns = 20;
inline void LiteralProto::clear_f8e4m3fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fns_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline const ::std::string& LiteralProto::f8e4m3fns() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e4m3fns)
  return _internal_f8e4m3fns();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3fns(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000080u;
  _impl_.f8e4m3fns_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3fns)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e4m3fns()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e4m3fns();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e4m3fns)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e4m3fns() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e4m3fns_.Get();
}
inline void LiteralProto::_internal_set_f8e4m3fns(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000080u;
  _impl_.f8e4m3fns_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e4m3fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000080u;
  return _impl_.f8e4m3fns_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e4m3fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3fns)
  if ((_impl_._has_bits_[0] & 0x00000080u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000080u;
  auto* released = _impl_.f8e4m3fns_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e4m3fns_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e4m3fns(::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_.f8e4m3fns_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e4m3fns_.IsDefault()) {
    _impl_.f8e4m3fns_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e4m3fns)
}

// bytes f8e4m3fnuzs = 25;
inline void LiteralProto::clear_f8e4m3fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fnuzs_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00001000u;
}
inline const ::std::string& LiteralProto::f8e4m3fnuzs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e4m3fnuzs)
  return _internal_f8e4m3fnuzs();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3fnuzs(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00001000u;
  _impl_.f8e4m3fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3fnuzs)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e4m3fnuzs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e4m3fnuzs();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e4m3fnuzs)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e4m3fnuzs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e4m3fnuzs_.Get();
}
inline void LiteralProto::_internal_set_f8e4m3fnuzs(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00001000u;
  _impl_.f8e4m3fnuzs_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e4m3fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00001000u;
  return _impl_.f8e4m3fnuzs_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e4m3fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3fnuzs)
  if ((_impl_._has_bits_[0] & 0x00001000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00001000u;
  auto* released = _impl_.f8e4m3fnuzs_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e4m3fnuzs_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e4m3fnuzs(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00001000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00001000u;
  }
  _impl_.f8e4m3fnuzs_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e4m3fnuzs_.IsDefault()) {
    _impl_.f8e4m3fnuzs_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e4m3fnuzs)
}

// bytes f8e4m3s = 28;
inline void LiteralProto::clear_f8e4m3s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00008000u;
}
inline const ::std::string& LiteralProto::f8e4m3s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e4m3s)
  return _internal_f8e4m3s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00008000u;
  _impl_.f8e4m3s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e4m3s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e4m3s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e4m3s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e4m3s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e4m3s_.Get();
}
inline void LiteralProto::_internal_set_f8e4m3s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00008000u;
  _impl_.f8e4m3s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e4m3s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00008000u;
  return _impl_.f8e4m3s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e4m3s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3s)
  if ((_impl_._has_bits_[0] & 0x00008000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00008000u;
  auto* released = _impl_.f8e4m3s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e4m3s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e4m3s(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00008000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00008000u;
  }
  _impl_.f8e4m3s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e4m3s_.IsDefault()) {
    _impl_.f8e4m3s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e4m3s)
}

// bytes f8e5m2fnuzs = 24;
inline void LiteralProto::clear_f8e5m2fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2fnuzs_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000800u;
}
inline const ::std::string& LiteralProto::f8e5m2fnuzs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e5m2fnuzs)
  return _internal_f8e5m2fnuzs();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e5m2fnuzs(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000800u;
  _impl_.f8e5m2fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e5m2fnuzs)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e5m2fnuzs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e5m2fnuzs();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e5m2fnuzs)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e5m2fnuzs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e5m2fnuzs_.Get();
}
inline void LiteralProto::_internal_set_f8e5m2fnuzs(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000800u;
  _impl_.f8e5m2fnuzs_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e5m2fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000800u;
  return _impl_.f8e5m2fnuzs_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e5m2fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e5m2fnuzs)
  if ((_impl_._has_bits_[0] & 0x00000800u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000800u;
  auto* released = _impl_.f8e5m2fnuzs_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e5m2fnuzs_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e5m2fnuzs(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000800u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000800u;
  }
  _impl_.f8e5m2fnuzs_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e5m2fnuzs_.IsDefault()) {
    _impl_.f8e5m2fnuzs_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e5m2fnuzs)
}

// bytes f8e5m2s = 19;
inline void LiteralProto::clear_f8e5m2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2s_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline const ::std::string& LiteralProto::f8e5m2s() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e5m2s)
  return _internal_f8e5m2s();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e5m2s(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000040u;
  _impl_.f8e5m2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e5m2s)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e5m2s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e5m2s();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e5m2s)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e5m2s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e5m2s_.Get();
}
inline void LiteralProto::_internal_set_f8e5m2s(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000040u;
  _impl_.f8e5m2s_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e5m2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000040u;
  return _impl_.f8e5m2s_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e5m2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e5m2s)
  if ((_impl_._has_bits_[0] & 0x00000040u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000040u;
  auto* released = _impl_.f8e5m2s_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e5m2s_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e5m2s(::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_.f8e5m2s_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e5m2s_.IsDefault()) {
    _impl_.f8e5m2s_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e5m2s)
}

// bytes f8e8m0fnus = 33;
inline void LiteralProto::clear_f8e8m0fnus() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e8m0fnus_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00100000u;
}
inline const ::std::string& LiteralProto::f8e8m0fnus() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.f8e8m0fnus)
  return _internal_f8e8m0fnus();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e8m0fnus(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00100000u;
  _impl_.f8e8m0fnus_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e8m0fnus)
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::mutable_f8e8m0fnus()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_f8e8m0fnus();
  // @@protoc_insertion_point(field_mutable:xla.LiteralProto.f8e8m0fnus)
  return _s;
}
inline const ::std::string& LiteralProto::_internal_f8e8m0fnus() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.f8e8m0fnus_.Get();
}
inline void LiteralProto::_internal_set_f8e8m0fnus(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00100000u;
  _impl_.f8e8m0fnus_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LiteralProto::_internal_mutable_f8e8m0fnus() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00100000u;
  return _impl_.f8e8m0fnus_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LiteralProto::release_f8e8m0fnus() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e8m0fnus)
  if ((_impl_._has_bits_[0] & 0x00100000u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00100000u;
  auto* released = _impl_.f8e8m0fnus_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.f8e8m0fnus_.Set("", GetArena());
  }
  return released;
}
inline void LiteralProto::set_allocated_f8e8m0fnus(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00100000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00100000u;
  }
  _impl_.f8e8m0fnus_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.f8e8m0fnus_.IsDefault()) {
    _impl_.f8e8m0fnus_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.LiteralProto.f8e8m0fnus)
}

// repeated int64 sparse_indices = 14;
inline int LiteralProto::_internal_sparse_indices_size() const {
  return _internal_sparse_indices().size();
}
inline int LiteralProto::sparse_indices_size() const {
  return _internal_sparse_indices_size();
}
inline void LiteralProto::clear_sparse_indices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sparse_indices_.Clear();
}
inline ::int64_t LiteralProto::sparse_indices(int index) const {
  // @@protoc_insertion_point(field_get:xla.LiteralProto.sparse_indices)
  return _internal_sparse_indices().Get(index);
}
inline void LiteralProto::set_sparse_indices(int index, ::int64_t value) {
  _internal_mutable_sparse_indices()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.LiteralProto.sparse_indices)
}
inline void LiteralProto::add_sparse_indices(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_sparse_indices()->Add(value);
  // @@protoc_insertion_point(field_add:xla.LiteralProto.sparse_indices)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& LiteralProto::sparse_indices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.LiteralProto.sparse_indices)
  return _internal_sparse_indices();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL LiteralProto::mutable_sparse_indices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.LiteralProto.sparse_indices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_sparse_indices();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
LiteralProto::_internal_sparse_indices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sparse_indices_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
LiteralProto::_internal_mutable_sparse_indices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.sparse_indices_;
}

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

// WindowDimension

// int64 size = 1;
inline void WindowDimension::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t WindowDimension::size() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.size)
  return _internal_size();
}
inline void WindowDimension::set_size(::int64_t value) {
  _internal_set_size(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.size)
}
inline ::int64_t WindowDimension::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void WindowDimension::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

// int64 stride = 2;
inline void WindowDimension::clear_stride() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stride_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t WindowDimension::stride() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.stride)
  return _internal_stride();
}
inline void WindowDimension::set_stride(::int64_t value) {
  _internal_set_stride(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.stride)
}
inline ::int64_t WindowDimension::_internal_stride() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stride_;
}
inline void WindowDimension::_internal_set_stride(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stride_ = value;
}

// int64 padding_low = 3;
inline void WindowDimension::clear_padding_low() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_low_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t WindowDimension::padding_low() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.padding_low)
  return _internal_padding_low();
}
inline void WindowDimension::set_padding_low(::int64_t value) {
  _internal_set_padding_low(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.padding_low)
}
inline ::int64_t WindowDimension::_internal_padding_low() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.padding_low_;
}
inline void WindowDimension::_internal_set_padding_low(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_low_ = value;
}

// int64 padding_high = 4;
inline void WindowDimension::clear_padding_high() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_high_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t WindowDimension::padding_high() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.padding_high)
  return _internal_padding_high();
}
inline void WindowDimension::set_padding_high(::int64_t value) {
  _internal_set_padding_high(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.padding_high)
}
inline ::int64_t WindowDimension::_internal_padding_high() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.padding_high_;
}
inline void WindowDimension::_internal_set_padding_high(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.padding_high_ = value;
}

// int64 window_dilation = 5;
inline void WindowDimension::clear_window_dilation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.window_dilation_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t WindowDimension::window_dilation() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.window_dilation)
  return _internal_window_dilation();
}
inline void WindowDimension::set_window_dilation(::int64_t value) {
  _internal_set_window_dilation(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.window_dilation)
}
inline ::int64_t WindowDimension::_internal_window_dilation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.window_dilation_;
}
inline void WindowDimension::_internal_set_window_dilation(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.window_dilation_ = value;
}

// int64 base_dilation = 6;
inline void WindowDimension::clear_base_dilation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.base_dilation_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int64_t WindowDimension::base_dilation() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.base_dilation)
  return _internal_base_dilation();
}
inline void WindowDimension::set_base_dilation(::int64_t value) {
  _internal_set_base_dilation(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.base_dilation)
}
inline ::int64_t WindowDimension::_internal_base_dilation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.base_dilation_;
}
inline void WindowDimension::_internal_set_base_dilation(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.base_dilation_ = value;
}

// bool window_reversal = 7;
inline void WindowDimension::clear_window_reversal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.window_reversal_ = false;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline bool WindowDimension::window_reversal() const {
  // @@protoc_insertion_point(field_get:xla.WindowDimension.window_reversal)
  return _internal_window_reversal();
}
inline void WindowDimension::set_window_reversal(bool value) {
  _internal_set_window_reversal(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.WindowDimension.window_reversal)
}
inline bool WindowDimension::_internal_window_reversal() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.window_reversal_;
}
inline void WindowDimension::_internal_set_window_reversal(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.window_reversal_ = value;
}

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

// Window

// repeated .xla.WindowDimension dimensions = 1;
inline int Window::_internal_dimensions_size() const {
  return _internal_dimensions().size();
}
inline int Window::dimensions_size() const {
  return _internal_dimensions_size();
}
inline void Window::clear_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimensions_.Clear();
}
inline ::xla::WindowDimension* PROTOBUF_NONNULL Window::mutable_dimensions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.Window.dimensions)
  return _internal_mutable_dimensions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>* PROTOBUF_NONNULL Window::mutable_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.Window.dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dimensions();
}
inline const ::xla::WindowDimension& Window::dimensions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.Window.dimensions)
  return _internal_dimensions().Get(index);
}
inline ::xla::WindowDimension* PROTOBUF_NONNULL Window::add_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::WindowDimension* _add = _internal_mutable_dimensions()->Add();
  // @@protoc_insertion_point(field_add:xla.Window.dimensions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>& Window::dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.Window.dimensions)
  return _internal_dimensions();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>&
Window::_internal_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dimensions_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>* PROTOBUF_NONNULL
Window::_internal_mutable_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dimensions_;
}

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

// GatherDimensionNumbers

// repeated int64 offset_dims = 1;
inline int GatherDimensionNumbers::_internal_offset_dims_size() const {
  return _internal_offset_dims().size();
}
inline int GatherDimensionNumbers::offset_dims_size() const {
  return _internal_offset_dims_size();
}
inline void GatherDimensionNumbers::clear_offset_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_dims_.Clear();
}
inline ::int64_t GatherDimensionNumbers::offset_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.offset_dims)
  return _internal_offset_dims().Get(index);
}
inline void GatherDimensionNumbers::set_offset_dims(int index, ::int64_t value) {
  _internal_mutable_offset_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.offset_dims)
}
inline void GatherDimensionNumbers::add_offset_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_offset_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.GatherDimensionNumbers.offset_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GatherDimensionNumbers::offset_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GatherDimensionNumbers.offset_dims)
  return _internal_offset_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GatherDimensionNumbers::mutable_offset_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GatherDimensionNumbers.offset_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_offset_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GatherDimensionNumbers::_internal_offset_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GatherDimensionNumbers::_internal_mutable_offset_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.offset_dims_;
}

// repeated int64 collapsed_slice_dims = 2;
inline int GatherDimensionNumbers::_internal_collapsed_slice_dims_size() const {
  return _internal_collapsed_slice_dims().size();
}
inline int GatherDimensionNumbers::collapsed_slice_dims_size() const {
  return _internal_collapsed_slice_dims_size();
}
inline void GatherDimensionNumbers::clear_collapsed_slice_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collapsed_slice_dims_.Clear();
}
inline ::int64_t GatherDimensionNumbers::collapsed_slice_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.collapsed_slice_dims)
  return _internal_collapsed_slice_dims().Get(index);
}
inline void GatherDimensionNumbers::set_collapsed_slice_dims(int index, ::int64_t value) {
  _internal_mutable_collapsed_slice_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.collapsed_slice_dims)
}
inline void GatherDimensionNumbers::add_collapsed_slice_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_collapsed_slice_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.GatherDimensionNumbers.collapsed_slice_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GatherDimensionNumbers::collapsed_slice_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GatherDimensionNumbers.collapsed_slice_dims)
  return _internal_collapsed_slice_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GatherDimensionNumbers::mutable_collapsed_slice_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GatherDimensionNumbers.collapsed_slice_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_collapsed_slice_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GatherDimensionNumbers::_internal_collapsed_slice_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.collapsed_slice_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GatherDimensionNumbers::_internal_mutable_collapsed_slice_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.collapsed_slice_dims_;
}

// repeated int64 start_index_map = 3;
inline int GatherDimensionNumbers::_internal_start_index_map_size() const {
  return _internal_start_index_map().size();
}
inline int GatherDimensionNumbers::start_index_map_size() const {
  return _internal_start_index_map_size();
}
inline void GatherDimensionNumbers::clear_start_index_map() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_index_map_.Clear();
}
inline ::int64_t GatherDimensionNumbers::start_index_map(int index) const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.start_index_map)
  return _internal_start_index_map().Get(index);
}
inline void GatherDimensionNumbers::set_start_index_map(int index, ::int64_t value) {
  _internal_mutable_start_index_map()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.start_index_map)
}
inline void GatherDimensionNumbers::add_start_index_map(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_start_index_map()->Add(value);
  // @@protoc_insertion_point(field_add:xla.GatherDimensionNumbers.start_index_map)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GatherDimensionNumbers::start_index_map() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GatherDimensionNumbers.start_index_map)
  return _internal_start_index_map();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GatherDimensionNumbers::mutable_start_index_map()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GatherDimensionNumbers.start_index_map)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_start_index_map();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GatherDimensionNumbers::_internal_start_index_map() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_index_map_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GatherDimensionNumbers::_internal_mutable_start_index_map() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.start_index_map_;
}

// int64 index_vector_dim = 4;
inline void GatherDimensionNumbers::clear_index_vector_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_vector_dim_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t GatherDimensionNumbers::index_vector_dim() const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.index_vector_dim)
  return _internal_index_vector_dim();
}
inline void GatherDimensionNumbers::set_index_vector_dim(::int64_t value) {
  _internal_set_index_vector_dim(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.index_vector_dim)
}
inline ::int64_t GatherDimensionNumbers::_internal_index_vector_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.index_vector_dim_;
}
inline void GatherDimensionNumbers::_internal_set_index_vector_dim(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_vector_dim_ = value;
}

// repeated int64 operand_batching_dims = 5;
inline int GatherDimensionNumbers::_internal_operand_batching_dims_size() const {
  return _internal_operand_batching_dims().size();
}
inline int GatherDimensionNumbers::operand_batching_dims_size() const {
  return _internal_operand_batching_dims_size();
}
inline void GatherDimensionNumbers::clear_operand_batching_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_batching_dims_.Clear();
}
inline ::int64_t GatherDimensionNumbers::operand_batching_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.operand_batching_dims)
  return _internal_operand_batching_dims().Get(index);
}
inline void GatherDimensionNumbers::set_operand_batching_dims(int index, ::int64_t value) {
  _internal_mutable_operand_batching_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.operand_batching_dims)
}
inline void GatherDimensionNumbers::add_operand_batching_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_operand_batching_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.GatherDimensionNumbers.operand_batching_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GatherDimensionNumbers::operand_batching_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GatherDimensionNumbers.operand_batching_dims)
  return _internal_operand_batching_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GatherDimensionNumbers::mutable_operand_batching_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GatherDimensionNumbers.operand_batching_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_batching_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GatherDimensionNumbers::_internal_operand_batching_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_batching_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GatherDimensionNumbers::_internal_mutable_operand_batching_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_batching_dims_;
}

// repeated int64 start_indices_batching_dims = 6;
inline int GatherDimensionNumbers::_internal_start_indices_batching_dims_size() const {
  return _internal_start_indices_batching_dims().size();
}
inline int GatherDimensionNumbers::start_indices_batching_dims_size() const {
  return _internal_start_indices_batching_dims_size();
}
inline void GatherDimensionNumbers::clear_start_indices_batching_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_indices_batching_dims_.Clear();
}
inline ::int64_t GatherDimensionNumbers::start_indices_batching_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.GatherDimensionNumbers.start_indices_batching_dims)
  return _internal_start_indices_batching_dims().Get(index);
}
inline void GatherDimensionNumbers::set_start_indices_batching_dims(int index, ::int64_t value) {
  _internal_mutable_start_indices_batching_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.GatherDimensionNumbers.start_indices_batching_dims)
}
inline void GatherDimensionNumbers::add_start_indices_batching_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_start_indices_batching_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.GatherDimensionNumbers.start_indices_batching_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GatherDimensionNumbers::start_indices_batching_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GatherDimensionNumbers.start_indices_batching_dims)
  return _internal_start_indices_batching_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GatherDimensionNumbers::mutable_start_indices_batching_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GatherDimensionNumbers.start_indices_batching_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_start_indices_batching_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GatherDimensionNumbers::_internal_start_indices_batching_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_indices_batching_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GatherDimensionNumbers::_internal_mutable_start_indices_batching_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.start_indices_batching_dims_;
}

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

// ScatterDimensionNumbers

// repeated int64 update_window_dims = 1;
inline int ScatterDimensionNumbers::_internal_update_window_dims_size() const {
  return _internal_update_window_dims().size();
}
inline int ScatterDimensionNumbers::update_window_dims_size() const {
  return _internal_update_window_dims_size();
}
inline void ScatterDimensionNumbers::clear_update_window_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.update_window_dims_.Clear();
}
inline ::int64_t ScatterDimensionNumbers::update_window_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.update_window_dims)
  return _internal_update_window_dims().Get(index);
}
inline void ScatterDimensionNumbers::set_update_window_dims(int index, ::int64_t value) {
  _internal_mutable_update_window_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.update_window_dims)
}
inline void ScatterDimensionNumbers::add_update_window_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_update_window_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ScatterDimensionNumbers.update_window_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ScatterDimensionNumbers::update_window_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ScatterDimensionNumbers.update_window_dims)
  return _internal_update_window_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ScatterDimensionNumbers::mutable_update_window_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ScatterDimensionNumbers.update_window_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_update_window_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ScatterDimensionNumbers::_internal_update_window_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.update_window_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ScatterDimensionNumbers::_internal_mutable_update_window_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.update_window_dims_;
}

// repeated int64 inserted_window_dims = 2;
inline int ScatterDimensionNumbers::_internal_inserted_window_dims_size() const {
  return _internal_inserted_window_dims().size();
}
inline int ScatterDimensionNumbers::inserted_window_dims_size() const {
  return _internal_inserted_window_dims_size();
}
inline void ScatterDimensionNumbers::clear_inserted_window_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.inserted_window_dims_.Clear();
}
inline ::int64_t ScatterDimensionNumbers::inserted_window_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.inserted_window_dims)
  return _internal_inserted_window_dims().Get(index);
}
inline void ScatterDimensionNumbers::set_inserted_window_dims(int index, ::int64_t value) {
  _internal_mutable_inserted_window_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.inserted_window_dims)
}
inline void ScatterDimensionNumbers::add_inserted_window_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_inserted_window_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ScatterDimensionNumbers.inserted_window_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ScatterDimensionNumbers::inserted_window_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ScatterDimensionNumbers.inserted_window_dims)
  return _internal_inserted_window_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ScatterDimensionNumbers::mutable_inserted_window_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ScatterDimensionNumbers.inserted_window_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_inserted_window_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ScatterDimensionNumbers::_internal_inserted_window_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.inserted_window_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ScatterDimensionNumbers::_internal_mutable_inserted_window_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.inserted_window_dims_;
}

// repeated int64 scatter_dims_to_operand_dims = 3;
inline int ScatterDimensionNumbers::_internal_scatter_dims_to_operand_dims_size() const {
  return _internal_scatter_dims_to_operand_dims().size();
}
inline int ScatterDimensionNumbers::scatter_dims_to_operand_dims_size() const {
  return _internal_scatter_dims_to_operand_dims_size();
}
inline void ScatterDimensionNumbers::clear_scatter_dims_to_operand_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scatter_dims_to_operand_dims_.Clear();
}
inline ::int64_t ScatterDimensionNumbers::scatter_dims_to_operand_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.scatter_dims_to_operand_dims)
  return _internal_scatter_dims_to_operand_dims().Get(index);
}
inline void ScatterDimensionNumbers::set_scatter_dims_to_operand_dims(int index, ::int64_t value) {
  _internal_mutable_scatter_dims_to_operand_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.scatter_dims_to_operand_dims)
}
inline void ScatterDimensionNumbers::add_scatter_dims_to_operand_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_scatter_dims_to_operand_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ScatterDimensionNumbers.scatter_dims_to_operand_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ScatterDimensionNumbers::scatter_dims_to_operand_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ScatterDimensionNumbers.scatter_dims_to_operand_dims)
  return _internal_scatter_dims_to_operand_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ScatterDimensionNumbers::mutable_scatter_dims_to_operand_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ScatterDimensionNumbers.scatter_dims_to_operand_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_scatter_dims_to_operand_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ScatterDimensionNumbers::_internal_scatter_dims_to_operand_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.scatter_dims_to_operand_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ScatterDimensionNumbers::_internal_mutable_scatter_dims_to_operand_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.scatter_dims_to_operand_dims_;
}

// int64 index_vector_dim = 4;
inline void ScatterDimensionNumbers::clear_index_vector_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_vector_dim_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t ScatterDimensionNumbers::index_vector_dim() const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.index_vector_dim)
  return _internal_index_vector_dim();
}
inline void ScatterDimensionNumbers::set_index_vector_dim(::int64_t value) {
  _internal_set_index_vector_dim(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.index_vector_dim)
}
inline ::int64_t ScatterDimensionNumbers::_internal_index_vector_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.index_vector_dim_;
}
inline void ScatterDimensionNumbers::_internal_set_index_vector_dim(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_vector_dim_ = value;
}

// repeated int64 input_batching_dims = 5;
inline int ScatterDimensionNumbers::_internal_input_batching_dims_size() const {
  return _internal_input_batching_dims().size();
}
inline int ScatterDimensionNumbers::input_batching_dims_size() const {
  return _internal_input_batching_dims_size();
}
inline void ScatterDimensionNumbers::clear_input_batching_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_batching_dims_.Clear();
}
inline ::int64_t ScatterDimensionNumbers::input_batching_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.input_batching_dims)
  return _internal_input_batching_dims().Get(index);
}
inline void ScatterDimensionNumbers::set_input_batching_dims(int index, ::int64_t value) {
  _internal_mutable_input_batching_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.input_batching_dims)
}
inline void ScatterDimensionNumbers::add_input_batching_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_input_batching_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ScatterDimensionNumbers.input_batching_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ScatterDimensionNumbers::input_batching_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ScatterDimensionNumbers.input_batching_dims)
  return _internal_input_batching_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ScatterDimensionNumbers::mutable_input_batching_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ScatterDimensionNumbers.input_batching_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_input_batching_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ScatterDimensionNumbers::_internal_input_batching_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_batching_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ScatterDimensionNumbers::_internal_mutable_input_batching_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.input_batching_dims_;
}

// repeated int64 scatter_indices_batching_dims = 6;
inline int ScatterDimensionNumbers::_internal_scatter_indices_batching_dims_size() const {
  return _internal_scatter_indices_batching_dims().size();
}
inline int ScatterDimensionNumbers::scatter_indices_batching_dims_size() const {
  return _internal_scatter_indices_batching_dims_size();
}
inline void ScatterDimensionNumbers::clear_scatter_indices_batching_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scatter_indices_batching_dims_.Clear();
}
inline ::int64_t ScatterDimensionNumbers::scatter_indices_batching_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.ScatterDimensionNumbers.scatter_indices_batching_dims)
  return _internal_scatter_indices_batching_dims().Get(index);
}
inline void ScatterDimensionNumbers::set_scatter_indices_batching_dims(int index, ::int64_t value) {
  _internal_mutable_scatter_indices_batching_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ScatterDimensionNumbers.scatter_indices_batching_dims)
}
inline void ScatterDimensionNumbers::add_scatter_indices_batching_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_scatter_indices_batching_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ScatterDimensionNumbers.scatter_indices_batching_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ScatterDimensionNumbers::scatter_indices_batching_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ScatterDimensionNumbers.scatter_indices_batching_dims)
  return _internal_scatter_indices_batching_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ScatterDimensionNumbers::mutable_scatter_indices_batching_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ScatterDimensionNumbers.scatter_indices_batching_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_scatter_indices_batching_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ScatterDimensionNumbers::_internal_scatter_indices_batching_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.scatter_indices_batching_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ScatterDimensionNumbers::_internal_mutable_scatter_indices_batching_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.scatter_indices_batching_dims_;
}

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

// ConvolutionDimensionNumbers

// int64 input_batch_dimension = 7;
inline void ConvolutionDimensionNumbers::clear_input_batch_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_batch_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t ConvolutionDimensionNumbers::input_batch_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.input_batch_dimension)
  return _internal_input_batch_dimension();
}
inline void ConvolutionDimensionNumbers::set_input_batch_dimension(::int64_t value) {
  _internal_set_input_batch_dimension(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.input_batch_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_input_batch_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_batch_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_input_batch_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_batch_dimension_ = value;
}

// int64 input_feature_dimension = 8;
inline void ConvolutionDimensionNumbers::clear_input_feature_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_feature_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t ConvolutionDimensionNumbers::input_feature_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.input_feature_dimension)
  return _internal_input_feature_dimension();
}
inline void ConvolutionDimensionNumbers::set_input_feature_dimension(::int64_t value) {
  _internal_set_input_feature_dimension(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.input_feature_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_input_feature_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_feature_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_input_feature_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_feature_dimension_ = value;
}

// repeated int64 input_spatial_dimensions = 11;
inline int ConvolutionDimensionNumbers::_internal_input_spatial_dimensions_size() const {
  return _internal_input_spatial_dimensions().size();
}
inline int ConvolutionDimensionNumbers::input_spatial_dimensions_size() const {
  return _internal_input_spatial_dimensions_size();
}
inline void ConvolutionDimensionNumbers::clear_input_spatial_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_spatial_dimensions_.Clear();
}
inline ::int64_t ConvolutionDimensionNumbers::input_spatial_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.input_spatial_dimensions)
  return _internal_input_spatial_dimensions().Get(index);
}
inline void ConvolutionDimensionNumbers::set_input_spatial_dimensions(int index, ::int64_t value) {
  _internal_mutable_input_spatial_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.input_spatial_dimensions)
}
inline void ConvolutionDimensionNumbers::add_input_spatial_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_input_spatial_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ConvolutionDimensionNumbers.input_spatial_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ConvolutionDimensionNumbers::input_spatial_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ConvolutionDimensionNumbers.input_spatial_dimensions)
  return _internal_input_spatial_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ConvolutionDimensionNumbers::mutable_input_spatial_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ConvolutionDimensionNumbers.input_spatial_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_input_spatial_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ConvolutionDimensionNumbers::_internal_input_spatial_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_spatial_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ConvolutionDimensionNumbers::_internal_mutable_input_spatial_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.input_spatial_dimensions_;
}

// int64 kernel_input_feature_dimension = 3;
inline void ConvolutionDimensionNumbers::clear_kernel_input_feature_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_input_feature_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t ConvolutionDimensionNumbers::kernel_input_feature_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.kernel_input_feature_dimension)
  return _internal_kernel_input_feature_dimension();
}
inline void ConvolutionDimensionNumbers::set_kernel_input_feature_dimension(::int64_t value) {
  _internal_set_kernel_input_feature_dimension(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.kernel_input_feature_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_kernel_input_feature_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_input_feature_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_kernel_input_feature_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_input_feature_dimension_ = value;
}

// int64 kernel_output_feature_dimension = 4;
inline void ConvolutionDimensionNumbers::clear_kernel_output_feature_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_output_feature_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t ConvolutionDimensionNumbers::kernel_output_feature_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.kernel_output_feature_dimension)
  return _internal_kernel_output_feature_dimension();
}
inline void ConvolutionDimensionNumbers::set_kernel_output_feature_dimension(::int64_t value) {
  _internal_set_kernel_output_feature_dimension(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.kernel_output_feature_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_kernel_output_feature_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_output_feature_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_kernel_output_feature_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_output_feature_dimension_ = value;
}

// repeated int64 kernel_spatial_dimensions = 6;
inline int ConvolutionDimensionNumbers::_internal_kernel_spatial_dimensions_size() const {
  return _internal_kernel_spatial_dimensions().size();
}
inline int ConvolutionDimensionNumbers::kernel_spatial_dimensions_size() const {
  return _internal_kernel_spatial_dimensions_size();
}
inline void ConvolutionDimensionNumbers::clear_kernel_spatial_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_spatial_dimensions_.Clear();
}
inline ::int64_t ConvolutionDimensionNumbers::kernel_spatial_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.kernel_spatial_dimensions)
  return _internal_kernel_spatial_dimensions().Get(index);
}
inline void ConvolutionDimensionNumbers::set_kernel_spatial_dimensions(int index, ::int64_t value) {
  _internal_mutable_kernel_spatial_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.kernel_spatial_dimensions)
}
inline void ConvolutionDimensionNumbers::add_kernel_spatial_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_kernel_spatial_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ConvolutionDimensionNumbers.kernel_spatial_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ConvolutionDimensionNumbers::kernel_spatial_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ConvolutionDimensionNumbers.kernel_spatial_dimensions)
  return _internal_kernel_spatial_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ConvolutionDimensionNumbers::mutable_kernel_spatial_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ConvolutionDimensionNumbers.kernel_spatial_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_kernel_spatial_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ConvolutionDimensionNumbers::_internal_kernel_spatial_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_spatial_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ConvolutionDimensionNumbers::_internal_mutable_kernel_spatial_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.kernel_spatial_dimensions_;
}

// int64 output_batch_dimension = 9;
inline void ConvolutionDimensionNumbers::clear_output_batch_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_batch_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t ConvolutionDimensionNumbers::output_batch_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.output_batch_dimension)
  return _internal_output_batch_dimension();
}
inline void ConvolutionDimensionNumbers::set_output_batch_dimension(::int64_t value) {
  _internal_set_output_batch_dimension(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.output_batch_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_output_batch_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_batch_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_output_batch_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_batch_dimension_ = value;
}

// int64 output_feature_dimension = 10;
inline void ConvolutionDimensionNumbers::clear_output_feature_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_feature_dimension_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int64_t ConvolutionDimensionNumbers::output_feature_dimension() const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.output_feature_dimension)
  return _internal_output_feature_dimension();
}
inline void ConvolutionDimensionNumbers::set_output_feature_dimension(::int64_t value) {
  _internal_set_output_feature_dimension(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.output_feature_dimension)
}
inline ::int64_t ConvolutionDimensionNumbers::_internal_output_feature_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_feature_dimension_;
}
inline void ConvolutionDimensionNumbers::_internal_set_output_feature_dimension(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_feature_dimension_ = value;
}

// repeated int64 output_spatial_dimensions = 12;
inline int ConvolutionDimensionNumbers::_internal_output_spatial_dimensions_size() const {
  return _internal_output_spatial_dimensions().size();
}
inline int ConvolutionDimensionNumbers::output_spatial_dimensions_size() const {
  return _internal_output_spatial_dimensions_size();
}
inline void ConvolutionDimensionNumbers::clear_output_spatial_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_spatial_dimensions_.Clear();
}
inline ::int64_t ConvolutionDimensionNumbers::output_spatial_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.ConvolutionDimensionNumbers.output_spatial_dimensions)
  return _internal_output_spatial_dimensions().Get(index);
}
inline void ConvolutionDimensionNumbers::set_output_spatial_dimensions(int index, ::int64_t value) {
  _internal_mutable_output_spatial_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ConvolutionDimensionNumbers.output_spatial_dimensions)
}
inline void ConvolutionDimensionNumbers::add_output_spatial_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_output_spatial_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ConvolutionDimensionNumbers.output_spatial_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ConvolutionDimensionNumbers::output_spatial_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ConvolutionDimensionNumbers.output_spatial_dimensions)
  return _internal_output_spatial_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ConvolutionDimensionNumbers::mutable_output_spatial_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ConvolutionDimensionNumbers.output_spatial_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_spatial_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ConvolutionDimensionNumbers::_internal_output_spatial_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_spatial_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ConvolutionDimensionNumbers::_internal_mutable_output_spatial_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_spatial_dimensions_;
}

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

// DotDimensionNumbers

// repeated int64 lhs_contracting_dimensions = 1;
inline int DotDimensionNumbers::_internal_lhs_contracting_dimensions_size() const {
  return _internal_lhs_contracting_dimensions().size();
}
inline int DotDimensionNumbers::lhs_contracting_dimensions_size() const {
  return _internal_lhs_contracting_dimensions_size();
}
inline void DotDimensionNumbers::clear_lhs_contracting_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lhs_contracting_dimensions_.Clear();
}
inline ::int64_t DotDimensionNumbers::lhs_contracting_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.DotDimensionNumbers.lhs_contracting_dimensions)
  return _internal_lhs_contracting_dimensions().Get(index);
}
inline void DotDimensionNumbers::set_lhs_contracting_dimensions(int index, ::int64_t value) {
  _internal_mutable_lhs_contracting_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.DotDimensionNumbers.lhs_contracting_dimensions)
}
inline void DotDimensionNumbers::add_lhs_contracting_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lhs_contracting_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.DotDimensionNumbers.lhs_contracting_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DotDimensionNumbers::lhs_contracting_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DotDimensionNumbers.lhs_contracting_dimensions)
  return _internal_lhs_contracting_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DotDimensionNumbers::mutable_lhs_contracting_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DotDimensionNumbers.lhs_contracting_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lhs_contracting_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DotDimensionNumbers::_internal_lhs_contracting_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lhs_contracting_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DotDimensionNumbers::_internal_mutable_lhs_contracting_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lhs_contracting_dimensions_;
}

// repeated int64 rhs_contracting_dimensions = 2;
inline int DotDimensionNumbers::_internal_rhs_contracting_dimensions_size() const {
  return _internal_rhs_contracting_dimensions().size();
}
inline int DotDimensionNumbers::rhs_contracting_dimensions_size() const {
  return _internal_rhs_contracting_dimensions_size();
}
inline void DotDimensionNumbers::clear_rhs_contracting_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rhs_contracting_dimensions_.Clear();
}
inline ::int64_t DotDimensionNumbers::rhs_contracting_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.DotDimensionNumbers.rhs_contracting_dimensions)
  return _internal_rhs_contracting_dimensions().Get(index);
}
inline void DotDimensionNumbers::set_rhs_contracting_dimensions(int index, ::int64_t value) {
  _internal_mutable_rhs_contracting_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.DotDimensionNumbers.rhs_contracting_dimensions)
}
inline void DotDimensionNumbers::add_rhs_contracting_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_rhs_contracting_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.DotDimensionNumbers.rhs_contracting_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DotDimensionNumbers::rhs_contracting_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DotDimensionNumbers.rhs_contracting_dimensions)
  return _internal_rhs_contracting_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DotDimensionNumbers::mutable_rhs_contracting_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DotDimensionNumbers.rhs_contracting_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rhs_contracting_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DotDimensionNumbers::_internal_rhs_contracting_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rhs_contracting_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DotDimensionNumbers::_internal_mutable_rhs_contracting_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rhs_contracting_dimensions_;
}

// repeated int64 lhs_batch_dimensions = 3;
inline int DotDimensionNumbers::_internal_lhs_batch_dimensions_size() const {
  return _internal_lhs_batch_dimensions().size();
}
inline int DotDimensionNumbers::lhs_batch_dimensions_size() const {
  return _internal_lhs_batch_dimensions_size();
}
inline void DotDimensionNumbers::clear_lhs_batch_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lhs_batch_dimensions_.Clear();
}
inline ::int64_t DotDimensionNumbers::lhs_batch_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.DotDimensionNumbers.lhs_batch_dimensions)
  return _internal_lhs_batch_dimensions().Get(index);
}
inline void DotDimensionNumbers::set_lhs_batch_dimensions(int index, ::int64_t value) {
  _internal_mutable_lhs_batch_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.DotDimensionNumbers.lhs_batch_dimensions)
}
inline void DotDimensionNumbers::add_lhs_batch_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lhs_batch_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.DotDimensionNumbers.lhs_batch_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DotDimensionNumbers::lhs_batch_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DotDimensionNumbers.lhs_batch_dimensions)
  return _internal_lhs_batch_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DotDimensionNumbers::mutable_lhs_batch_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DotDimensionNumbers.lhs_batch_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lhs_batch_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DotDimensionNumbers::_internal_lhs_batch_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lhs_batch_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DotDimensionNumbers::_internal_mutable_lhs_batch_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lhs_batch_dimensions_;
}

// repeated int64 rhs_batch_dimensions = 4;
inline int DotDimensionNumbers::_internal_rhs_batch_dimensions_size() const {
  return _internal_rhs_batch_dimensions().size();
}
inline int DotDimensionNumbers::rhs_batch_dimensions_size() const {
  return _internal_rhs_batch_dimensions_size();
}
inline void DotDimensionNumbers::clear_rhs_batch_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rhs_batch_dimensions_.Clear();
}
inline ::int64_t DotDimensionNumbers::rhs_batch_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.DotDimensionNumbers.rhs_batch_dimensions)
  return _internal_rhs_batch_dimensions().Get(index);
}
inline void DotDimensionNumbers::set_rhs_batch_dimensions(int index, ::int64_t value) {
  _internal_mutable_rhs_batch_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.DotDimensionNumbers.rhs_batch_dimensions)
}
inline void DotDimensionNumbers::add_rhs_batch_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_rhs_batch_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.DotDimensionNumbers.rhs_batch_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DotDimensionNumbers::rhs_batch_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.DotDimensionNumbers.rhs_batch_dimensions)
  return _internal_rhs_batch_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DotDimensionNumbers::mutable_rhs_batch_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.DotDimensionNumbers.rhs_batch_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rhs_batch_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DotDimensionNumbers::_internal_rhs_batch_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rhs_batch_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DotDimensionNumbers::_internal_mutable_rhs_batch_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rhs_batch_dimensions_;
}

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

// RaggedDotDimensionNumbers

// .xla.DotDimensionNumbers dot_dimension_numbers = 1;
inline bool RaggedDotDimensionNumbers::has_dot_dimension_numbers() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dot_dimension_numbers_ != nullptr);
  return value;
}
inline void RaggedDotDimensionNumbers::clear_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dot_dimension_numbers_ != nullptr) _impl_.dot_dimension_numbers_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::DotDimensionNumbers& RaggedDotDimensionNumbers::_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& RaggedDotDimensionNumbers::dot_dimension_numbers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.RaggedDotDimensionNumbers.dot_dimension_numbers)
  return _internal_dot_dimension_numbers();
}
inline void RaggedDotDimensionNumbers::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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.RaggedDotDimensionNumbers.dot_dimension_numbers)
}
inline ::xla::DotDimensionNumbers* PROTOBUF_NULLABLE RaggedDotDimensionNumbers::release_dot_dimension_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::DotDimensionNumbers* temp = _impl_.dot_dimension_numbers_;
  _impl_.dot_dimension_numbers_ = nullptr;
  return temp;
}
inline ::xla::DotDimensionNumbers* PROTOBUF_NONNULL RaggedDotDimensionNumbers::_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 RaggedDotDimensionNumbers::mutable_dot_dimension_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::DotDimensionNumbers* _msg = _internal_mutable_dot_dimension_numbers();
  // @@protoc_insertion_point(field_mutable:xla.RaggedDotDimensionNumbers.dot_dimension_numbers)
  return _msg;
}
inline void RaggedDotDimensionNumbers::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 = 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_.dot_dimension_numbers_ = reinterpret_cast<::xla::DotDimensionNumbers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.RaggedDotDimensionNumbers.dot_dimension_numbers)
}

// repeated int64 lhs_ragged_dimensions = 2;
inline int RaggedDotDimensionNumbers::_internal_lhs_ragged_dimensions_size() const {
  return _internal_lhs_ragged_dimensions().size();
}
inline int RaggedDotDimensionNumbers::lhs_ragged_dimensions_size() const {
  return _internal_lhs_ragged_dimensions_size();
}
inline void RaggedDotDimensionNumbers::clear_lhs_ragged_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lhs_ragged_dimensions_.Clear();
}
inline ::int64_t RaggedDotDimensionNumbers::lhs_ragged_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.RaggedDotDimensionNumbers.lhs_ragged_dimensions)
  return _internal_lhs_ragged_dimensions().Get(index);
}
inline void RaggedDotDimensionNumbers::set_lhs_ragged_dimensions(int index, ::int64_t value) {
  _internal_mutable_lhs_ragged_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.RaggedDotDimensionNumbers.lhs_ragged_dimensions)
}
inline void RaggedDotDimensionNumbers::add_lhs_ragged_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lhs_ragged_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.RaggedDotDimensionNumbers.lhs_ragged_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& RaggedDotDimensionNumbers::lhs_ragged_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.RaggedDotDimensionNumbers.lhs_ragged_dimensions)
  return _internal_lhs_ragged_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL RaggedDotDimensionNumbers::mutable_lhs_ragged_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.RaggedDotDimensionNumbers.lhs_ragged_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lhs_ragged_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
RaggedDotDimensionNumbers::_internal_lhs_ragged_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lhs_ragged_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
RaggedDotDimensionNumbers::_internal_mutable_lhs_ragged_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lhs_ragged_dimensions_;
}

// repeated int64 rhs_group_dimensions = 3;
inline int RaggedDotDimensionNumbers::_internal_rhs_group_dimensions_size() const {
  return _internal_rhs_group_dimensions().size();
}
inline int RaggedDotDimensionNumbers::rhs_group_dimensions_size() const {
  return _internal_rhs_group_dimensions_size();
}
inline void RaggedDotDimensionNumbers::clear_rhs_group_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rhs_group_dimensions_.Clear();
}
inline ::int64_t RaggedDotDimensionNumbers::rhs_group_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.RaggedDotDimensionNumbers.rhs_group_dimensions)
  return _internal_rhs_group_dimensions().Get(index);
}
inline void RaggedDotDimensionNumbers::set_rhs_group_dimensions(int index, ::int64_t value) {
  _internal_mutable_rhs_group_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.RaggedDotDimensionNumbers.rhs_group_dimensions)
}
inline void RaggedDotDimensionNumbers::add_rhs_group_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_rhs_group_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.RaggedDotDimensionNumbers.rhs_group_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& RaggedDotDimensionNumbers::rhs_group_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.RaggedDotDimensionNumbers.rhs_group_dimensions)
  return _internal_rhs_group_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL RaggedDotDimensionNumbers::mutable_rhs_group_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.RaggedDotDimensionNumbers.rhs_group_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rhs_group_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
RaggedDotDimensionNumbers::_internal_rhs_group_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rhs_group_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
RaggedDotDimensionNumbers::_internal_mutable_rhs_group_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rhs_group_dimensions_;
}

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

// TriangularSolveOptions

// bool left_side = 1;
inline void TriangularSolveOptions::clear_left_side() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.left_side_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool TriangularSolveOptions::left_side() const {
  // @@protoc_insertion_point(field_get:xla.TriangularSolveOptions.left_side)
  return _internal_left_side();
}
inline void TriangularSolveOptions::set_left_side(bool value) {
  _internal_set_left_side(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.TriangularSolveOptions.left_side)
}
inline bool TriangularSolveOptions::_internal_left_side() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.left_side_;
}
inline void TriangularSolveOptions::_internal_set_left_side(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.left_side_ = value;
}

// bool lower = 2;
inline void TriangularSolveOptions::clear_lower() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = false;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline bool TriangularSolveOptions::lower() const {
  // @@protoc_insertion_point(field_get:xla.TriangularSolveOptions.lower)
  return _internal_lower();
}
inline void TriangularSolveOptions::set_lower(bool value) {
  _internal_set_lower(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.TriangularSolveOptions.lower)
}
inline bool TriangularSolveOptions::_internal_lower() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lower_;
}
inline void TriangularSolveOptions::_internal_set_lower(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = value;
}

// bool unit_diagonal = 3;
inline void TriangularSolveOptions::clear_unit_diagonal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unit_diagonal_ = false;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline bool TriangularSolveOptions::unit_diagonal() const {
  // @@protoc_insertion_point(field_get:xla.TriangularSolveOptions.unit_diagonal)
  return _internal_unit_diagonal();
}
inline void TriangularSolveOptions::set_unit_diagonal(bool value) {
  _internal_set_unit_diagonal(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.TriangularSolveOptions.unit_diagonal)
}
inline bool TriangularSolveOptions::_internal_unit_diagonal() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.unit_diagonal_;
}
inline void TriangularSolveOptions::_internal_set_unit_diagonal(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unit_diagonal_ = value;
}

// .xla.TriangularSolveOptions.Transpose transpose_a = 4;
inline void TriangularSolveOptions::clear_transpose_a() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_a_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::TriangularSolveOptions_Transpose TriangularSolveOptions::transpose_a() const {
  // @@protoc_insertion_point(field_get:xla.TriangularSolveOptions.transpose_a)
  return _internal_transpose_a();
}
inline void TriangularSolveOptions::set_transpose_a(::xla::TriangularSolveOptions_Transpose value) {
  _internal_set_transpose_a(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.TriangularSolveOptions.transpose_a)
}
inline ::xla::TriangularSolveOptions_Transpose TriangularSolveOptions::_internal_transpose_a() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::TriangularSolveOptions_Transpose>(_impl_.transpose_a_);
}
inline void TriangularSolveOptions::_internal_set_transpose_a(::xla::TriangularSolveOptions_Transpose value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_a_ = value;
}

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

// CholeskyOptions

// bool lower = 1;
inline void CholeskyOptions::clear_lower() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool CholeskyOptions::lower() const {
  // @@protoc_insertion_point(field_get:xla.CholeskyOptions.lower)
  return _internal_lower();
}
inline void CholeskyOptions::set_lower(bool value) {
  _internal_set_lower(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.CholeskyOptions.lower)
}
inline bool CholeskyOptions::_internal_lower() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lower_;
}
inline void CholeskyOptions::_internal_set_lower(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = value;
}

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

// SortOptions

// bool descending = 1;
inline void SortOptions::clear_descending() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.descending_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool SortOptions::descending() const {
  // @@protoc_insertion_point(field_get:xla.SortOptions.descending)
  return _internal_descending();
}
inline void SortOptions::set_descending(bool value) {
  _internal_set_descending(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.SortOptions.descending)
}
inline bool SortOptions::_internal_descending() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.descending_;
}
inline void SortOptions::_internal_set_descending(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.descending_ = value;
}

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

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

// FrontendAttributes

// map<string, string> map = 1;
inline int FrontendAttributes::_internal_map_size() const {
  return _internal_map().size();
}
inline int FrontendAttributes::map_size() const {
  return _internal_map_size();
}
inline void FrontendAttributes::clear_map() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.map_.Clear();
}
inline const ::google::protobuf::Map<std::string, std::string>& FrontendAttributes::_internal_map() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.map_.GetMap();
}
inline const ::google::protobuf::Map<std::string, std::string>& FrontendAttributes::map() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.FrontendAttributes.map)
  return _internal_map();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL FrontendAttributes::_internal_mutable_map() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.map_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL FrontendAttributes::mutable_map()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.FrontendAttributes.map)
  return _internal_mutable_map();
}

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

// Statistic

// string stat_name = 1;
inline void Statistic::clear_stat_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& Statistic::stat_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.Statistic.stat_name)
  return _internal_stat_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Statistic::set_stat_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.stat_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.Statistic.stat_name)
}
inline ::std::string* PROTOBUF_NONNULL Statistic::mutable_stat_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_stat_name();
  // @@protoc_insertion_point(field_mutable:xla.Statistic.stat_name)
  return _s;
}
inline const ::std::string& Statistic::_internal_stat_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stat_name_.Get();
}
inline void Statistic::_internal_set_stat_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.stat_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Statistic::_internal_mutable_stat_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.stat_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Statistic::release_stat_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.Statistic.stat_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.stat_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.stat_name_.Set("", GetArena());
  }
  return released;
}
inline void Statistic::set_allocated_stat_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_.stat_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.stat_name_.IsDefault()) {
    _impl_.stat_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.Statistic.stat_name)
}

// double stat_val = 2;
inline void Statistic::clear_stat_val() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_val_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline double Statistic::stat_val() const {
  // @@protoc_insertion_point(field_get:xla.Statistic.stat_val)
  return _internal_stat_val();
}
inline void Statistic::set_stat_val(double value) {
  _internal_set_stat_val(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.Statistic.stat_val)
}
inline double Statistic::_internal_stat_val() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stat_val_;
}
inline void Statistic::_internal_set_stat_val(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_val_ = value;
}

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

// StatisticsViz

// int64 stat_index_to_visualize = 1;
inline void StatisticsViz::clear_stat_index_to_visualize() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_index_to_visualize_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t StatisticsViz::stat_index_to_visualize() const {
  // @@protoc_insertion_point(field_get:xla.StatisticsViz.stat_index_to_visualize)
  return _internal_stat_index_to_visualize();
}
inline void StatisticsViz::set_stat_index_to_visualize(::int64_t value) {
  _internal_set_stat_index_to_visualize(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.StatisticsViz.stat_index_to_visualize)
}
inline ::int64_t StatisticsViz::_internal_stat_index_to_visualize() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stat_index_to_visualize_;
}
inline void StatisticsViz::_internal_set_stat_index_to_visualize(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_index_to_visualize_ = value;
}

// repeated .xla.Statistic statistics = 2;
inline int StatisticsViz::_internal_statistics_size() const {
  return _internal_statistics().size();
}
inline int StatisticsViz::statistics_size() const {
  return _internal_statistics_size();
}
inline void StatisticsViz::clear_statistics() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.statistics_.Clear();
}
inline ::xla::Statistic* PROTOBUF_NONNULL StatisticsViz::mutable_statistics(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.StatisticsViz.statistics)
  return _internal_mutable_statistics()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::Statistic>* PROTOBUF_NONNULL StatisticsViz::mutable_statistics()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.StatisticsViz.statistics)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_statistics();
}
inline const ::xla::Statistic& StatisticsViz::statistics(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.StatisticsViz.statistics)
  return _internal_statistics().Get(index);
}
inline ::xla::Statistic* PROTOBUF_NONNULL StatisticsViz::add_statistics()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::Statistic* _add = _internal_mutable_statistics()->Add();
  // @@protoc_insertion_point(field_add:xla.StatisticsViz.statistics)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::Statistic>& StatisticsViz::statistics() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.StatisticsViz.statistics)
  return _internal_statistics();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::Statistic>&
StatisticsViz::_internal_statistics() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.statistics_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::Statistic>* PROTOBUF_NONNULL
StatisticsViz::_internal_mutable_statistics() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.statistics_;
}

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

// MeshProto_MeshAxis

// string name = 1;
inline void MeshProto_MeshAxis::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& MeshProto_MeshAxis::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.MeshProto.MeshAxis.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MeshProto_MeshAxis::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.MeshProto.MeshAxis.name)
}
inline ::std::string* PROTOBUF_NONNULL MeshProto_MeshAxis::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:xla.MeshProto.MeshAxis.name)
  return _s;
}
inline const ::std::string& MeshProto_MeshAxis::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void MeshProto_MeshAxis::_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 MeshProto_MeshAxis::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MeshProto_MeshAxis::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.MeshProto.MeshAxis.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 MeshProto_MeshAxis::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.MeshProto.MeshAxis.name)
}

// int64 size = 2;
inline void MeshProto_MeshAxis::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t MeshProto_MeshAxis::size() const {
  // @@protoc_insertion_point(field_get:xla.MeshProto.MeshAxis.size)
  return _internal_size();
}
inline void MeshProto_MeshAxis::set_size(::int64_t value) {
  _internal_set_size(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.MeshProto.MeshAxis.size)
}
inline ::int64_t MeshProto_MeshAxis::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void MeshProto_MeshAxis::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

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

// MeshProto

// repeated .xla.MeshProto.MeshAxis axes = 1;
inline int MeshProto::_internal_axes_size() const {
  return _internal_axes().size();
}
inline int MeshProto::axes_size() const {
  return _internal_axes_size();
}
inline void MeshProto::clear_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.axes_.Clear();
}
inline ::xla::MeshProto_MeshAxis* PROTOBUF_NONNULL MeshProto::mutable_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.MeshProto.axes)
  return _internal_mutable_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>* PROTOBUF_NONNULL MeshProto::mutable_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.MeshProto.axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_axes();
}
inline const ::xla::MeshProto_MeshAxis& MeshProto::axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.MeshProto.axes)
  return _internal_axes().Get(index);
}
inline ::xla::MeshProto_MeshAxis* PROTOBUF_NONNULL MeshProto::add_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::MeshProto_MeshAxis* _add = _internal_mutable_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.MeshProto.axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>& MeshProto::axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.MeshProto.axes)
  return _internal_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>&
MeshProto::_internal_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::MeshProto_MeshAxis>* PROTOBUF_NONNULL
MeshProto::_internal_mutable_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.axes_;
}

// repeated int64 device_ids = 2;
inline int MeshProto::_internal_device_ids_size() const {
  return _internal_device_ids().size();
}
inline int MeshProto::device_ids_size() const {
  return _internal_device_ids_size();
}
inline void MeshProto::clear_device_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_ids_.Clear();
}
inline ::int64_t MeshProto::device_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.MeshProto.device_ids)
  return _internal_device_ids().Get(index);
}
inline void MeshProto::set_device_ids(int index, ::int64_t value) {
  _internal_mutable_device_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.MeshProto.device_ids)
}
inline void MeshProto::add_device_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_device_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.MeshProto.device_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& MeshProto::device_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.MeshProto.device_ids)
  return _internal_device_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL MeshProto::mutable_device_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.MeshProto.device_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_device_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
MeshProto::_internal_device_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
MeshProto::_internal_mutable_device_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.device_ids_;
}

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

// AxisRefProto_SubAxis

// int64 pre_size = 1;
inline void AxisRefProto_SubAxis::clear_pre_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pre_size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t AxisRefProto_SubAxis::pre_size() const {
  // @@protoc_insertion_point(field_get:xla.AxisRefProto.SubAxis.pre_size)
  return _internal_pre_size();
}
inline void AxisRefProto_SubAxis::set_pre_size(::int64_t value) {
  _internal_set_pre_size(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.AxisRefProto.SubAxis.pre_size)
}
inline ::int64_t AxisRefProto_SubAxis::_internal_pre_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pre_size_;
}
inline void AxisRefProto_SubAxis::_internal_set_pre_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pre_size_ = value;
}

// int64 size = 2;
inline void AxisRefProto_SubAxis::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t AxisRefProto_SubAxis::size() const {
  // @@protoc_insertion_point(field_get:xla.AxisRefProto.SubAxis.size)
  return _internal_size();
}
inline void AxisRefProto_SubAxis::set_size(::int64_t value) {
  _internal_set_size(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AxisRefProto.SubAxis.size)
}
inline ::int64_t AxisRefProto_SubAxis::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void AxisRefProto_SubAxis::_internal_set_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

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

// AxisRefProto

// int64 mesh_axis_index = 1;
inline void AxisRefProto::clear_mesh_axis_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mesh_axis_index_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t AxisRefProto::mesh_axis_index() const {
  // @@protoc_insertion_point(field_get:xla.AxisRefProto.mesh_axis_index)
  return _internal_mesh_axis_index();
}
inline void AxisRefProto::set_mesh_axis_index(::int64_t value) {
  _internal_set_mesh_axis_index(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.AxisRefProto.mesh_axis_index)
}
inline ::int64_t AxisRefProto::_internal_mesh_axis_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mesh_axis_index_;
}
inline void AxisRefProto::_internal_set_mesh_axis_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mesh_axis_index_ = value;
}

// optional .xla.AxisRefProto.SubAxis sub_axis_info = 2;
inline bool AxisRefProto::has_sub_axis_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.sub_axis_info_ != nullptr);
  return value;
}
inline void AxisRefProto::clear_sub_axis_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sub_axis_info_ != nullptr) _impl_.sub_axis_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::AxisRefProto_SubAxis& AxisRefProto::_internal_sub_axis_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::AxisRefProto_SubAxis* p = _impl_.sub_axis_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::AxisRefProto_SubAxis&>(::xla::_AxisRefProto_SubAxis_default_instance_);
}
inline const ::xla::AxisRefProto_SubAxis& AxisRefProto::sub_axis_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.AxisRefProto.sub_axis_info)
  return _internal_sub_axis_info();
}
inline void AxisRefProto::unsafe_arena_set_allocated_sub_axis_info(
    ::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sub_axis_info_);
  }
  _impl_.sub_axis_info_ = reinterpret_cast<::xla::AxisRefProto_SubAxis*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.AxisRefProto.sub_axis_info)
}
inline ::xla::AxisRefProto_SubAxis* PROTOBUF_NULLABLE AxisRefProto::release_sub_axis_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::AxisRefProto_SubAxis* released = _impl_.sub_axis_info_;
  _impl_.sub_axis_info_ = 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::AxisRefProto_SubAxis* PROTOBUF_NULLABLE AxisRefProto::unsafe_arena_release_sub_axis_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.AxisRefProto.sub_axis_info)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::AxisRefProto_SubAxis* temp = _impl_.sub_axis_info_;
  _impl_.sub_axis_info_ = nullptr;
  return temp;
}
inline ::xla::AxisRefProto_SubAxis* PROTOBUF_NONNULL AxisRefProto::_internal_mutable_sub_axis_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sub_axis_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::AxisRefProto_SubAxis>(GetArena());
    _impl_.sub_axis_info_ = reinterpret_cast<::xla::AxisRefProto_SubAxis*>(p);
  }
  return _impl_.sub_axis_info_;
}
inline ::xla::AxisRefProto_SubAxis* PROTOBUF_NONNULL AxisRefProto::mutable_sub_axis_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::AxisRefProto_SubAxis* _msg = _internal_mutable_sub_axis_info();
  // @@protoc_insertion_point(field_mutable:xla.AxisRefProto.sub_axis_info)
  return _msg;
}
inline void AxisRefProto::set_allocated_sub_axis_info(::xla::AxisRefProto_SubAxis* 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_.sub_axis_info_);
  }

  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_.sub_axis_info_ = reinterpret_cast<::xla::AxisRefProto_SubAxis*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.AxisRefProto.sub_axis_info)
}

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

// NamedShardingProto_DimensionSharding

// repeated .xla.AxisRefProto axes = 1;
inline int NamedShardingProto_DimensionSharding::_internal_axes_size() const {
  return _internal_axes().size();
}
inline int NamedShardingProto_DimensionSharding::axes_size() const {
  return _internal_axes_size();
}
inline void NamedShardingProto_DimensionSharding::clear_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.axes_.Clear();
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto_DimensionSharding::mutable_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.DimensionSharding.axes)
  return _internal_mutable_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL NamedShardingProto_DimensionSharding::mutable_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.DimensionSharding.axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_axes();
}
inline const ::xla::AxisRefProto& NamedShardingProto_DimensionSharding::axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.DimensionSharding.axes)
  return _internal_axes().Get(index);
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto_DimensionSharding::add_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AxisRefProto* _add = _internal_mutable_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.DimensionSharding.axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& NamedShardingProto_DimensionSharding::axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.DimensionSharding.axes)
  return _internal_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>&
NamedShardingProto_DimensionSharding::_internal_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL
NamedShardingProto_DimensionSharding::_internal_mutable_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.axes_;
}

// bool is_closed = 2;
inline void NamedShardingProto_DimensionSharding::clear_is_closed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_closed_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool NamedShardingProto_DimensionSharding::is_closed() const {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.DimensionSharding.is_closed)
  return _internal_is_closed();
}
inline void NamedShardingProto_DimensionSharding::set_is_closed(bool value) {
  _internal_set_is_closed(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.NamedShardingProto.DimensionSharding.is_closed)
}
inline bool NamedShardingProto_DimensionSharding::_internal_is_closed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_closed_;
}
inline void NamedShardingProto_DimensionSharding::_internal_set_is_closed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_closed_ = value;
}

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

// NamedShardingProto

// .xla.MeshProto mesh = 2;
inline bool NamedShardingProto::has_mesh() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mesh_ != nullptr);
  return value;
}
inline void NamedShardingProto::clear_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.mesh_ != nullptr) _impl_.mesh_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::MeshProto& NamedShardingProto::_internal_mesh() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::MeshProto* p = _impl_.mesh_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::MeshProto&>(::xla::_MeshProto_default_instance_);
}
inline const ::xla::MeshProto& NamedShardingProto::mesh() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.mesh)
  return _internal_mesh();
}
inline void NamedShardingProto::unsafe_arena_set_allocated_mesh(
    ::xla::MeshProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mesh_);
  }
  _impl_.mesh_ = reinterpret_cast<::xla::MeshProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.NamedShardingProto.mesh)
}
inline ::xla::MeshProto* PROTOBUF_NULLABLE NamedShardingProto::release_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::MeshProto* released = _impl_.mesh_;
  _impl_.mesh_ = 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::MeshProto* PROTOBUF_NULLABLE NamedShardingProto::unsafe_arena_release_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.NamedShardingProto.mesh)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::MeshProto* temp = _impl_.mesh_;
  _impl_.mesh_ = nullptr;
  return temp;
}
inline ::xla::MeshProto* PROTOBUF_NONNULL NamedShardingProto::_internal_mutable_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.mesh_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::MeshProto>(GetArena());
    _impl_.mesh_ = reinterpret_cast<::xla::MeshProto*>(p);
  }
  return _impl_.mesh_;
}
inline ::xla::MeshProto* PROTOBUF_NONNULL NamedShardingProto::mutable_mesh()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::MeshProto* _msg = _internal_mutable_mesh();
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.mesh)
  return _msg;
}
inline void NamedShardingProto::set_allocated_mesh(::xla::MeshProto* 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_.mesh_);
  }

  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_.mesh_ = reinterpret_cast<::xla::MeshProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.NamedShardingProto.mesh)
}

// repeated .xla.NamedShardingProto.DimensionSharding dim_shardings = 3;
inline int NamedShardingProto::_internal_dim_shardings_size() const {
  return _internal_dim_shardings().size();
}
inline int NamedShardingProto::dim_shardings_size() const {
  return _internal_dim_shardings_size();
}
inline void NamedShardingProto::clear_dim_shardings() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dim_shardings_.Clear();
}
inline ::xla::NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL NamedShardingProto::mutable_dim_shardings(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.dim_shardings)
  return _internal_mutable_dim_shardings()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>* PROTOBUF_NONNULL NamedShardingProto::mutable_dim_shardings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.dim_shardings)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dim_shardings();
}
inline const ::xla::NamedShardingProto_DimensionSharding& NamedShardingProto::dim_shardings(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.dim_shardings)
  return _internal_dim_shardings().Get(index);
}
inline ::xla::NamedShardingProto_DimensionSharding* PROTOBUF_NONNULL NamedShardingProto::add_dim_shardings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::NamedShardingProto_DimensionSharding* _add = _internal_mutable_dim_shardings()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.dim_shardings)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>& NamedShardingProto::dim_shardings() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.dim_shardings)
  return _internal_dim_shardings();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>&
NamedShardingProto::_internal_dim_shardings() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dim_shardings_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::NamedShardingProto_DimensionSharding>* PROTOBUF_NONNULL
NamedShardingProto::_internal_mutable_dim_shardings() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dim_shardings_;
}

// repeated .xla.AxisRefProto replicated_axes = 4;
inline int NamedShardingProto::_internal_replicated_axes_size() const {
  return _internal_replicated_axes().size();
}
inline int NamedShardingProto::replicated_axes_size() const {
  return _internal_replicated_axes_size();
}
inline void NamedShardingProto::clear_replicated_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replicated_axes_.Clear();
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::mutable_replicated_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.replicated_axes)
  return _internal_mutable_replicated_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL NamedShardingProto::mutable_replicated_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.replicated_axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replicated_axes();
}
inline const ::xla::AxisRefProto& NamedShardingProto::replicated_axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.replicated_axes)
  return _internal_replicated_axes().Get(index);
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::add_replicated_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AxisRefProto* _add = _internal_mutable_replicated_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.replicated_axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& NamedShardingProto::replicated_axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.replicated_axes)
  return _internal_replicated_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>&
NamedShardingProto::_internal_replicated_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replicated_axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL
NamedShardingProto::_internal_mutable_replicated_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replicated_axes_;
}

// repeated .xla.AxisRefProto unreduced_axes = 5;
inline int NamedShardingProto::_internal_unreduced_axes_size() const {
  return _internal_unreduced_axes().size();
}
inline int NamedShardingProto::unreduced_axes_size() const {
  return _internal_unreduced_axes_size();
}
inline void NamedShardingProto::clear_unreduced_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unreduced_axes_.Clear();
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::mutable_unreduced_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.unreduced_axes)
  return _internal_mutable_unreduced_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL NamedShardingProto::mutable_unreduced_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.unreduced_axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_unreduced_axes();
}
inline const ::xla::AxisRefProto& NamedShardingProto::unreduced_axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.unreduced_axes)
  return _internal_unreduced_axes().Get(index);
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::add_unreduced_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AxisRefProto* _add = _internal_mutable_unreduced_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.unreduced_axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& NamedShardingProto::unreduced_axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.unreduced_axes)
  return _internal_unreduced_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>&
NamedShardingProto::_internal_unreduced_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.unreduced_axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL
NamedShardingProto::_internal_mutable_unreduced_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.unreduced_axes_;
}

// repeated .xla.AxisRefProto manual_axes = 7;
inline int NamedShardingProto::_internal_manual_axes_size() const {
  return _internal_manual_axes().size();
}
inline int NamedShardingProto::manual_axes_size() const {
  return _internal_manual_axes_size();
}
inline void NamedShardingProto::clear_manual_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.manual_axes_.Clear();
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::mutable_manual_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.manual_axes)
  return _internal_mutable_manual_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL NamedShardingProto::mutable_manual_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.manual_axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_manual_axes();
}
inline const ::xla::AxisRefProto& NamedShardingProto::manual_axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.manual_axes)
  return _internal_manual_axes().Get(index);
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL NamedShardingProto::add_manual_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AxisRefProto* _add = _internal_mutable_manual_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.manual_axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& NamedShardingProto::manual_axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.manual_axes)
  return _internal_manual_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>&
NamedShardingProto::_internal_manual_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.manual_axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL
NamedShardingProto::_internal_mutable_manual_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.manual_axes_;
}

// repeated .xla.OpMetadata metadata = 6;
inline int NamedShardingProto::_internal_metadata_size() const {
  return _internal_metadata().size();
}
inline int NamedShardingProto::metadata_size() const {
  return _internal_metadata_size();
}
inline void NamedShardingProto::clear_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metadata_.Clear();
}
inline ::xla::OpMetadata* PROTOBUF_NONNULL NamedShardingProto::mutable_metadata(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.NamedShardingProto.metadata)
  return _internal_mutable_metadata()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL NamedShardingProto::mutable_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.NamedShardingProto.metadata)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_metadata();
}
inline const ::xla::OpMetadata& NamedShardingProto::metadata(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.NamedShardingProto.metadata)
  return _internal_metadata().Get(index);
}
inline ::xla::OpMetadata* PROTOBUF_NONNULL NamedShardingProto::add_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OpMetadata* _add = _internal_mutable_metadata()->Add();
  // @@protoc_insertion_point(field_add:xla.NamedShardingProto.metadata)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& NamedShardingProto::metadata() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.NamedShardingProto.metadata)
  return _internal_metadata();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>&
NamedShardingProto::_internal_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.metadata_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL
NamedShardingProto::_internal_mutable_metadata() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.metadata_;
}

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

// OpSharding

// .xla.OpSharding.Type type = 1;
inline void OpSharding::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::xla::OpSharding_Type OpSharding::type() const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.type)
  return _internal_type();
}
inline void OpSharding::set_type(::xla::OpSharding_Type value) {
  _internal_set_type(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.OpSharding.type)
}
inline ::xla::OpSharding_Type OpSharding::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::OpSharding_Type>(_impl_.type_);
}
inline void OpSharding::_internal_set_type(::xla::OpSharding_Type value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// .xla.ShapeProto tile_shape = 2;
inline bool OpSharding::has_tile_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.tile_shape_ != nullptr);
  return value;
}
inline void OpSharding::clear_tile_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.tile_shape_ != nullptr) _impl_.tile_shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::ShapeProto& OpSharding::_internal_tile_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.tile_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& OpSharding::tile_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpSharding.tile_shape)
  return _internal_tile_shape();
}
inline void OpSharding::unsafe_arena_set_allocated_tile_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tile_shape_);
  }
  _impl_.tile_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OpSharding.tile_shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE OpSharding::release_tile_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.tile_shape_;
  _impl_.tile_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 OpSharding::unsafe_arena_release_tile_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpSharding.tile_shape)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.tile_shape_;
  _impl_.tile_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL OpSharding::_internal_mutable_tile_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.tile_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.tile_shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.tile_shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL OpSharding::mutable_tile_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_tile_shape();
  // @@protoc_insertion_point(field_mutable:xla.OpSharding.tile_shape)
  return _msg;
}
inline void OpSharding::set_allocated_tile_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_.tile_shape_);
  }

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

// repeated int64 tile_assignment_dimensions = 3;
inline int OpSharding::_internal_tile_assignment_dimensions_size() const {
  return _internal_tile_assignment_dimensions().size();
}
inline int OpSharding::tile_assignment_dimensions_size() const {
  return _internal_tile_assignment_dimensions_size();
}
inline void OpSharding::clear_tile_assignment_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tile_assignment_dimensions_.Clear();
}
inline ::int64_t OpSharding::tile_assignment_dimensions(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.tile_assignment_dimensions)
  return _internal_tile_assignment_dimensions().Get(index);
}
inline void OpSharding::set_tile_assignment_dimensions(int index, ::int64_t value) {
  _internal_mutable_tile_assignment_dimensions()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpSharding.tile_assignment_dimensions)
}
inline void OpSharding::add_tile_assignment_dimensions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_tile_assignment_dimensions()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpSharding.tile_assignment_dimensions)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OpSharding::tile_assignment_dimensions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.tile_assignment_dimensions)
  return _internal_tile_assignment_dimensions();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OpSharding::mutable_tile_assignment_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.tile_assignment_dimensions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tile_assignment_dimensions();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OpSharding::_internal_tile_assignment_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tile_assignment_dimensions_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_tile_assignment_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tile_assignment_dimensions_;
}

// repeated int64 tile_assignment_devices = 4;
inline int OpSharding::_internal_tile_assignment_devices_size() const {
  return _internal_tile_assignment_devices().size();
}
inline int OpSharding::tile_assignment_devices_size() const {
  return _internal_tile_assignment_devices_size();
}
inline void OpSharding::clear_tile_assignment_devices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tile_assignment_devices_.Clear();
}
inline ::int64_t OpSharding::tile_assignment_devices(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.tile_assignment_devices)
  return _internal_tile_assignment_devices().Get(index);
}
inline void OpSharding::set_tile_assignment_devices(int index, ::int64_t value) {
  _internal_mutable_tile_assignment_devices()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpSharding.tile_assignment_devices)
}
inline void OpSharding::add_tile_assignment_devices(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_tile_assignment_devices()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpSharding.tile_assignment_devices)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OpSharding::tile_assignment_devices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.tile_assignment_devices)
  return _internal_tile_assignment_devices();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OpSharding::mutable_tile_assignment_devices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.tile_assignment_devices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tile_assignment_devices();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OpSharding::_internal_tile_assignment_devices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tile_assignment_devices_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_tile_assignment_devices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tile_assignment_devices_;
}

// repeated .xla.OpSharding tuple_shardings = 5;
inline int OpSharding::_internal_tuple_shardings_size() const {
  return _internal_tuple_shardings().size();
}
inline int OpSharding::tuple_shardings_size() const {
  return _internal_tuple_shardings_size();
}
inline void OpSharding::clear_tuple_shardings() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_shardings_.Clear();
}
inline ::xla::OpSharding* PROTOBUF_NONNULL OpSharding::mutable_tuple_shardings(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.OpSharding.tuple_shardings)
  return _internal_mutable_tuple_shardings()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL OpSharding::mutable_tuple_shardings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.tuple_shardings)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tuple_shardings();
}
inline const ::xla::OpSharding& OpSharding::tuple_shardings(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpSharding.tuple_shardings)
  return _internal_tuple_shardings().Get(index);
}
inline ::xla::OpSharding* PROTOBUF_NONNULL OpSharding::add_tuple_shardings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OpSharding* _add = _internal_mutable_tuple_shardings()->Add();
  // @@protoc_insertion_point(field_add:xla.OpSharding.tuple_shardings)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& OpSharding::tuple_shardings() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.tuple_shardings)
  return _internal_tuple_shardings();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>&
OpSharding::_internal_tuple_shardings() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tuple_shardings_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_tuple_shardings() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tuple_shardings_;
}

// bool replicate_on_last_tile_dim = 6;
inline void OpSharding::clear_replicate_on_last_tile_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replicate_on_last_tile_dim_ = false;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline bool OpSharding::replicate_on_last_tile_dim() const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.replicate_on_last_tile_dim)
  return _internal_replicate_on_last_tile_dim();
}
inline void OpSharding::set_replicate_on_last_tile_dim(bool value) {
  _internal_set_replicate_on_last_tile_dim(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.OpSharding.replicate_on_last_tile_dim)
}
inline bool OpSharding::_internal_replicate_on_last_tile_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replicate_on_last_tile_dim_;
}
inline void OpSharding::_internal_set_replicate_on_last_tile_dim(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replicate_on_last_tile_dim_ = value;
}

// repeated .xla.OpMetadata metadata = 7;
inline int OpSharding::_internal_metadata_size() const {
  return _internal_metadata().size();
}
inline int OpSharding::metadata_size() const {
  return _internal_metadata_size();
}
inline void OpSharding::clear_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metadata_.Clear();
}
inline ::xla::OpMetadata* PROTOBUF_NONNULL OpSharding::mutable_metadata(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.OpSharding.metadata)
  return _internal_mutable_metadata()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL OpSharding::mutable_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.metadata)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_metadata();
}
inline const ::xla::OpMetadata& OpSharding::metadata(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpSharding.metadata)
  return _internal_metadata().Get(index);
}
inline ::xla::OpMetadata* PROTOBUF_NONNULL OpSharding::add_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OpMetadata* _add = _internal_mutable_metadata()->Add();
  // @@protoc_insertion_point(field_add:xla.OpSharding.metadata)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& OpSharding::metadata() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.metadata)
  return _internal_metadata();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>&
OpSharding::_internal_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.metadata_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_metadata() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.metadata_;
}

// repeated .xla.OpSharding.Type last_tile_dims = 8;
inline int OpSharding::_internal_last_tile_dims_size() const {
  return _internal_last_tile_dims().size();
}
inline int OpSharding::last_tile_dims_size() const {
  return _internal_last_tile_dims_size();
}
inline void OpSharding::clear_last_tile_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.last_tile_dims_.Clear();
}
inline ::xla::OpSharding_Type OpSharding::last_tile_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.last_tile_dims)
  return static_cast<::xla::OpSharding_Type>(_internal_last_tile_dims().Get(index));
}
inline void OpSharding::set_last_tile_dims(int index, ::xla::OpSharding_Type value) {
  _internal_mutable_last_tile_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpSharding.last_tile_dims)
}
inline void OpSharding::add_last_tile_dims(::xla::OpSharding_Type value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_last_tile_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpSharding.last_tile_dims)
}
inline const ::google::protobuf::RepeatedField<int>& OpSharding::last_tile_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.last_tile_dims)
  return _internal_last_tile_dims();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL OpSharding::mutable_last_tile_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.last_tile_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_last_tile_dims();
}
inline const ::google::protobuf::RepeatedField<int>& OpSharding::_internal_last_tile_dims()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.last_tile_dims_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_last_tile_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.last_tile_dims_;
}

// repeated int64 iota_reshape_dims = 9;
inline int OpSharding::_internal_iota_reshape_dims_size() const {
  return _internal_iota_reshape_dims().size();
}
inline int OpSharding::iota_reshape_dims_size() const {
  return _internal_iota_reshape_dims_size();
}
inline void OpSharding::clear_iota_reshape_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.iota_reshape_dims_.Clear();
}
inline ::int64_t OpSharding::iota_reshape_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.iota_reshape_dims)
  return _internal_iota_reshape_dims().Get(index);
}
inline void OpSharding::set_iota_reshape_dims(int index, ::int64_t value) {
  _internal_mutable_iota_reshape_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpSharding.iota_reshape_dims)
}
inline void OpSharding::add_iota_reshape_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_iota_reshape_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpSharding.iota_reshape_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OpSharding::iota_reshape_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.iota_reshape_dims)
  return _internal_iota_reshape_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OpSharding::mutable_iota_reshape_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.iota_reshape_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_iota_reshape_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OpSharding::_internal_iota_reshape_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.iota_reshape_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_iota_reshape_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.iota_reshape_dims_;
}

// repeated int32 iota_transpose_perm = 10;
inline int OpSharding::_internal_iota_transpose_perm_size() const {
  return _internal_iota_transpose_perm().size();
}
inline int OpSharding::iota_transpose_perm_size() const {
  return _internal_iota_transpose_perm_size();
}
inline void OpSharding::clear_iota_transpose_perm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.iota_transpose_perm_.Clear();
}
inline ::int32_t OpSharding::iota_transpose_perm(int index) const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.iota_transpose_perm)
  return _internal_iota_transpose_perm().Get(index);
}
inline void OpSharding::set_iota_transpose_perm(int index, ::int32_t value) {
  _internal_mutable_iota_transpose_perm()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OpSharding.iota_transpose_perm)
}
inline void OpSharding::add_iota_transpose_perm(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_iota_transpose_perm()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OpSharding.iota_transpose_perm)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& OpSharding::iota_transpose_perm() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OpSharding.iota_transpose_perm)
  return _internal_iota_transpose_perm();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL OpSharding::mutable_iota_transpose_perm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OpSharding.iota_transpose_perm)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_iota_transpose_perm();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
OpSharding::_internal_iota_transpose_perm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.iota_transpose_perm_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
OpSharding::_internal_mutable_iota_transpose_perm() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.iota_transpose_perm_;
}

// bool is_shard_group = 11;
inline void OpSharding::clear_is_shard_group() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_shard_group_ = false;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline bool OpSharding::is_shard_group() const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.is_shard_group)
  return _internal_is_shard_group();
}
inline void OpSharding::set_is_shard_group(bool value) {
  _internal_set_is_shard_group(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.OpSharding.is_shard_group)
}
inline bool OpSharding::_internal_is_shard_group() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_shard_group_;
}
inline void OpSharding::_internal_set_is_shard_group(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_shard_group_ = value;
}

// int64 shard_group_id = 12;
inline void OpSharding::clear_shard_group_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shard_group_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::int64_t OpSharding::shard_group_id() const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.shard_group_id)
  return _internal_shard_group_id();
}
inline void OpSharding::set_shard_group_id(::int64_t value) {
  _internal_set_shard_group_id(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.OpSharding.shard_group_id)
}
inline ::int64_t OpSharding::_internal_shard_group_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shard_group_id_;
}
inline void OpSharding::_internal_set_shard_group_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shard_group_id_ = value;
}

// .xla.OpSharding.ShardGroupType shard_group_type = 13;
inline void OpSharding::clear_shard_group_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shard_group_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline ::xla::OpSharding_ShardGroupType OpSharding::shard_group_type() const {
  // @@protoc_insertion_point(field_get:xla.OpSharding.shard_group_type)
  return _internal_shard_group_type();
}
inline void OpSharding::set_shard_group_type(::xla::OpSharding_ShardGroupType value) {
  _internal_set_shard_group_type(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.OpSharding.shard_group_type)
}
inline ::xla::OpSharding_ShardGroupType OpSharding::_internal_shard_group_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::OpSharding_ShardGroupType>(_impl_.shard_group_type_);
}
inline void OpSharding::_internal_set_shard_group_type(::xla::OpSharding_ShardGroupType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shard_group_type_ = value;
}

// optional .xla.NamedShardingProto named_sharding = 14;
inline bool OpSharding::has_named_sharding() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.named_sharding_ != nullptr);
  return value;
}
inline void OpSharding::clear_named_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.named_sharding_ != nullptr) _impl_.named_sharding_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::NamedShardingProto& OpSharding::_internal_named_sharding() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::NamedShardingProto* p = _impl_.named_sharding_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::NamedShardingProto&>(::xla::_NamedShardingProto_default_instance_);
}
inline const ::xla::NamedShardingProto& OpSharding::named_sharding() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OpSharding.named_sharding)
  return _internal_named_sharding();
}
inline void OpSharding::unsafe_arena_set_allocated_named_sharding(
    ::xla::NamedShardingProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.named_sharding_);
  }
  _impl_.named_sharding_ = reinterpret_cast<::xla::NamedShardingProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OpSharding.named_sharding)
}
inline ::xla::NamedShardingProto* PROTOBUF_NULLABLE OpSharding::release_named_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::NamedShardingProto* released = _impl_.named_sharding_;
  _impl_.named_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::NamedShardingProto* PROTOBUF_NULLABLE OpSharding::unsafe_arena_release_named_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpSharding.named_sharding)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::NamedShardingProto* temp = _impl_.named_sharding_;
  _impl_.named_sharding_ = nullptr;
  return temp;
}
inline ::xla::NamedShardingProto* PROTOBUF_NONNULL OpSharding::_internal_mutable_named_sharding() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.named_sharding_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::NamedShardingProto>(GetArena());
    _impl_.named_sharding_ = reinterpret_cast<::xla::NamedShardingProto*>(p);
  }
  return _impl_.named_sharding_;
}
inline ::xla::NamedShardingProto* PROTOBUF_NONNULL OpSharding::mutable_named_sharding()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::NamedShardingProto* _msg = _internal_mutable_named_sharding();
  // @@protoc_insertion_point(field_mutable:xla.OpSharding.named_sharding)
  return _msg;
}
inline void OpSharding::set_allocated_named_sharding(::xla::NamedShardingProto* 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_.named_sharding_);
  }

  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_.named_sharding_ = reinterpret_cast<::xla::NamedShardingProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OpSharding.named_sharding)
}

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

// ReplicaGroup

// repeated int64 replica_ids = 1;
inline int ReplicaGroup::_internal_replica_ids_size() const {
  return _internal_replica_ids().size();
}
inline int ReplicaGroup::replica_ids_size() const {
  return _internal_replica_ids_size();
}
inline void ReplicaGroup::clear_replica_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replica_ids_.Clear();
}
inline ::int64_t ReplicaGroup::replica_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.ReplicaGroup.replica_ids)
  return _internal_replica_ids().Get(index);
}
inline void ReplicaGroup::set_replica_ids(int index, ::int64_t value) {
  _internal_mutable_replica_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ReplicaGroup.replica_ids)
}
inline void ReplicaGroup::add_replica_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_replica_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ReplicaGroup.replica_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ReplicaGroup::replica_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ReplicaGroup.replica_ids)
  return _internal_replica_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ReplicaGroup::mutable_replica_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ReplicaGroup.replica_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replica_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ReplicaGroup::_internal_replica_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ReplicaGroup::_internal_mutable_replica_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_ids_;
}

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

// MeshAxesReplicaGroupListProto

// .xla.MeshProto mesh = 1;
inline bool MeshAxesReplicaGroupListProto::has_mesh() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mesh_ != nullptr);
  return value;
}
inline void MeshAxesReplicaGroupListProto::clear_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.mesh_ != nullptr) _impl_.mesh_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::MeshProto& MeshAxesReplicaGroupListProto::_internal_mesh() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::MeshProto* p = _impl_.mesh_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::MeshProto&>(::xla::_MeshProto_default_instance_);
}
inline const ::xla::MeshProto& MeshAxesReplicaGroupListProto::mesh() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.MeshAxesReplicaGroupListProto.mesh)
  return _internal_mesh();
}
inline void MeshAxesReplicaGroupListProto::unsafe_arena_set_allocated_mesh(
    ::xla::MeshProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mesh_);
  }
  _impl_.mesh_ = reinterpret_cast<::xla::MeshProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.MeshAxesReplicaGroupListProto.mesh)
}
inline ::xla::MeshProto* PROTOBUF_NULLABLE MeshAxesReplicaGroupListProto::release_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::MeshProto* released = _impl_.mesh_;
  _impl_.mesh_ = 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::MeshProto* PROTOBUF_NULLABLE MeshAxesReplicaGroupListProto::unsafe_arena_release_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.MeshAxesReplicaGroupListProto.mesh)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::MeshProto* temp = _impl_.mesh_;
  _impl_.mesh_ = nullptr;
  return temp;
}
inline ::xla::MeshProto* PROTOBUF_NONNULL MeshAxesReplicaGroupListProto::_internal_mutable_mesh() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.mesh_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::MeshProto>(GetArena());
    _impl_.mesh_ = reinterpret_cast<::xla::MeshProto*>(p);
  }
  return _impl_.mesh_;
}
inline ::xla::MeshProto* PROTOBUF_NONNULL MeshAxesReplicaGroupListProto::mutable_mesh()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::MeshProto* _msg = _internal_mutable_mesh();
  // @@protoc_insertion_point(field_mutable:xla.MeshAxesReplicaGroupListProto.mesh)
  return _msg;
}
inline void MeshAxesReplicaGroupListProto::set_allocated_mesh(::xla::MeshProto* 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_.mesh_);
  }

  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_.mesh_ = reinterpret_cast<::xla::MeshProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.MeshAxesReplicaGroupListProto.mesh)
}

// repeated .xla.AxisRefProto axes = 2;
inline int MeshAxesReplicaGroupListProto::_internal_axes_size() const {
  return _internal_axes().size();
}
inline int MeshAxesReplicaGroupListProto::axes_size() const {
  return _internal_axes_size();
}
inline void MeshAxesReplicaGroupListProto::clear_axes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.axes_.Clear();
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL MeshAxesReplicaGroupListProto::mutable_axes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.MeshAxesReplicaGroupListProto.axes)
  return _internal_mutable_axes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL MeshAxesReplicaGroupListProto::mutable_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.MeshAxesReplicaGroupListProto.axes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_axes();
}
inline const ::xla::AxisRefProto& MeshAxesReplicaGroupListProto::axes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.MeshAxesReplicaGroupListProto.axes)
  return _internal_axes().Get(index);
}
inline ::xla::AxisRefProto* PROTOBUF_NONNULL MeshAxesReplicaGroupListProto::add_axes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::AxisRefProto* _add = _internal_mutable_axes()->Add();
  // @@protoc_insertion_point(field_add:xla.MeshAxesReplicaGroupListProto.axes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>& MeshAxesReplicaGroupListProto::axes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.MeshAxesReplicaGroupListProto.axes)
  return _internal_axes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>&
MeshAxesReplicaGroupListProto::_internal_axes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.axes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::AxisRefProto>* PROTOBUF_NONNULL
MeshAxesReplicaGroupListProto::_internal_mutable_axes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.axes_;
}

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

// IotaReplicaGroupListProto

// int64 num_replica_groups = 1;
inline void IotaReplicaGroupListProto::clear_num_replica_groups() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_replica_groups_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t IotaReplicaGroupListProto::num_replica_groups() const {
  // @@protoc_insertion_point(field_get:xla.IotaReplicaGroupListProto.num_replica_groups)
  return _internal_num_replica_groups();
}
inline void IotaReplicaGroupListProto::set_num_replica_groups(::int64_t value) {
  _internal_set_num_replica_groups(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.IotaReplicaGroupListProto.num_replica_groups)
}
inline ::int64_t IotaReplicaGroupListProto::_internal_num_replica_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_replica_groups_;
}
inline void IotaReplicaGroupListProto::_internal_set_num_replica_groups(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_replica_groups_ = value;
}

// int64 num_devices_per_group = 2;
inline void IotaReplicaGroupListProto::clear_num_devices_per_group() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_devices_per_group_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t IotaReplicaGroupListProto::num_devices_per_group() const {
  // @@protoc_insertion_point(field_get:xla.IotaReplicaGroupListProto.num_devices_per_group)
  return _internal_num_devices_per_group();
}
inline void IotaReplicaGroupListProto::set_num_devices_per_group(::int64_t value) {
  _internal_set_num_devices_per_group(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.IotaReplicaGroupListProto.num_devices_per_group)
}
inline ::int64_t IotaReplicaGroupListProto::_internal_num_devices_per_group() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_devices_per_group_;
}
inline void IotaReplicaGroupListProto::_internal_set_num_devices_per_group(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_devices_per_group_ = value;
}

// repeated int64 iota_reshape_dims = 3;
inline int IotaReplicaGroupListProto::_internal_iota_reshape_dims_size() const {
  return _internal_iota_reshape_dims().size();
}
inline int IotaReplicaGroupListProto::iota_reshape_dims_size() const {
  return _internal_iota_reshape_dims_size();
}
inline void IotaReplicaGroupListProto::clear_iota_reshape_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.iota_reshape_dims_.Clear();
}
inline ::int64_t IotaReplicaGroupListProto::iota_reshape_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.IotaReplicaGroupListProto.iota_reshape_dims)
  return _internal_iota_reshape_dims().Get(index);
}
inline void IotaReplicaGroupListProto::set_iota_reshape_dims(int index, ::int64_t value) {
  _internal_mutable_iota_reshape_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.IotaReplicaGroupListProto.iota_reshape_dims)
}
inline void IotaReplicaGroupListProto::add_iota_reshape_dims(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_iota_reshape_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.IotaReplicaGroupListProto.iota_reshape_dims)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& IotaReplicaGroupListProto::iota_reshape_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.IotaReplicaGroupListProto.iota_reshape_dims)
  return _internal_iota_reshape_dims();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL IotaReplicaGroupListProto::mutable_iota_reshape_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.IotaReplicaGroupListProto.iota_reshape_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_iota_reshape_dims();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
IotaReplicaGroupListProto::_internal_iota_reshape_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.iota_reshape_dims_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
IotaReplicaGroupListProto::_internal_mutable_iota_reshape_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.iota_reshape_dims_;
}

// repeated int32 iota_transpose_perm = 4;
inline int IotaReplicaGroupListProto::_internal_iota_transpose_perm_size() const {
  return _internal_iota_transpose_perm().size();
}
inline int IotaReplicaGroupListProto::iota_transpose_perm_size() const {
  return _internal_iota_transpose_perm_size();
}
inline void IotaReplicaGroupListProto::clear_iota_transpose_perm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.iota_transpose_perm_.Clear();
}
inline ::int32_t IotaReplicaGroupListProto::iota_transpose_perm(int index) const {
  // @@protoc_insertion_point(field_get:xla.IotaReplicaGroupListProto.iota_transpose_perm)
  return _internal_iota_transpose_perm().Get(index);
}
inline void IotaReplicaGroupListProto::set_iota_transpose_perm(int index, ::int32_t value) {
  _internal_mutable_iota_transpose_perm()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.IotaReplicaGroupListProto.iota_transpose_perm)
}
inline void IotaReplicaGroupListProto::add_iota_transpose_perm(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_iota_transpose_perm()->Add(value);
  // @@protoc_insertion_point(field_add:xla.IotaReplicaGroupListProto.iota_transpose_perm)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& IotaReplicaGroupListProto::iota_transpose_perm() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.IotaReplicaGroupListProto.iota_transpose_perm)
  return _internal_iota_transpose_perm();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL IotaReplicaGroupListProto::mutable_iota_transpose_perm()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.IotaReplicaGroupListProto.iota_transpose_perm)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_iota_transpose_perm();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
IotaReplicaGroupListProto::_internal_iota_transpose_perm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.iota_transpose_perm_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
IotaReplicaGroupListProto::_internal_mutable_iota_transpose_perm() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.iota_transpose_perm_;
}

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

// CollectiveDeviceListProto

// repeated .xla.ReplicaGroup replica_groups = 1;
inline int CollectiveDeviceListProto::_internal_replica_groups_size() const {
  return _internal_replica_groups().size();
}
inline int CollectiveDeviceListProto::replica_groups_size() const {
  return _internal_replica_groups_size();
}
inline void CollectiveDeviceListProto::clear_replica_groups() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replica_groups_.Clear();
}
inline ::xla::ReplicaGroup* PROTOBUF_NONNULL CollectiveDeviceListProto::mutable_replica_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.CollectiveDeviceListProto.replica_groups)
  return _internal_mutable_replica_groups()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL CollectiveDeviceListProto::mutable_replica_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.CollectiveDeviceListProto.replica_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replica_groups();
}
inline const ::xla::ReplicaGroup& CollectiveDeviceListProto::replica_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CollectiveDeviceListProto.replica_groups)
  return _internal_replica_groups().Get(index);
}
inline ::xla::ReplicaGroup* PROTOBUF_NONNULL CollectiveDeviceListProto::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.CollectiveDeviceListProto.replica_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& CollectiveDeviceListProto::replica_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.CollectiveDeviceListProto.replica_groups)
  return _internal_replica_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>&
CollectiveDeviceListProto::_internal_replica_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL
CollectiveDeviceListProto::_internal_mutable_replica_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_groups_;
}

// .xla.IotaReplicaGroupListProto iota_replica_group_list = 2;
inline bool CollectiveDeviceListProto::has_iota_replica_group_list() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.iota_replica_group_list_ != nullptr);
  return value;
}
inline void CollectiveDeviceListProto::clear_iota_replica_group_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.iota_replica_group_list_ != nullptr) _impl_.iota_replica_group_list_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::IotaReplicaGroupListProto& CollectiveDeviceListProto::_internal_iota_replica_group_list() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::IotaReplicaGroupListProto* p = _impl_.iota_replica_group_list_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::IotaReplicaGroupListProto&>(::xla::_IotaReplicaGroupListProto_default_instance_);
}
inline const ::xla::IotaReplicaGroupListProto& CollectiveDeviceListProto::iota_replica_group_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CollectiveDeviceListProto.iota_replica_group_list)
  return _internal_iota_replica_group_list();
}
inline void CollectiveDeviceListProto::unsafe_arena_set_allocated_iota_replica_group_list(
    ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.iota_replica_group_list_);
  }
  _impl_.iota_replica_group_list_ = reinterpret_cast<::xla::IotaReplicaGroupListProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.CollectiveDeviceListProto.iota_replica_group_list)
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NULLABLE CollectiveDeviceListProto::release_iota_replica_group_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::IotaReplicaGroupListProto* released = _impl_.iota_replica_group_list_;
  _impl_.iota_replica_group_list_ = 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::IotaReplicaGroupListProto* PROTOBUF_NULLABLE CollectiveDeviceListProto::unsafe_arena_release_iota_replica_group_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.CollectiveDeviceListProto.iota_replica_group_list)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::IotaReplicaGroupListProto* temp = _impl_.iota_replica_group_list_;
  _impl_.iota_replica_group_list_ = nullptr;
  return temp;
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL CollectiveDeviceListProto::_internal_mutable_iota_replica_group_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.iota_replica_group_list_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::IotaReplicaGroupListProto>(GetArena());
    _impl_.iota_replica_group_list_ = reinterpret_cast<::xla::IotaReplicaGroupListProto*>(p);
  }
  return _impl_.iota_replica_group_list_;
}
inline ::xla::IotaReplicaGroupListProto* PROTOBUF_NONNULL CollectiveDeviceListProto::mutable_iota_replica_group_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::IotaReplicaGroupListProto* _msg = _internal_mutable_iota_replica_group_list();
  // @@protoc_insertion_point(field_mutable:xla.CollectiveDeviceListProto.iota_replica_group_list)
  return _msg;
}
inline void CollectiveDeviceListProto::set_allocated_iota_replica_group_list(::xla::IotaReplicaGroupListProto* 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_.iota_replica_group_list_);
  }

  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_.iota_replica_group_list_ = reinterpret_cast<::xla::IotaReplicaGroupListProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.CollectiveDeviceListProto.iota_replica_group_list)
}

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

// SourceTarget

// int64 source = 1;
inline void SourceTarget::clear_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t SourceTarget::source() const {
  // @@protoc_insertion_point(field_get:xla.SourceTarget.source)
  return _internal_source();
}
inline void SourceTarget::set_source(::int64_t value) {
  _internal_set_source(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.SourceTarget.source)
}
inline ::int64_t SourceTarget::_internal_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_;
}
inline void SourceTarget::_internal_set_source(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_ = value;
}

// int64 target = 2;
inline void SourceTarget::clear_target() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t SourceTarget::target() const {
  // @@protoc_insertion_point(field_get:xla.SourceTarget.target)
  return _internal_target();
}
inline void SourceTarget::set_target(::int64_t value) {
  _internal_set_target(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.SourceTarget.target)
}
inline ::int64_t SourceTarget::_internal_target() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_;
}
inline void SourceTarget::_internal_set_target(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_ = value;
}

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

// ResultAccuracy_Tolerance

// double atol = 1;
inline void ResultAccuracy_Tolerance::clear_atol() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.atol_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline double ResultAccuracy_Tolerance::atol() const {
  // @@protoc_insertion_point(field_get:xla.ResultAccuracy.Tolerance.atol)
  return _internal_atol();
}
inline void ResultAccuracy_Tolerance::set_atol(double value) {
  _internal_set_atol(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.ResultAccuracy.Tolerance.atol)
}
inline double ResultAccuracy_Tolerance::_internal_atol() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.atol_;
}
inline void ResultAccuracy_Tolerance::_internal_set_atol(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.atol_ = value;
}

// double rtol = 2;
inline void ResultAccuracy_Tolerance::clear_rtol() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rtol_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline double ResultAccuracy_Tolerance::rtol() const {
  // @@protoc_insertion_point(field_get:xla.ResultAccuracy.Tolerance.rtol)
  return _internal_rtol();
}
inline void ResultAccuracy_Tolerance::set_rtol(double value) {
  _internal_set_rtol(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.ResultAccuracy.Tolerance.rtol)
}
inline double ResultAccuracy_Tolerance::_internal_rtol() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rtol_;
}
inline void ResultAccuracy_Tolerance::_internal_set_rtol(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rtol_ = value;
}

// int64 ulps = 3;
inline void ResultAccuracy_Tolerance::clear_ulps() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ulps_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t ResultAccuracy_Tolerance::ulps() const {
  // @@protoc_insertion_point(field_get:xla.ResultAccuracy.Tolerance.ulps)
  return _internal_ulps();
}
inline void ResultAccuracy_Tolerance::set_ulps(::int64_t value) {
  _internal_set_ulps(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.ResultAccuracy.Tolerance.ulps)
}
inline ::int64_t ResultAccuracy_Tolerance::_internal_ulps() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ulps_;
}
inline void ResultAccuracy_Tolerance::_internal_set_ulps(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ulps_ = value;
}

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

// ResultAccuracy

// .xla.ResultAccuracy.Mode mode = 1;
inline bool ResultAccuracy::has_mode() const {
  return specs_case() == kMode;
}
inline void ResultAccuracy::set_has_mode() {
  _impl_._oneof_case_[0] = kMode;
}
inline void ResultAccuracy::clear_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (specs_case() == kMode) {
    _impl_.specs_.mode_ = 0;
    clear_has_specs();
  }
}
inline ::xla::ResultAccuracy_Mode ResultAccuracy::mode() const {
  // @@protoc_insertion_point(field_get:xla.ResultAccuracy.mode)
  return _internal_mode();
}
inline void ResultAccuracy::set_mode(::xla::ResultAccuracy_Mode value) {
  if (specs_case() != kMode) {
    clear_specs();
    set_has_mode();
  }
  _impl_.specs_.mode_ = value;
  // @@protoc_insertion_point(field_set:xla.ResultAccuracy.mode)
}
inline ::xla::ResultAccuracy_Mode ResultAccuracy::_internal_mode() const {
  if (specs_case() == kMode) {
    return static_cast<::xla::ResultAccuracy_Mode>(_impl_.specs_.mode_);
  }
  return static_cast<::xla::ResultAccuracy_Mode>(0);
}

// .xla.ResultAccuracy.Tolerance tolerance = 2;
inline bool ResultAccuracy::has_tolerance() const {
  return specs_case() == kTolerance;
}
inline bool ResultAccuracy::_internal_has_tolerance() const {
  return specs_case() == kTolerance;
}
inline void ResultAccuracy::set_has_tolerance() {
  _impl_._oneof_case_[0] = kTolerance;
}
inline void ResultAccuracy::clear_tolerance() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (specs_case() == kTolerance) {
    if (GetArena() == nullptr) {
      delete _impl_.specs_.tolerance_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.specs_.tolerance_);
    }
    clear_has_specs();
  }
}
inline ::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE ResultAccuracy::release_tolerance() {
  // @@protoc_insertion_point(field_release:xla.ResultAccuracy.tolerance)
  if (specs_case() == kTolerance) {
    clear_has_specs();
    auto* temp = _impl_.specs_.tolerance_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.specs_.tolerance_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ResultAccuracy_Tolerance& ResultAccuracy::_internal_tolerance() const {
  return specs_case() == kTolerance ? *_impl_.specs_.tolerance_ : reinterpret_cast<::xla::ResultAccuracy_Tolerance&>(::xla::_ResultAccuracy_Tolerance_default_instance_);
}
inline const ::xla::ResultAccuracy_Tolerance& ResultAccuracy::tolerance() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ResultAccuracy.tolerance)
  return _internal_tolerance();
}
inline ::xla::ResultAccuracy_Tolerance* PROTOBUF_NULLABLE ResultAccuracy::unsafe_arena_release_tolerance() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ResultAccuracy.tolerance)
  if (specs_case() == kTolerance) {
    clear_has_specs();
    auto* temp = _impl_.specs_.tolerance_;
    _impl_.specs_.tolerance_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ResultAccuracy::unsafe_arena_set_allocated_tolerance(
    ::xla::ResultAccuracy_Tolerance* 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_specs();
  if (value) {
    set_has_tolerance();
    _impl_.specs_.tolerance_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ResultAccuracy.tolerance)
}
inline ::xla::ResultAccuracy_Tolerance* PROTOBUF_NONNULL ResultAccuracy::_internal_mutable_tolerance() {
  if (specs_case() != kTolerance) {
    clear_specs();
    set_has_tolerance();
    _impl_.specs_.tolerance_ = 
        ::google::protobuf::Message::DefaultConstruct<::xla::ResultAccuracy_Tolerance>(GetArena());
  }
  return _impl_.specs_.tolerance_;
}
inline ::xla::ResultAccuracy_Tolerance* PROTOBUF_NONNULL ResultAccuracy::mutable_tolerance()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ResultAccuracy_Tolerance* _msg = _internal_mutable_tolerance();
  // @@protoc_insertion_point(field_mutable:xla.ResultAccuracy.tolerance)
  return _msg;
}

inline bool ResultAccuracy::has_specs() const {
  return specs_case() != SPECS_NOT_SET;
}
inline void ResultAccuracy::clear_has_specs() {
  _impl_._oneof_case_[0] = SPECS_NOT_SET;
}
inline ResultAccuracy::SpecsCase ResultAccuracy::specs_case() const {
  return ResultAccuracy::SpecsCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PrecisionConfig

// repeated .xla.PrecisionConfig.Precision operand_precision = 1;
inline int PrecisionConfig::_internal_operand_precision_size() const {
  return _internal_operand_precision().size();
}
inline int PrecisionConfig::operand_precision_size() const {
  return _internal_operand_precision_size();
}
inline void PrecisionConfig::clear_operand_precision() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_precision_.Clear();
}
inline ::xla::PrecisionConfig_Precision PrecisionConfig::operand_precision(int index) const {
  // @@protoc_insertion_point(field_get:xla.PrecisionConfig.operand_precision)
  return static_cast<::xla::PrecisionConfig_Precision>(_internal_operand_precision().Get(index));
}
inline void PrecisionConfig::set_operand_precision(int index, ::xla::PrecisionConfig_Precision value) {
  _internal_mutable_operand_precision()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.PrecisionConfig.operand_precision)
}
inline void PrecisionConfig::add_operand_precision(::xla::PrecisionConfig_Precision value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_operand_precision()->Add(value);
  // @@protoc_insertion_point(field_add:xla.PrecisionConfig.operand_precision)
}
inline const ::google::protobuf::RepeatedField<int>& PrecisionConfig::operand_precision() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.PrecisionConfig.operand_precision)
  return _internal_operand_precision();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL PrecisionConfig::mutable_operand_precision()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.PrecisionConfig.operand_precision)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_precision();
}
inline const ::google::protobuf::RepeatedField<int>& PrecisionConfig::_internal_operand_precision()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_precision_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
PrecisionConfig::_internal_mutable_operand_precision() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_precision_;
}

// .xla.PrecisionConfig.Algorithm algorithm = 2;
inline void PrecisionConfig::clear_algorithm() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::xla::PrecisionConfig_Algorithm PrecisionConfig::algorithm() const {
  // @@protoc_insertion_point(field_get:xla.PrecisionConfig.algorithm)
  return _internal_algorithm();
}
inline void PrecisionConfig::set_algorithm(::xla::PrecisionConfig_Algorithm value) {
  _internal_set_algorithm(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.PrecisionConfig.algorithm)
}
inline ::xla::PrecisionConfig_Algorithm PrecisionConfig::_internal_algorithm() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PrecisionConfig_Algorithm>(_impl_.algorithm_);
}
inline void PrecisionConfig::_internal_set_algorithm(::xla::PrecisionConfig_Algorithm value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_ = value;
}

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

// ParameterReplication

// repeated bool replicated_at_leaf_buffers = 1;
inline int ParameterReplication::_internal_replicated_at_leaf_buffers_size() const {
  return _internal_replicated_at_leaf_buffers().size();
}
inline int ParameterReplication::replicated_at_leaf_buffers_size() const {
  return _internal_replicated_at_leaf_buffers_size();
}
inline void ParameterReplication::clear_replicated_at_leaf_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.replicated_at_leaf_buffers_.Clear();
}
inline bool ParameterReplication::replicated_at_leaf_buffers(int index) const {
  // @@protoc_insertion_point(field_get:xla.ParameterReplication.replicated_at_leaf_buffers)
  return _internal_replicated_at_leaf_buffers().Get(index);
}
inline void ParameterReplication::set_replicated_at_leaf_buffers(int index, bool value) {
  _internal_mutable_replicated_at_leaf_buffers()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ParameterReplication.replicated_at_leaf_buffers)
}
inline void ParameterReplication::add_replicated_at_leaf_buffers(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_replicated_at_leaf_buffers()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ParameterReplication.replicated_at_leaf_buffers)
}
inline const ::google::protobuf::RepeatedField<bool>& ParameterReplication::replicated_at_leaf_buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ParameterReplication.replicated_at_leaf_buffers)
  return _internal_replicated_at_leaf_buffers();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL ParameterReplication::mutable_replicated_at_leaf_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ParameterReplication.replicated_at_leaf_buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replicated_at_leaf_buffers();
}
inline const ::google::protobuf::RepeatedField<bool>&
ParameterReplication::_internal_replicated_at_leaf_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replicated_at_leaf_buffers_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
ParameterReplication::_internal_mutable_replicated_at_leaf_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replicated_at_leaf_buffers_;
}

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

// WhileLoopBackendConfig_KnownInitStep

// int64 init = 1;
inline void WhileLoopBackendConfig_KnownInitStep::clear_init() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.init_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t WhileLoopBackendConfig_KnownInitStep::init() const {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.KnownInitStep.init)
  return _internal_init();
}
inline void WhileLoopBackendConfig_KnownInitStep::set_init(::int64_t value) {
  _internal_set_init(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.WhileLoopBackendConfig.KnownInitStep.init)
}
inline ::int64_t WhileLoopBackendConfig_KnownInitStep::_internal_init() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.init_;
}
inline void WhileLoopBackendConfig_KnownInitStep::_internal_set_init(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.init_ = value;
}

// int64 step = 2;
inline void WhileLoopBackendConfig_KnownInitStep::clear_step() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.step_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t WhileLoopBackendConfig_KnownInitStep::step() const {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.KnownInitStep.step)
  return _internal_step();
}
inline void WhileLoopBackendConfig_KnownInitStep::set_step(::int64_t value) {
  _internal_set_step(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.WhileLoopBackendConfig.KnownInitStep.step)
}
inline ::int64_t WhileLoopBackendConfig_KnownInitStep::_internal_step() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.step_;
}
inline void WhileLoopBackendConfig_KnownInitStep::_internal_set_step(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.step_ = value;
}

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

// WhileLoopBackendConfig_KnownTripCount

// int64 n = 1;
inline void WhileLoopBackendConfig_KnownTripCount::clear_n() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t WhileLoopBackendConfig_KnownTripCount::n() const {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.KnownTripCount.n)
  return _internal_n();
}
inline void WhileLoopBackendConfig_KnownTripCount::set_n(::int64_t value) {
  _internal_set_n(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.WhileLoopBackendConfig.KnownTripCount.n)
}
inline ::int64_t WhileLoopBackendConfig_KnownTripCount::_internal_n() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.n_;
}
inline void WhileLoopBackendConfig_KnownTripCount::_internal_set_n(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = value;
}

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

// WhileLoopBackendConfig_KnownInductionVariable

// int64 tuple_index = 1;
inline void WhileLoopBackendConfig_KnownInductionVariable::clear_tuple_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_index_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t WhileLoopBackendConfig_KnownInductionVariable::tuple_index() const {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.KnownInductionVariable.tuple_index)
  return _internal_tuple_index();
}
inline void WhileLoopBackendConfig_KnownInductionVariable::set_tuple_index(::int64_t value) {
  _internal_set_tuple_index(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.WhileLoopBackendConfig.KnownInductionVariable.tuple_index)
}
inline ::int64_t WhileLoopBackendConfig_KnownInductionVariable::_internal_tuple_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tuple_index_;
}
inline void WhileLoopBackendConfig_KnownInductionVariable::_internal_set_tuple_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tuple_index_ = value;
}

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

// WhileLoopBackendConfig

// .xla.WhileLoopBackendConfig.KnownTripCount known_trip_count = 1;
inline bool WhileLoopBackendConfig::has_known_trip_count() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.known_trip_count_ != nullptr);
  return value;
}
inline void WhileLoopBackendConfig::clear_known_trip_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_trip_count_ != nullptr) _impl_.known_trip_count_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::WhileLoopBackendConfig_KnownTripCount& WhileLoopBackendConfig::_internal_known_trip_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::WhileLoopBackendConfig_KnownTripCount* p = _impl_.known_trip_count_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::WhileLoopBackendConfig_KnownTripCount&>(::xla::_WhileLoopBackendConfig_KnownTripCount_default_instance_);
}
inline const ::xla::WhileLoopBackendConfig_KnownTripCount& WhileLoopBackendConfig::known_trip_count() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.known_trip_count)
  return _internal_known_trip_count();
}
inline void WhileLoopBackendConfig::unsafe_arena_set_allocated_known_trip_count(
    ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.known_trip_count_);
  }
  _impl_.known_trip_count_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownTripCount*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.WhileLoopBackendConfig.known_trip_count)
}
inline ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE WhileLoopBackendConfig::release_known_trip_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::WhileLoopBackendConfig_KnownTripCount* released = _impl_.known_trip_count_;
  _impl_.known_trip_count_ = 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::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NULLABLE WhileLoopBackendConfig::unsafe_arena_release_known_trip_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.WhileLoopBackendConfig.known_trip_count)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::WhileLoopBackendConfig_KnownTripCount* temp = _impl_.known_trip_count_;
  _impl_.known_trip_count_ = nullptr;
  return temp;
}
inline ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL WhileLoopBackendConfig::_internal_mutable_known_trip_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_trip_count_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::WhileLoopBackendConfig_KnownTripCount>(GetArena());
    _impl_.known_trip_count_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownTripCount*>(p);
  }
  return _impl_.known_trip_count_;
}
inline ::xla::WhileLoopBackendConfig_KnownTripCount* PROTOBUF_NONNULL WhileLoopBackendConfig::mutable_known_trip_count()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::WhileLoopBackendConfig_KnownTripCount* _msg = _internal_mutable_known_trip_count();
  // @@protoc_insertion_point(field_mutable:xla.WhileLoopBackendConfig.known_trip_count)
  return _msg;
}
inline void WhileLoopBackendConfig::set_allocated_known_trip_count(::xla::WhileLoopBackendConfig_KnownTripCount* 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_.known_trip_count_);
  }

  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_.known_trip_count_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownTripCount*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.WhileLoopBackendConfig.known_trip_count)
}

// .xla.WhileLoopBackendConfig.KnownInitStep known_init_step = 2;
inline bool WhileLoopBackendConfig::has_known_init_step() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.known_init_step_ != nullptr);
  return value;
}
inline void WhileLoopBackendConfig::clear_known_init_step() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_init_step_ != nullptr) _impl_.known_init_step_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::WhileLoopBackendConfig_KnownInitStep& WhileLoopBackendConfig::_internal_known_init_step() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::WhileLoopBackendConfig_KnownInitStep* p = _impl_.known_init_step_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::WhileLoopBackendConfig_KnownInitStep&>(::xla::_WhileLoopBackendConfig_KnownInitStep_default_instance_);
}
inline const ::xla::WhileLoopBackendConfig_KnownInitStep& WhileLoopBackendConfig::known_init_step() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.known_init_step)
  return _internal_known_init_step();
}
inline void WhileLoopBackendConfig::unsafe_arena_set_allocated_known_init_step(
    ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.known_init_step_);
  }
  _impl_.known_init_step_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInitStep*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.WhileLoopBackendConfig.known_init_step)
}
inline ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE WhileLoopBackendConfig::release_known_init_step() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::WhileLoopBackendConfig_KnownInitStep* released = _impl_.known_init_step_;
  _impl_.known_init_step_ = 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::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NULLABLE WhileLoopBackendConfig::unsafe_arena_release_known_init_step() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.WhileLoopBackendConfig.known_init_step)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::WhileLoopBackendConfig_KnownInitStep* temp = _impl_.known_init_step_;
  _impl_.known_init_step_ = nullptr;
  return temp;
}
inline ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL WhileLoopBackendConfig::_internal_mutable_known_init_step() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_init_step_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::WhileLoopBackendConfig_KnownInitStep>(GetArena());
    _impl_.known_init_step_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInitStep*>(p);
  }
  return _impl_.known_init_step_;
}
inline ::xla::WhileLoopBackendConfig_KnownInitStep* PROTOBUF_NONNULL WhileLoopBackendConfig::mutable_known_init_step()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::WhileLoopBackendConfig_KnownInitStep* _msg = _internal_mutable_known_init_step();
  // @@protoc_insertion_point(field_mutable:xla.WhileLoopBackendConfig.known_init_step)
  return _msg;
}
inline void WhileLoopBackendConfig::set_allocated_known_init_step(::xla::WhileLoopBackendConfig_KnownInitStep* 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_.known_init_step_);
  }

  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_.known_init_step_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInitStep*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.WhileLoopBackendConfig.known_init_step)
}

// .xla.WhileLoopBackendConfig.KnownInductionVariable known_induction_variable = 3;
inline bool WhileLoopBackendConfig::has_known_induction_variable() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.known_induction_variable_ != nullptr);
  return value;
}
inline void WhileLoopBackendConfig::clear_known_induction_variable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_induction_variable_ != nullptr) _impl_.known_induction_variable_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::WhileLoopBackendConfig_KnownInductionVariable& WhileLoopBackendConfig::_internal_known_induction_variable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::WhileLoopBackendConfig_KnownInductionVariable* p = _impl_.known_induction_variable_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::WhileLoopBackendConfig_KnownInductionVariable&>(::xla::_WhileLoopBackendConfig_KnownInductionVariable_default_instance_);
}
inline const ::xla::WhileLoopBackendConfig_KnownInductionVariable& WhileLoopBackendConfig::known_induction_variable() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.known_induction_variable)
  return _internal_known_induction_variable();
}
inline void WhileLoopBackendConfig::unsafe_arena_set_allocated_known_induction_variable(
    ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.known_induction_variable_);
  }
  _impl_.known_induction_variable_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInductionVariable*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.WhileLoopBackendConfig.known_induction_variable)
}
inline ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE WhileLoopBackendConfig::release_known_induction_variable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* released = _impl_.known_induction_variable_;
  _impl_.known_induction_variable_ = 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::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NULLABLE WhileLoopBackendConfig::unsafe_arena_release_known_induction_variable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.WhileLoopBackendConfig.known_induction_variable)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* temp = _impl_.known_induction_variable_;
  _impl_.known_induction_variable_ = nullptr;
  return temp;
}
inline ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL WhileLoopBackendConfig::_internal_mutable_known_induction_variable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.known_induction_variable_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::WhileLoopBackendConfig_KnownInductionVariable>(GetArena());
    _impl_.known_induction_variable_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInductionVariable*>(p);
  }
  return _impl_.known_induction_variable_;
}
inline ::xla::WhileLoopBackendConfig_KnownInductionVariable* PROTOBUF_NONNULL WhileLoopBackendConfig::mutable_known_induction_variable()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* _msg = _internal_mutable_known_induction_variable();
  // @@protoc_insertion_point(field_mutable:xla.WhileLoopBackendConfig.known_induction_variable)
  return _msg;
}
inline void WhileLoopBackendConfig::set_allocated_known_induction_variable(::xla::WhileLoopBackendConfig_KnownInductionVariable* 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_.known_induction_variable_);
  }

  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_.known_induction_variable_ = reinterpret_cast<::xla::WhileLoopBackendConfig_KnownInductionVariable*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.WhileLoopBackendConfig.known_induction_variable)
}

// repeated int64 dynamic_variable_tuple_indices = 4;
inline int WhileLoopBackendConfig::_internal_dynamic_variable_tuple_indices_size() const {
  return _internal_dynamic_variable_tuple_indices().size();
}
inline int WhileLoopBackendConfig::dynamic_variable_tuple_indices_size() const {
  return _internal_dynamic_variable_tuple_indices_size();
}
inline void WhileLoopBackendConfig::clear_dynamic_variable_tuple_indices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dynamic_variable_tuple_indices_.Clear();
}
inline ::int64_t WhileLoopBackendConfig::dynamic_variable_tuple_indices(int index) const {
  // @@protoc_insertion_point(field_get:xla.WhileLoopBackendConfig.dynamic_variable_tuple_indices)
  return _internal_dynamic_variable_tuple_indices().Get(index);
}
inline void WhileLoopBackendConfig::set_dynamic_variable_tuple_indices(int index, ::int64_t value) {
  _internal_mutable_dynamic_variable_tuple_indices()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.WhileLoopBackendConfig.dynamic_variable_tuple_indices)
}
inline void WhileLoopBackendConfig::add_dynamic_variable_tuple_indices(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dynamic_variable_tuple_indices()->Add(value);
  // @@protoc_insertion_point(field_add:xla.WhileLoopBackendConfig.dynamic_variable_tuple_indices)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& WhileLoopBackendConfig::dynamic_variable_tuple_indices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.WhileLoopBackendConfig.dynamic_variable_tuple_indices)
  return _internal_dynamic_variable_tuple_indices();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL WhileLoopBackendConfig::mutable_dynamic_variable_tuple_indices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.WhileLoopBackendConfig.dynamic_variable_tuple_indices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dynamic_variable_tuple_indices();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
WhileLoopBackendConfig::_internal_dynamic_variable_tuple_indices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dynamic_variable_tuple_indices_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
WhileLoopBackendConfig::_internal_mutable_dynamic_variable_tuple_indices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dynamic_variable_tuple_indices_;
}

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

// OutputOperandAliasing

// repeated int64 output_shape_index = 1;
inline int OutputOperandAliasing::_internal_output_shape_index_size() const {
  return _internal_output_shape_index().size();
}
inline int OutputOperandAliasing::output_shape_index_size() const {
  return _internal_output_shape_index_size();
}
inline void OutputOperandAliasing::clear_output_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_shape_index_.Clear();
}
inline ::int64_t OutputOperandAliasing::output_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.OutputOperandAliasing.output_shape_index)
  return _internal_output_shape_index().Get(index);
}
inline void OutputOperandAliasing::set_output_shape_index(int index, ::int64_t value) {
  _internal_mutable_output_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OutputOperandAliasing.output_shape_index)
}
inline void OutputOperandAliasing::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.OutputOperandAliasing.output_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OutputOperandAliasing::output_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OutputOperandAliasing.output_shape_index)
  return _internal_output_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OutputOperandAliasing::mutable_output_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OutputOperandAliasing.output_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OutputOperandAliasing::_internal_output_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OutputOperandAliasing::_internal_mutable_output_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_shape_index_;
}

// int64 operand_index = 2;
inline void OutputOperandAliasing::clear_operand_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_index_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t OutputOperandAliasing::operand_index() const {
  // @@protoc_insertion_point(field_get:xla.OutputOperandAliasing.operand_index)
  return _internal_operand_index();
}
inline void OutputOperandAliasing::set_operand_index(::int64_t value) {
  _internal_set_operand_index(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.OutputOperandAliasing.operand_index)
}
inline ::int64_t OutputOperandAliasing::_internal_operand_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_index_;
}
inline void OutputOperandAliasing::_internal_set_operand_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_index_ = value;
}

// repeated int64 operand_shape_index = 3;
inline int OutputOperandAliasing::_internal_operand_shape_index_size() const {
  return _internal_operand_shape_index().size();
}
inline int OutputOperandAliasing::operand_shape_index_size() const {
  return _internal_operand_shape_index_size();
}
inline void OutputOperandAliasing::clear_operand_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_shape_index_.Clear();
}
inline ::int64_t OutputOperandAliasing::operand_shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.OutputOperandAliasing.operand_shape_index)
  return _internal_operand_shape_index().Get(index);
}
inline void OutputOperandAliasing::set_operand_shape_index(int index, ::int64_t value) {
  _internal_mutable_operand_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OutputOperandAliasing.operand_shape_index)
}
inline void OutputOperandAliasing::add_operand_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_operand_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OutputOperandAliasing.operand_shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OutputOperandAliasing::operand_shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OutputOperandAliasing.operand_shape_index)
  return _internal_operand_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OutputOperandAliasing::mutable_operand_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OutputOperandAliasing.operand_shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OutputOperandAliasing::_internal_operand_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OutputOperandAliasing::_internal_mutable_operand_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_shape_index_;
}

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

// OriginalArrayProto

// string instruction_name = 1;
inline void OriginalArrayProto::clear_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& OriginalArrayProto::instruction_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalArrayProto.instruction_name)
  return _internal_instruction_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OriginalArrayProto::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.OriginalArrayProto.instruction_name)
}
inline ::std::string* PROTOBUF_NONNULL OriginalArrayProto::mutable_instruction_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_instruction_name();
  // @@protoc_insertion_point(field_mutable:xla.OriginalArrayProto.instruction_name)
  return _s;
}
inline const ::std::string& OriginalArrayProto::_internal_instruction_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_name_.Get();
}
inline void OriginalArrayProto::_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 OriginalArrayProto::_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 OriginalArrayProto::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalArrayProto.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 OriginalArrayProto::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.OriginalArrayProto.instruction_name)
}

// repeated int64 shape_index = 2;
inline int OriginalArrayProto::_internal_shape_index_size() const {
  return _internal_shape_index().size();
}
inline int OriginalArrayProto::shape_index_size() const {
  return _internal_shape_index_size();
}
inline void OriginalArrayProto::clear_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_index_.Clear();
}
inline ::int64_t OriginalArrayProto::shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.OriginalArrayProto.shape_index)
  return _internal_shape_index().Get(index);
}
inline void OriginalArrayProto::set_shape_index(int index, ::int64_t value) {
  _internal_mutable_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OriginalArrayProto.shape_index)
}
inline void OriginalArrayProto::add_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OriginalArrayProto.shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OriginalArrayProto::shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalArrayProto.shape_index)
  return _internal_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OriginalArrayProto::mutable_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalArrayProto.shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OriginalArrayProto::_internal_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OriginalArrayProto::_internal_mutable_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_index_;
}

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

// OriginalValueElementProto

// repeated int64 shape_index = 1;
inline int OriginalValueElementProto::_internal_shape_index_size() const {
  return _internal_shape_index().size();
}
inline int OriginalValueElementProto::shape_index_size() const {
  return _internal_shape_index_size();
}
inline void OriginalValueElementProto::clear_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_index_.Clear();
}
inline ::int64_t OriginalValueElementProto::shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.OriginalValueElementProto.shape_index)
  return _internal_shape_index().Get(index);
}
inline void OriginalValueElementProto::set_shape_index(int index, ::int64_t value) {
  _internal_mutable_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OriginalValueElementProto.shape_index)
}
inline void OriginalValueElementProto::add_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OriginalValueElementProto.shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OriginalValueElementProto::shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalValueElementProto.shape_index)
  return _internal_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL OriginalValueElementProto::mutable_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalValueElementProto.shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OriginalValueElementProto::_internal_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
OriginalValueElementProto::_internal_mutable_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_index_;
}

// .xla.OriginalArrayProto original_array = 2;
inline bool OriginalValueElementProto::has_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.original_array_ != nullptr);
  return value;
}
inline void OriginalValueElementProto::clear_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.original_array_ != nullptr) _impl_.original_array_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::OriginalArrayProto& OriginalValueElementProto::_internal_original_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::OriginalArrayProto* p = _impl_.original_array_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::OriginalArrayProto&>(::xla::_OriginalArrayProto_default_instance_);
}
inline const ::xla::OriginalArrayProto& OriginalValueElementProto::original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueElementProto.original_array)
  return _internal_original_array();
}
inline void OriginalValueElementProto::unsafe_arena_set_allocated_original_array(
    ::xla::OriginalArrayProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.original_array_);
  }
  _impl_.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.OriginalValueElementProto.original_array)
}
inline ::xla::OriginalArrayProto* PROTOBUF_NULLABLE OriginalValueElementProto::release_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* released = _impl_.original_array_;
  _impl_.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 OriginalValueElementProto::unsafe_arena_release_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalValueElementProto.original_array)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* temp = _impl_.original_array_;
  _impl_.original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueElementProto::_internal_mutable_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.original_array_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::OriginalArrayProto>(GetArena());
    _impl_.original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(p);
  }
  return _impl_.original_array_;
}
inline ::xla::OriginalArrayProto* PROTOBUF_NONNULL OriginalValueElementProto::mutable_original_array()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::OriginalArrayProto* _msg = _internal_mutable_original_array();
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueElementProto.original_array)
  return _msg;
}
inline void OriginalValueElementProto::set_allocated_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_.original_array_);
  }

  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_.original_array_ = reinterpret_cast<::xla::OriginalArrayProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueElementProto.original_array)
}

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

// OriginalValueProto

// repeated .xla.OriginalValueElementProto elements = 1;
inline int OriginalValueProto::_internal_elements_size() const {
  return _internal_elements().size();
}
inline int OriginalValueProto::elements_size() const {
  return _internal_elements_size();
}
inline void OriginalValueProto::clear_elements() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.elements_.Clear();
}
inline ::xla::OriginalValueElementProto* PROTOBUF_NONNULL OriginalValueProto::mutable_elements(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueProto.elements)
  return _internal_mutable_elements()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>* PROTOBUF_NONNULL OriginalValueProto::mutable_elements()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalValueProto.elements)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_elements();
}
inline const ::xla::OriginalValueElementProto& OriginalValueProto::elements(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueProto.elements)
  return _internal_elements().Get(index);
}
inline ::xla::OriginalValueElementProto* PROTOBUF_NONNULL OriginalValueProto::add_elements()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OriginalValueElementProto* _add = _internal_mutable_elements()->Add();
  // @@protoc_insertion_point(field_add:xla.OriginalValueProto.elements)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>& OriginalValueProto::elements() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalValueProto.elements)
  return _internal_elements();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>&
OriginalValueProto::_internal_elements() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.elements_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueElementProto>* PROTOBUF_NONNULL
OriginalValueProto::_internal_mutable_elements() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.elements_;
}

// bool is_synthetic_call = 2;
inline void OriginalValueProto::clear_is_synthetic_call() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_synthetic_call_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool OriginalValueProto::is_synthetic_call() const {
  // @@protoc_insertion_point(field_get:xla.OriginalValueProto.is_synthetic_call)
  return _internal_is_synthetic_call();
}
inline void OriginalValueProto::set_is_synthetic_call(bool value) {
  _internal_set_is_synthetic_call(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.OriginalValueProto.is_synthetic_call)
}
inline bool OriginalValueProto::_internal_is_synthetic_call() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_synthetic_call_;
}
inline void OriginalValueProto::_internal_set_is_synthetic_call(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_synthetic_call_ = value;
}

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

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

// GemmPerfTableEntry

// int64 b = 1;
inline void GemmPerfTableEntry::clear_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t GemmPerfTableEntry::b() const {
  // @@protoc_insertion_point(field_get:xla.GemmPerfTableEntry.b)
  return _internal_b();
}
inline void GemmPerfTableEntry::set_b(::int64_t value) {
  _internal_set_b(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.GemmPerfTableEntry.b)
}
inline ::int64_t GemmPerfTableEntry::_internal_b() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.b_;
}
inline void GemmPerfTableEntry::_internal_set_b(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_ = value;
}

// int64 m = 2;
inline void GemmPerfTableEntry::clear_m() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t GemmPerfTableEntry::m() const {
  // @@protoc_insertion_point(field_get:xla.GemmPerfTableEntry.m)
  return _internal_m();
}
inline void GemmPerfTableEntry::set_m(::int64_t value) {
  _internal_set_m(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.GemmPerfTableEntry.m)
}
inline ::int64_t GemmPerfTableEntry::_internal_m() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_;
}
inline void GemmPerfTableEntry::_internal_set_m(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_ = value;
}

// int64 n = 3;
inline void GemmPerfTableEntry::clear_n() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t GemmPerfTableEntry::n() const {
  // @@protoc_insertion_point(field_get:xla.GemmPerfTableEntry.n)
  return _internal_n();
}
inline void GemmPerfTableEntry::set_n(::int64_t value) {
  _internal_set_n(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.GemmPerfTableEntry.n)
}
inline ::int64_t GemmPerfTableEntry::_internal_n() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.n_;
}
inline void GemmPerfTableEntry::_internal_set_n(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = value;
}

// int64 k = 4;
inline void GemmPerfTableEntry::clear_k() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t GemmPerfTableEntry::k() const {
  // @@protoc_insertion_point(field_get:xla.GemmPerfTableEntry.k)
  return _internal_k();
}
inline void GemmPerfTableEntry::set_k(::int64_t value) {
  _internal_set_k(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.GemmPerfTableEntry.k)
}
inline ::int64_t GemmPerfTableEntry::_internal_k() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.k_;
}
inline void GemmPerfTableEntry::_internal_set_k(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = value;
}

// map<string, int64> flops = 5;
inline int GemmPerfTableEntry::_internal_flops_size() const {
  return _internal_flops().size();
}
inline int GemmPerfTableEntry::flops_size() const {
  return _internal_flops_size();
}
inline void GemmPerfTableEntry::clear_flops() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flops_.Clear();
}
inline const ::google::protobuf::Map<std::string, ::int64_t>& GemmPerfTableEntry::_internal_flops() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flops_.GetMap();
}
inline const ::google::protobuf::Map<std::string, ::int64_t>& GemmPerfTableEntry::flops() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.GemmPerfTableEntry.flops)
  return _internal_flops();
}
inline ::google::protobuf::Map<std::string, ::int64_t>* PROTOBUF_NONNULL GemmPerfTableEntry::_internal_mutable_flops() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.flops_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::int64_t>* PROTOBUF_NONNULL GemmPerfTableEntry::mutable_flops()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.GemmPerfTableEntry.flops)
  return _internal_mutable_flops();
}

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

// GemmPerfTableEntryValues

// repeated .xla.GemmPerfTableEntry entries = 1;
inline int GemmPerfTableEntryValues::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int GemmPerfTableEntryValues::entries_size() const {
  return _internal_entries_size();
}
inline void GemmPerfTableEntryValues::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline ::xla::GemmPerfTableEntry* PROTOBUF_NONNULL GemmPerfTableEntryValues::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.GemmPerfTableEntryValues.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>* PROTOBUF_NONNULL GemmPerfTableEntryValues::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.GemmPerfTableEntryValues.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::xla::GemmPerfTableEntry& GemmPerfTableEntryValues::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.GemmPerfTableEntryValues.entries)
  return _internal_entries().Get(index);
}
inline ::xla::GemmPerfTableEntry* PROTOBUF_NONNULL GemmPerfTableEntryValues::add_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::GemmPerfTableEntry* _add = _internal_mutable_entries()->Add();
  // @@protoc_insertion_point(field_add:xla.GemmPerfTableEntryValues.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>& GemmPerfTableEntryValues::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.GemmPerfTableEntryValues.entries)
  return _internal_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>&
GemmPerfTableEntryValues::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::GemmPerfTableEntry>* PROTOBUF_NONNULL
GemmPerfTableEntryValues::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

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

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

// GemmPerfTable

// map<string, .xla.GemmPerfTableEntryValues> entries = 1;
inline int GemmPerfTable::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int GemmPerfTable::entries_size() const {
  return _internal_entries_size();
}
inline void GemmPerfTable::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline const ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>& GemmPerfTable::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_.GetMap();
}
inline const ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>& GemmPerfTable::entries() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.GemmPerfTable.entries)
  return _internal_entries();
}
inline ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* PROTOBUF_NONNULL GemmPerfTable::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.entries_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* PROTOBUF_NONNULL GemmPerfTable::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.GemmPerfTable.entries)
  return _internal_mutable_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::ChannelHandle_ChannelType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ChannelHandle_ChannelType>() {
  return ::xla::ChannelHandle_ChannelType_descriptor();
}
template <>
struct is_proto_enum<::xla::TriangularSolveOptions_Transpose> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::TriangularSolveOptions_Transpose>() {
  return ::xla::TriangularSolveOptions_Transpose_descriptor();
}
template <>
struct is_proto_enum<::xla::OpSharding_Type> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::OpSharding_Type>() {
  return ::xla::OpSharding_Type_descriptor();
}
template <>
struct is_proto_enum<::xla::OpSharding_ShardGroupType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::OpSharding_ShardGroupType>() {
  return ::xla::OpSharding_ShardGroupType_descriptor();
}
template <>
struct is_proto_enum<::xla::ResultAccuracy_Mode> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ResultAccuracy_Mode>() {
  return ::xla::ResultAccuracy_Mode_descriptor();
}
template <>
struct is_proto_enum<::xla::PrecisionConfig_Precision> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::PrecisionConfig_Precision>() {
  return ::xla::PrecisionConfig_Precision_descriptor();
}
template <>
struct is_proto_enum<::xla::PrecisionConfig_Algorithm> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::PrecisionConfig_Algorithm>() {
  return ::xla::PrecisionConfig_Algorithm_descriptor();
}
template <>
struct is_proto_enum<::xla::PrimitiveType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::PrimitiveType>() {
  return ::xla::PrimitiveType_descriptor();
}
template <>
struct is_proto_enum<::xla::AsyncStreamKind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::AsyncStreamKind>() {
  return ::xla::AsyncStreamKind_descriptor();
}
template <>
struct is_proto_enum<::xla::CollectiveOpGroupMode> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::CollectiveOpGroupMode>() {
  return ::xla::CollectiveOpGroupMode_descriptor();
}
template <>
struct is_proto_enum<::xla::DimLevelType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::DimLevelType>() {
  return ::xla::DimLevelType_descriptor();
}
template <>
struct is_proto_enum<::xla::ProfileType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ProfileType>() {
  return ::xla::ProfileType_descriptor();
}
template <>
struct is_proto_enum<::xla::ProfileSource> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ProfileSource>() {
  return ::xla::ProfileSource_descriptor();
}
template <>
struct is_proto_enum<::xla::CompilationEvent> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::CompilationEvent>() {
  return ::xla::CompilationEvent_descriptor();
}
template <>
struct is_proto_enum<::xla::ProfileGenerationStrategy> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::ProfileGenerationStrategy>() {
  return ::xla::ProfileGenerationStrategy_descriptor();
}
template <>
struct is_proto_enum<::xla::PaddingType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::PaddingType>() {
  return ::xla::PaddingType_descriptor();
}
template <>
struct is_proto_enum<::xla::FftType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::FftType>() {
  return ::xla::FftType_descriptor();
}
template <>
struct is_proto_enum<::xla::RandomDistribution> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::RandomDistribution>() {
  return ::xla::RandomDistribution_descriptor();
}
template <>
struct is_proto_enum<::xla::RandomAlgorithm> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::RandomAlgorithm>() {
  return ::xla::RandomAlgorithm_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // xla_2fxla_5fdata_2eproto_2epb_2eh
