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

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fxla_5fdata_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fxla_5fdata_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 5028003
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field_inl.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@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 {
class AnyMetadata;
}  // 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[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_xla_2fxla_5fdata_2eproto;
namespace xla {
class ChannelHandle;
struct ChannelHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern ChannelHandleDefaultTypeInternal _ChannelHandle_default_instance_;
class CholeskyOptions;
struct CholeskyOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern CholeskyOptionsDefaultTypeInternal _CholeskyOptions_default_instance_;
class CollectiveDeviceListProto;
struct CollectiveDeviceListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveDeviceListProtoDefaultTypeInternal _CollectiveDeviceListProto_default_instance_;
class ComputationStats;
struct ComputationStatsDefaultTypeInternal;
PROTOBUF_EXPORT extern ComputationStatsDefaultTypeInternal _ComputationStats_default_instance_;
class ConvolutionDimensionNumbers;
struct ConvolutionDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern ConvolutionDimensionNumbersDefaultTypeInternal _ConvolutionDimensionNumbers_default_instance_;
class DeviceAssignmentProto;
struct DeviceAssignmentProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceAssignmentProtoDefaultTypeInternal _DeviceAssignmentProto_default_instance_;
class DeviceAssignmentProto_ComputationDevice;
struct DeviceAssignmentProto_ComputationDeviceDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceAssignmentProto_ComputationDeviceDefaultTypeInternal _DeviceAssignmentProto_ComputationDevice_default_instance_;
class DeviceHandle;
struct DeviceHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern DeviceHandleDefaultTypeInternal _DeviceHandle_default_instance_;
class DotDimensionNumbers;
struct DotDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern DotDimensionNumbersDefaultTypeInternal _DotDimensionNumbers_default_instance_;
class ExecutionHandle;
struct ExecutionHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutionHandleDefaultTypeInternal _ExecutionHandle_default_instance_;
class ExecutionProfile;
struct ExecutionProfileDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutionProfileDefaultTypeInternal _ExecutionProfile_default_instance_;
class FrontendAttributes;
struct FrontendAttributesDefaultTypeInternal;
PROTOBUF_EXPORT extern FrontendAttributesDefaultTypeInternal _FrontendAttributes_default_instance_;
class FrontendAttributes_MapEntry_DoNotUse;
struct FrontendAttributes_MapEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern FrontendAttributes_MapEntry_DoNotUseDefaultTypeInternal _FrontendAttributes_MapEntry_DoNotUse_default_instance_;
class GatherDimensionNumbers;
struct GatherDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern GatherDimensionNumbersDefaultTypeInternal _GatherDimensionNumbers_default_instance_;
class GemmPerfTable;
struct GemmPerfTableDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableDefaultTypeInternal _GemmPerfTable_default_instance_;
class GemmPerfTableEntry;
struct GemmPerfTableEntryDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntryDefaultTypeInternal _GemmPerfTableEntry_default_instance_;
class GemmPerfTableEntryValues;
struct GemmPerfTableEntryValuesDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntryValuesDefaultTypeInternal _GemmPerfTableEntryValues_default_instance_;
class GemmPerfTableEntry_FlopsEntry_DoNotUse;
struct GemmPerfTableEntry_FlopsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTableEntry_FlopsEntry_DoNotUseDefaultTypeInternal _GemmPerfTableEntry_FlopsEntry_DoNotUse_default_instance_;
class GemmPerfTable_EntriesEntry_DoNotUse;
struct GemmPerfTable_EntriesEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmPerfTable_EntriesEntry_DoNotUseDefaultTypeInternal _GemmPerfTable_EntriesEntry_DoNotUse_default_instance_;
class GlobalDataHandle;
struct GlobalDataHandleDefaultTypeInternal;
PROTOBUF_EXPORT extern GlobalDataHandleDefaultTypeInternal _GlobalDataHandle_default_instance_;
class IotaReplicaGroupListProto;
struct IotaReplicaGroupListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern IotaReplicaGroupListProtoDefaultTypeInternal _IotaReplicaGroupListProto_default_instance_;
class LayoutProto;
struct LayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LayoutProtoDefaultTypeInternal _LayoutProto_default_instance_;
class LiteralProto;
struct LiteralProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern LiteralProtoDefaultTypeInternal _LiteralProto_default_instance_;
class OpMetadata;
struct OpMetadataDefaultTypeInternal;
PROTOBUF_EXPORT extern OpMetadataDefaultTypeInternal _OpMetadata_default_instance_;
class OpMetadata_ProfileInfo;
struct OpMetadata_ProfileInfoDefaultTypeInternal;
PROTOBUF_EXPORT extern OpMetadata_ProfileInfoDefaultTypeInternal _OpMetadata_ProfileInfo_default_instance_;
class OpSharding;
struct OpShardingDefaultTypeInternal;
PROTOBUF_EXPORT extern OpShardingDefaultTypeInternal _OpSharding_default_instance_;
class OriginalArrayProto;
struct OriginalArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalArrayProtoDefaultTypeInternal _OriginalArrayProto_default_instance_;
class OriginalValueNodeProto;
struct OriginalValueNodeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueNodeProtoDefaultTypeInternal _OriginalValueNodeProto_default_instance_;
class OriginalValueProto;
struct OriginalValueProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OriginalValueProtoDefaultTypeInternal _OriginalValueProto_default_instance_;
class OutputOperandAliasing;
struct OutputOperandAliasingDefaultTypeInternal;
PROTOBUF_EXPORT extern OutputOperandAliasingDefaultTypeInternal _OutputOperandAliasing_default_instance_;
class PaddingConfig;
struct PaddingConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern PaddingConfigDefaultTypeInternal _PaddingConfig_default_instance_;
class PaddingConfig_PaddingConfigDimension;
struct PaddingConfig_PaddingConfigDimensionDefaultTypeInternal;
PROTOBUF_EXPORT extern PaddingConfig_PaddingConfigDimensionDefaultTypeInternal _PaddingConfig_PaddingConfigDimension_default_instance_;
class ParameterReplication;
struct ParameterReplicationDefaultTypeInternal;
PROTOBUF_EXPORT extern ParameterReplicationDefaultTypeInternal _ParameterReplication_default_instance_;
class PrecisionConfig;
struct PrecisionConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern PrecisionConfigDefaultTypeInternal _PrecisionConfig_default_instance_;
class ProgramShapeProto;
struct ProgramShapeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ProgramShapeProtoDefaultTypeInternal _ProgramShapeProto_default_instance_;
class RaggedDotDimensionNumbers;
struct RaggedDotDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern RaggedDotDimensionNumbersDefaultTypeInternal _RaggedDotDimensionNumbers_default_instance_;
class ReplicaGroup;
struct ReplicaGroupDefaultTypeInternal;
PROTOBUF_EXPORT extern ReplicaGroupDefaultTypeInternal _ReplicaGroup_default_instance_;
class ResultAccuracy;
struct ResultAccuracyDefaultTypeInternal;
PROTOBUF_EXPORT extern ResultAccuracyDefaultTypeInternal _ResultAccuracy_default_instance_;
class ResultAccuracy_Tolerance;
struct ResultAccuracy_ToleranceDefaultTypeInternal;
PROTOBUF_EXPORT extern ResultAccuracy_ToleranceDefaultTypeInternal _ResultAccuracy_Tolerance_default_instance_;
class ScatterDimensionNumbers;
struct ScatterDimensionNumbersDefaultTypeInternal;
PROTOBUF_EXPORT extern ScatterDimensionNumbersDefaultTypeInternal _ScatterDimensionNumbers_default_instance_;
class ShapeProto;
struct ShapeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ShapeProtoDefaultTypeInternal _ShapeProto_default_instance_;
class SortOptions;
struct SortOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern SortOptionsDefaultTypeInternal _SortOptions_default_instance_;
class SourceTarget;
struct SourceTargetDefaultTypeInternal;
PROTOBUF_EXPORT extern SourceTargetDefaultTypeInternal _SourceTarget_default_instance_;
class SparsityDescriptor;
struct SparsityDescriptorDefaultTypeInternal;
PROTOBUF_EXPORT extern SparsityDescriptorDefaultTypeInternal _SparsityDescriptor_default_instance_;
class SplitConfigProto;
struct SplitConfigProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern SplitConfigProtoDefaultTypeInternal _SplitConfigProto_default_instance_;
class Statistic;
struct StatisticDefaultTypeInternal;
PROTOBUF_EXPORT extern StatisticDefaultTypeInternal _Statistic_default_instance_;
class StatisticsViz;
struct StatisticsVizDefaultTypeInternal;
PROTOBUF_EXPORT extern StatisticsVizDefaultTypeInternal _StatisticsViz_default_instance_;
class TileProto;
struct TileProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern TileProtoDefaultTypeInternal _TileProto_default_instance_;
class TriangularSolveOptions;
struct TriangularSolveOptionsDefaultTypeInternal;
PROTOBUF_EXPORT extern TriangularSolveOptionsDefaultTypeInternal _TriangularSolveOptions_default_instance_;
class WhileLoopBackendConfig;
struct WhileLoopBackendConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfigDefaultTypeInternal _WhileLoopBackendConfig_default_instance_;
class WhileLoopBackendConfig_KnownInductionVariable;
struct WhileLoopBackendConfig_KnownInductionVariableDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownInductionVariableDefaultTypeInternal _WhileLoopBackendConfig_KnownInductionVariable_default_instance_;
class WhileLoopBackendConfig_KnownInitStep;
struct WhileLoopBackendConfig_KnownInitStepDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownInitStepDefaultTypeInternal _WhileLoopBackendConfig_KnownInitStep_default_instance_;
class WhileLoopBackendConfig_KnownTripCount;
struct WhileLoopBackendConfig_KnownTripCountDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileLoopBackendConfig_KnownTripCountDefaultTypeInternal _WhileLoopBackendConfig_KnownTripCount_default_instance_;
class Window;
struct WindowDefaultTypeInternal;
PROTOBUF_EXPORT extern WindowDefaultTypeInternal _Window_default_instance_;
class WindowDimension;
struct WindowDimensionDefaultTypeInternal;
PROTOBUF_EXPORT extern WindowDimensionDefaultTypeInternal _WindowDimension_default_instance_;
}  // namespace xla
namespace google {
namespace protobuf {
}  // 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 bool ChannelHandle_ChannelType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t ChannelHandle_ChannelType_internal_data_[];
constexpr ChannelHandle_ChannelType ChannelHandle_ChannelType_ChannelType_MIN = static_cast<ChannelHandle_ChannelType>(0);
constexpr ChannelHandle_ChannelType ChannelHandle_ChannelType_ChannelType_MAX = static_cast<ChannelHandle_ChannelType>(3);
constexpr int ChannelHandle_ChannelType_ChannelType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool TriangularSolveOptions_Transpose_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t TriangularSolveOptions_Transpose_internal_data_[];
constexpr TriangularSolveOptions_Transpose TriangularSolveOptions_Transpose_Transpose_MIN = static_cast<TriangularSolveOptions_Transpose>(0);
constexpr TriangularSolveOptions_Transpose TriangularSolveOptions_Transpose_Transpose_MAX = static_cast<TriangularSolveOptions_Transpose>(3);
constexpr int TriangularSolveOptions_Transpose_Transpose_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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_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 bool OpSharding_Type_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t OpSharding_Type_internal_data_[];
constexpr OpSharding_Type OpSharding_Type_Type_MIN = static_cast<OpSharding_Type>(0);
constexpr OpSharding_Type OpSharding_Type_Type_MAX = static_cast<OpSharding_Type>(5);
constexpr int OpSharding_Type_Type_ARRAYSIZE = 5 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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, 5>(
      static_cast<int>(value));
}
inline bool OpSharding_Type_Parse(absl::string_view name, OpSharding_Type* 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 bool OpSharding_ShardGroupType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t OpSharding_ShardGroupType_internal_data_[];
constexpr OpSharding_ShardGroupType OpSharding_ShardGroupType_ShardGroupType_MIN = static_cast<OpSharding_ShardGroupType>(0);
constexpr OpSharding_ShardGroupType OpSharding_ShardGroupType_ShardGroupType_MAX = static_cast<OpSharding_ShardGroupType>(1);
constexpr int OpSharding_ShardGroupType_ShardGroupType_ARRAYSIZE = 1 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool ResultAccuracy_Mode_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t ResultAccuracy_Mode_internal_data_[];
constexpr ResultAccuracy_Mode ResultAccuracy_Mode_Mode_MIN = static_cast<ResultAccuracy_Mode>(0);
constexpr ResultAccuracy_Mode ResultAccuracy_Mode_Mode_MAX = static_cast<ResultAccuracy_Mode>(1);
constexpr int ResultAccuracy_Mode_Mode_ARRAYSIZE = 1 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool PrecisionConfig_Precision_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Precision_internal_data_[];
constexpr PrecisionConfig_Precision PrecisionConfig_Precision_Precision_MIN = static_cast<PrecisionConfig_Precision>(0);
constexpr PrecisionConfig_Precision PrecisionConfig_Precision_Precision_MAX = static_cast<PrecisionConfig_Precision>(2);
constexpr int PrecisionConfig_Precision_Precision_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool PrecisionConfig_Algorithm_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t PrecisionConfig_Algorithm_internal_data_[];
constexpr PrecisionConfig_Algorithm PrecisionConfig_Algorithm_Algorithm_MIN = static_cast<PrecisionConfig_Algorithm>(0);
constexpr PrecisionConfig_Algorithm PrecisionConfig_Algorithm_Algorithm_MAX = static_cast<PrecisionConfig_Algorithm>(13);
constexpr int PrecisionConfig_Algorithm_Algorithm_ARRAYSIZE = 13 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool PrimitiveType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t PrimitiveType_internal_data_[];
constexpr PrimitiveType PrimitiveType_MIN = static_cast<PrimitiveType>(0);
constexpr PrimitiveType PrimitiveType_MAX = static_cast<PrimitiveType>(34);
constexpr int PrimitiveType_ARRAYSIZE = 34 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* value) {
  return ::google::protobuf::internal::ParseNamedEnum<PrimitiveType>(
      PrimitiveType_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 bool DimLevelType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t DimLevelType_internal_data_[];
constexpr DimLevelType DimLevelType_MIN = static_cast<DimLevelType>(0);
constexpr DimLevelType DimLevelType_MAX = static_cast<DimLevelType>(3);
constexpr int DimLevelType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool ProfileType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t ProfileType_internal_data_[];
constexpr ProfileType ProfileType_MIN = static_cast<ProfileType>(0);
constexpr ProfileType ProfileType_MAX = static_cast<ProfileType>(3);
constexpr int ProfileType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool ProfileSource_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t ProfileSource_internal_data_[];
constexpr ProfileSource ProfileSource_MIN = static_cast<ProfileSource>(0);
constexpr ProfileSource ProfileSource_MAX = static_cast<ProfileSource>(2);
constexpr int ProfileSource_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool CompilationEvent_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t CompilationEvent_internal_data_[];
constexpr CompilationEvent CompilationEvent_MIN = static_cast<CompilationEvent>(0);
constexpr CompilationEvent CompilationEvent_MAX = static_cast<CompilationEvent>(2);
constexpr int CompilationEvent_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CompilationEvent>(
      CompilationEvent_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 bool PaddingType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t PaddingType_internal_data_[];
constexpr PaddingType PaddingType_MIN = static_cast<PaddingType>(0);
constexpr PaddingType PaddingType_MAX = static_cast<PaddingType>(2);
constexpr int PaddingType_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool FftType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t FftType_internal_data_[];
constexpr FftType FftType_MIN = static_cast<FftType>(0);
constexpr FftType FftType_MAX = static_cast<FftType>(3);
constexpr int FftType_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* value) {
  return ::google::protobuf::internal::ParseNamedEnum<FftType>(
      FftType_descriptor(), name, value);
}
enum SparsityType : int {
  SPARSITY_INVALID = 0,
  SPARSITY_STRUCTURED_N_M = 1,
  SparsityType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  SparsityType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool SparsityType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t SparsityType_internal_data_[];
constexpr SparsityType SparsityType_MIN = static_cast<SparsityType>(0);
constexpr SparsityType SparsityType_MAX = static_cast<SparsityType>(1);
constexpr int SparsityType_ARRAYSIZE = 1 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
SparsityType_descriptor();
template <typename T>
const std::string& SparsityType_Name(T value) {
  static_assert(std::is_same<T, SparsityType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to SparsityType_Name().");
  return SparsityType_Name(static_cast<SparsityType>(value));
}
template <>
inline const std::string& SparsityType_Name(SparsityType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<SparsityType_descriptor,
                                                 0, 1>(
      static_cast<int>(value));
}
inline bool SparsityType_Parse(absl::string_view name, SparsityType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<SparsityType>(
      SparsityType_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 bool RandomDistribution_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t RandomDistribution_internal_data_[];
constexpr RandomDistribution RandomDistribution_MIN = static_cast<RandomDistribution>(0);
constexpr RandomDistribution RandomDistribution_MAX = static_cast<RandomDistribution>(2);
constexpr int RandomDistribution_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* 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 bool RandomAlgorithm_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t RandomAlgorithm_internal_data_[];
constexpr RandomAlgorithm RandomAlgorithm_MIN = static_cast<RandomAlgorithm>(0);
constexpr RandomAlgorithm RandomAlgorithm_MAX = static_cast<RandomAlgorithm>(2);
constexpr int RandomAlgorithm_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
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* value) {
  return ::google::protobuf::internal::ParseNamedEnum<RandomAlgorithm>(
      RandomAlgorithm_descriptor(), name, value);
}
enum CollectiveOpGroupModeProto : int {
  COLLECTIVE_MODE_UNSPECIFIED = 0,
  COLLECTIVE_MODE_CROSS_REPLICA = 1,
  COLLECTIVE_MODE_CROSS_PARTITION = 2,
  COLLECTIVE_MODE_CROSS_REPLICA_AND_PARTITION = 3,
  COLLECTIVE_MODE_FLATTENED_ID = 4,
  CollectiveOpGroupModeProto_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  CollectiveOpGroupModeProto_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool CollectiveOpGroupModeProto_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t CollectiveOpGroupModeProto_internal_data_[];
constexpr CollectiveOpGroupModeProto CollectiveOpGroupModeProto_MIN = static_cast<CollectiveOpGroupModeProto>(0);
constexpr CollectiveOpGroupModeProto CollectiveOpGroupModeProto_MAX = static_cast<CollectiveOpGroupModeProto>(4);
constexpr int CollectiveOpGroupModeProto_ARRAYSIZE = 4 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
CollectiveOpGroupModeProto_descriptor();
template <typename T>
const std::string& CollectiveOpGroupModeProto_Name(T value) {
  static_assert(std::is_same<T, CollectiveOpGroupModeProto>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to CollectiveOpGroupModeProto_Name().");
  return CollectiveOpGroupModeProto_Name(static_cast<CollectiveOpGroupModeProto>(value));
}
template <>
inline const std::string& CollectiveOpGroupModeProto_Name(CollectiveOpGroupModeProto value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CollectiveOpGroupModeProto_descriptor,
                                                 0, 4>(
      static_cast<int>(value));
}
inline bool CollectiveOpGroupModeProto_Parse(absl::string_view name, CollectiveOpGroupModeProto* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CollectiveOpGroupModeProto>(
      CollectiveOpGroupModeProto_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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const WindowDimension& from_msg);
    ::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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

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

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const WhileLoopBackendConfig_KnownInitStep& from_msg);
    ::int64_t init_;
    ::int64_t step_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* 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* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const TriangularSolveOptions& from_msg);
    bool left_side_;
    bool lower_;
    bool unit_diagonal_;
    int transpose_a_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const TileProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> dimensions_;
    mutable ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* mutable_stat_name();
  PROTOBUF_NODISCARD std::string* release_stat_name();
  void set_allocated_stat_name(std::string* value);

  private:
  const std::string& _internal_stat_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_stat_name(
      const std::string& value);
  std::string* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const Statistic& from_msg);
    ::google::protobuf::internal::ArenaStringPtr stat_name_;
    double stat_val_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_split_indices() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const SplitConfigProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> split_indices_;
    mutable ::google::protobuf::internal::CachedSize _split_indices_cached_byte_size_;
    ::int64_t dimension_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

  inline SparsityDescriptor(const SparsityDescriptor& from) : SparsityDescriptor(nullptr, from) {}
  inline SparsityDescriptor(SparsityDescriptor&& from) noexcept
      : SparsityDescriptor(nullptr, std::move(from)) {}
  inline SparsityDescriptor& operator=(const SparsityDescriptor& from) {
    CopyFrom(from);
    return *this;
  }
  inline SparsityDescriptor& operator=(SparsityDescriptor&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

  SparsityDescriptor* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<SparsityDescriptor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SparsityDescriptor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SparsityDescriptor& from) { SparsityDescriptor::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kTypeFieldNumber = 1,
    kIndexFieldNumber = 2,
    kDimensionFieldNumber = 3,
    kNFieldNumber = 4,
    kMFieldNumber = 5,
  };
  // .xla.SparsityType type = 1;
  void clear_type() ;
  ::xla::SparsityType type() const;
  void set_type(::xla::SparsityType value);

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

  public:
  // int32 index = 2;
  void clear_index() ;
  ::int32_t index() const;
  void set_index(::int32_t value);

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

  public:
  // int32 dimension = 3;
  void clear_dimension() ;
  ::int32_t dimension() const;
  void set_dimension(::int32_t value);

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

  public:
  // int32 n = 4;
  void clear_n() ;
  ::int32_t n() const;
  void set_n(::int32_t value);

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

  public:
  // int32 m = 5;
  void clear_m() ;
  ::int32_t m() const;
  void set_m(::int32_t value);

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

  public:
  // @@protoc_insertion_point(class_scope:xla.SparsityDescriptor)
 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const SparsityDescriptor& from_msg);
    int type_;
    ::int32_t index_;
    ::int32_t dimension_;
    ::int32_t n_;
    ::int32_t m_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const SourceTarget& from_msg);
    ::int64_t source_;
    ::int64_t target_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const SortOptions& from_msg);
    bool descending_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_scatter_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ScatterDimensionNumbers& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> update_window_dims_;
    mutable ::google::protobuf::internal::CachedSize _update_window_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> inserted_window_dims_;
    mutable ::google::protobuf::internal::CachedSize _inserted_window_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> scatter_dims_to_operand_dims_;
    mutable ::google::protobuf::internal::CachedSize _scatter_dims_to_operand_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> input_batching_dims_;
    mutable ::google::protobuf::internal::CachedSize _input_batching_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> scatter_indices_batching_dims_;
    mutable ::google::protobuf::internal::CachedSize _scatter_indices_batching_dims_cached_byte_size_;
    ::int64_t index_vector_dim_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ResultAccuracy_Tolerance& from_msg);
    double atol_;
    double rtol_;
    ::int64_t ulps_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_replica_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ReplicaGroup& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> replica_ids_;
    mutable ::google::protobuf::internal::CachedSize _replica_ids_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_operand_precision() const;
  ::google::protobuf::RepeatedField<int>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const PrecisionConfig& from_msg);
    ::google::protobuf::RepeatedField<int> operand_precision_;
    mutable ::google::protobuf::internal::CachedSize _operand_precision_cached_byte_size_;
    int algorithm_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_replicated_at_leaf_buffers() const;
  ::google::protobuf::RepeatedField<bool>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ParameterReplication& from_msg);
    ::google::protobuf::RepeatedField<bool> replicated_at_leaf_buffers_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const PaddingConfig_PaddingConfigDimension& from_msg);
    ::int64_t edge_padding_low_;
    ::int64_t edge_padding_high_;
    ::int64_t interior_padding_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kOutputShapeIndexFieldNumber = 1,
    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>* mutable_output_shape_index();

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

  public:
  // repeated int64 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>* mutable_operand_shape_index();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_operand_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OutputOperandAliasing& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> output_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _output_shape_index_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> operand_shape_index_;
    mutable ::google::protobuf::internal::CachedSize _operand_shape_index_cached_byte_size_;
    ::int64_t operand_index_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

  public:
  // string instruction_name = 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* mutable_instruction_name();
  PROTOBUF_NODISCARD std::string* release_instruction_name();
  void set_allocated_instruction_name(std::string* value);

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

  public:
  // @@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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OriginalArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> shape_index_;
    mutable ::google::protobuf::internal::CachedSize _shape_index_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kProfileTypeFieldNumber = 1,
    kRelativeSpeedupFieldNumber = 2,
    kProfileSourceFieldNumber = 3,
    kCompilationEventFieldNumber = 4,
  };
  // 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>* mutable_profile_type();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_profile_type() const;
  ::google::protobuf::RepeatedField<int>* _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:
  // @@protoc_insertion_point(class_scope:xla.OpMetadata.ProfileInfo)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 0,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OpMetadata_ProfileInfo& from_msg);
    ::google::protobuf::RepeatedField<int> profile_type_;
    mutable ::google::protobuf::internal::CachedSize _profile_type_cached_byte_size_;
    double relative_speedup_;
    int profile_source_;
    int compilation_event_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const IotaReplicaGroupListProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> iota_reshape_dims_;
    mutable ::google::protobuf::internal::CachedSize _iota_reshape_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> iota_transpose_perm_;
    mutable ::google::protobuf::internal::CachedSize _iota_transpose_perm_cached_byte_size_;
    ::int64_t num_replica_groups_;
    ::int64_t num_devices_per_group_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

class GemmPerfTableEntry_FlopsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          GemmPerfTableEntry_FlopsEntry_DoNotUse, std::string, ::int64_t,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_INT64> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      GemmPerfTableEntry_FlopsEntry_DoNotUse, 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* arena);
  static const GemmPerfTableEntry_FlopsEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const GemmPerfTableEntry_FlopsEntry_DoNotUse*>(
        &_GemmPerfTableEntry_FlopsEntry_DoNotUse_default_instance_);
  }


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_start_indices_batching_dims() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const GatherDimensionNumbers& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> offset_dims_;
    mutable ::google::protobuf::internal::CachedSize _offset_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> collapsed_slice_dims_;
    mutable ::google::protobuf::internal::CachedSize _collapsed_slice_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> start_index_map_;
    mutable ::google::protobuf::internal::CachedSize _start_index_map_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> operand_batching_dims_;
    mutable ::google::protobuf::internal::CachedSize _operand_batching_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> start_indices_batching_dims_;
    mutable ::google::protobuf::internal::CachedSize _start_indices_batching_dims_cached_byte_size_;
    ::int64_t index_vector_dim_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

class FrontendAttributes_MapEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          FrontendAttributes_MapEntry_DoNotUse, std::string, std::string,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      FrontendAttributes_MapEntry_DoNotUse, 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* arena);
  static const FrontendAttributes_MapEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const FrontendAttributes_MapEntry_DoNotUse*>(
        &_FrontendAttributes_MapEntry_DoNotUse_default_instance_);
  }


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

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

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ExecutionProfile& from_msg);
    ::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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_rhs_batch_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const DotDimensionNumbers& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> lhs_contracting_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _lhs_contracting_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_contracting_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _rhs_contracting_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> lhs_batch_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _lhs_batch_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_batch_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _rhs_batch_dimensions_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const DeviceHandle& from_msg);
    ::int64_t handle_;
    ::int64_t device_count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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;
  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 (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_replica_device_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const DeviceAssignmentProto_ComputationDevice& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> replica_device_ids_;
    mutable ::google::protobuf::internal::CachedSize _replica_device_ids_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_output_spatial_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ConvolutionDimensionNumbers& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> kernel_spatial_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _kernel_spatial_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> input_spatial_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _input_spatial_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> output_spatial_dimensions_;
    mutable ::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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ComputationStats& from_msg);
    double flop_count_;
    double transcendental_count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const CholeskyOptions& from_msg);
    bool lower_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* 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* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ChannelHandle& from_msg);
    ::int64_t handle_;
    int type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>& _internal_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::WindowDimension>* _internal_mutable_dimensions();
  public:
  const ::xla::WindowDimension& dimensions(int index) const;
  ::xla::WindowDimension* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const Window& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::WindowDimension > dimensions_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using KnownInitStep = WhileLoopBackendConfig_KnownInitStep;
  using KnownTripCount = WhileLoopBackendConfig_KnownTripCount;
  using KnownInductionVariable = WhileLoopBackendConfig_KnownInductionVariable;

  // accessors -------------------------------------------------------
  enum : int {
    kKnownTripCountFieldNumber = 1,
    kKnownInitStepFieldNumber = 2,
    kKnownInductionVariableFieldNumber = 3,
  };
  // .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;
  PROTOBUF_NODISCARD ::xla::WhileLoopBackendConfig_KnownTripCount* release_known_trip_count();
  ::xla::WhileLoopBackendConfig_KnownTripCount* mutable_known_trip_count();
  void set_allocated_known_trip_count(::xla::WhileLoopBackendConfig_KnownTripCount* value);
  void unsafe_arena_set_allocated_known_trip_count(::xla::WhileLoopBackendConfig_KnownTripCount* value);
  ::xla::WhileLoopBackendConfig_KnownTripCount* unsafe_arena_release_known_trip_count();

  private:
  const ::xla::WhileLoopBackendConfig_KnownTripCount& _internal_known_trip_count() const;
  ::xla::WhileLoopBackendConfig_KnownTripCount* _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;
  PROTOBUF_NODISCARD ::xla::WhileLoopBackendConfig_KnownInitStep* release_known_init_step();
  ::xla::WhileLoopBackendConfig_KnownInitStep* mutable_known_init_step();
  void set_allocated_known_init_step(::xla::WhileLoopBackendConfig_KnownInitStep* value);
  void unsafe_arena_set_allocated_known_init_step(::xla::WhileLoopBackendConfig_KnownInitStep* value);
  ::xla::WhileLoopBackendConfig_KnownInitStep* unsafe_arena_release_known_init_step();

  private:
  const ::xla::WhileLoopBackendConfig_KnownInitStep& _internal_known_init_step() const;
  ::xla::WhileLoopBackendConfig_KnownInitStep* _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;
  PROTOBUF_NODISCARD ::xla::WhileLoopBackendConfig_KnownInductionVariable* release_known_induction_variable();
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* mutable_known_induction_variable();
  void set_allocated_known_induction_variable(::xla::WhileLoopBackendConfig_KnownInductionVariable* value);
  void unsafe_arena_set_allocated_known_induction_variable(::xla::WhileLoopBackendConfig_KnownInductionVariable* value);
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* unsafe_arena_release_known_induction_variable();

  private:
  const ::xla::WhileLoopBackendConfig_KnownInductionVariable& _internal_known_induction_variable() const;
  ::xla::WhileLoopBackendConfig_KnownInductionVariable* _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, 3, 3,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const WhileLoopBackendConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::WhileLoopBackendConfig_KnownTripCount* known_trip_count_;
    ::xla::WhileLoopBackendConfig_KnownInitStep* known_init_step_;
    ::xla::WhileLoopBackendConfig_KnownInductionVariable* known_induction_variable_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::Statistic>& _internal_statistics() const;
  ::google::protobuf::RepeatedPtrField<::xla::Statistic>* _internal_mutable_statistics();
  public:
  const ::xla::Statistic& statistics(int index) const;
  ::xla::Statistic* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const StatisticsViz& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::Statistic > statistics_;
    ::int64_t stat_index_to_visualize_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using 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* 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* 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;
  PROTOBUF_NODISCARD ::xla::ResultAccuracy_Tolerance* release_tolerance();
  ::xla::ResultAccuracy_Tolerance* mutable_tolerance();
  void set_allocated_tolerance(::xla::ResultAccuracy_Tolerance* value);
  void unsafe_arena_set_allocated_tolerance(::xla::ResultAccuracy_Tolerance* value);
  ::xla::ResultAccuracy_Tolerance* unsafe_arena_release_tolerance();

  private:
  const ::xla::ResultAccuracy_Tolerance& _internal_tolerance() const;
  ::xla::ResultAccuracy_Tolerance* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ResultAccuracy& from_msg);
    union SpecsUnion {
      constexpr SpecsUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      int mode_;
      ::xla::ResultAccuracy_Tolerance* tolerance_;
    } specs_;
    mutable ::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;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_rhs_group_dimensions() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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;
  PROTOBUF_NODISCARD ::xla::DotDimensionNumbers* release_dot_dimension_numbers();
  ::xla::DotDimensionNumbers* mutable_dot_dimension_numbers();
  void set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value);
  void unsafe_arena_set_allocated_dot_dimension_numbers(::xla::DotDimensionNumbers* value);
  ::xla::DotDimensionNumbers* unsafe_arena_release_dot_dimension_numbers();

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

  public:
  // @@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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const RaggedDotDimensionNumbers& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> lhs_ragged_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _lhs_ragged_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> rhs_group_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _rhs_group_dimensions_cached_byte_size_;
    ::xla::DotDimensionNumbers* dot_dimension_numbers_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>& _internal_dimensions() const;
  ::google::protobuf::RepeatedPtrField<::xla::PaddingConfig_PaddingConfigDimension>* _internal_mutable_dimensions();
  public:
  const ::xla::PaddingConfig_PaddingConfigDimension& dimensions(int index) const;
  ::xla::PaddingConfig_PaddingConfigDimension* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const PaddingConfig& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::PaddingConfig_PaddingConfigDimension > dimensions_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

  inline OriginalValueNodeProto(const OriginalValueNodeProto& from) : OriginalValueNodeProto(nullptr, from) {}
  inline OriginalValueNodeProto(OriginalValueNodeProto&& from) noexcept
      : OriginalValueNodeProto(nullptr, std::move(from)) {}
  inline OriginalValueNodeProto& operator=(const OriginalValueNodeProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OriginalValueNodeProto& operator=(OriginalValueNodeProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

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

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

  OriginalValueNodeProto* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<OriginalValueNodeProto>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginalValueNodeProto& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginalValueNodeProto& from) { OriginalValueNodeProto::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_shape_index() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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;
  PROTOBUF_NODISCARD ::xla::OriginalArrayProto* release_original_array();
  ::xla::OriginalArrayProto* mutable_original_array();
  void set_allocated_original_array(::xla::OriginalArrayProto* value);
  void unsafe_arena_set_allocated_original_array(::xla::OriginalArrayProto* value);
  ::xla::OriginalArrayProto* unsafe_arena_release_original_array();

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

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


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

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

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

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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using ProfileInfo = 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,
  };
  // 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>* mutable_profile_type();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_profile_type() const;
  ::google::protobuf::RepeatedField<int>* _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* mutable_op_type();
  PROTOBUF_NODISCARD std::string* release_op_type();
  void set_allocated_op_type(std::string* value);

  private:
  const std::string& _internal_op_type() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_op_type(
      const std::string& value);
  std::string* _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* mutable_op_name();
  PROTOBUF_NODISCARD std::string* release_op_name();
  void set_allocated_op_name(std::string* value);

  private:
  const std::string& _internal_op_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_op_name(
      const std::string& value);
  std::string* _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* mutable_source_file();
  PROTOBUF_NODISCARD std::string* release_source_file();
  void set_allocated_source_file(std::string* value);

  private:
  const std::string& _internal_source_file() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_source_file(
      const std::string& value);
  std::string* _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* mutable_deduplicated_name();
  PROTOBUF_NODISCARD std::string* release_deduplicated_name();
  void set_allocated_deduplicated_name(std::string* value);

  private:
  const std::string& _internal_deduplicated_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_deduplicated_name(
      const std::string& value);
  std::string* _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* mutable_scheduling_name();
  PROTOBUF_NODISCARD std::string* release_scheduling_name();
  void set_allocated_scheduling_name(std::string* value);

  private:
  const std::string& _internal_scheduling_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_scheduling_name(
      const std::string& value);
  std::string* _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;
  PROTOBUF_NODISCARD ::xla::OpMetadata_ProfileInfo* release_profile_info();
  ::xla::OpMetadata_ProfileInfo* mutable_profile_info();
  void set_allocated_profile_info(::xla::OpMetadata_ProfileInfo* value);
  void unsafe_arena_set_allocated_profile_info(::xla::OpMetadata_ProfileInfo* value);
  ::xla::OpMetadata_ProfileInfo* unsafe_arena_release_profile_info();

  private:
  const ::xla::OpMetadata_ProfileInfo& _internal_profile_info() const;
  ::xla::OpMetadata_ProfileInfo* _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:
  // @@protoc_insertion_point(class_scope:xla.OpMetadata)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 11, 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OpMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<int> profile_type_;
    mutable ::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* 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_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_minor_to_major() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* mutable_tiles(int index);
  ::google::protobuf::RepeatedPtrField<::xla::TileProto>* mutable_tiles();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::TileProto>& _internal_tiles() const;
  ::google::protobuf::RepeatedPtrField<::xla::TileProto>* _internal_mutable_tiles();
  public:
  const ::xla::TileProto& tiles(int index) const;
  ::xla::TileProto* 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>* mutable_dim_level_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_dim_level_types() const;
  ::google::protobuf::RepeatedField<int>* _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>* mutable_dim_unique();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_dim_unique() const;
  ::google::protobuf::RepeatedField<bool>* _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>* mutable_dim_ordered();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_dim_ordered() const;
  ::google::protobuf::RepeatedField<bool>* _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* mutable_split_configs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* mutable_split_configs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>& _internal_split_configs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SplitConfigProto>* _internal_mutable_split_configs();
  public:
  const ::xla::SplitConfigProto& split_configs(int index) const;
  ::xla::SplitConfigProto* 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;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_physical_shape();
  ::xla::ShapeProto* mutable_physical_shape();
  void set_allocated_physical_shape(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_physical_shape(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_physical_shape();

  private:
  const ::xla::ShapeProto& _internal_physical_shape() const;
  ::xla::ShapeProto* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const LayoutProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> minor_to_major_;
    mutable ::google::protobuf::internal::CachedSize _minor_to_major_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::TileProto > tiles_;
    ::google::protobuf::RepeatedField<int> dim_level_types_;
    mutable ::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* 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;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_tuple_shapes() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* _internal_mutable_tuple_shapes();
  public:
  const ::xla::ShapeProto& tuple_shapes(int index) const;
  ::xla::ShapeProto* 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>* mutable_is_dynamic_dimension();

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

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

  private:
  const ::xla::LayoutProto& _internal_layout() const;
  ::xla::LayoutProto* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ShapeProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> dimensions_;
    mutable ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > tuple_shapes_;
    ::google::protobuf::RepeatedField<bool> is_dynamic_dimension_;
    ::xla::LayoutProto* layout_;
    int element_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::Map<std::string, ::int64_t>& _internal_flops() const;
  ::google::protobuf::Map<std::string, ::int64_t>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const GemmPerfTableEntry& from_msg);
    ::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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::Map<std::string, std::string>& _internal_map() const;
  ::google::protobuf::Map<std::string, std::string>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* 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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>& _internal_computation_devices() const;
  ::google::protobuf::RepeatedPtrField<::xla::DeviceAssignmentProto_ComputationDevice>* _internal_mutable_computation_devices();
  public:
  const ::xla::DeviceAssignmentProto_ComputationDevice& computation_devices(int index) const;
  ::xla::DeviceAssignmentProto_ComputationDevice* 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const DeviceAssignmentProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::DeviceAssignmentProto_ComputationDevice > computation_devices_;
    ::int32_t replica_count_;
    ::int32_t computation_count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& _internal_replica_groups() const;
  ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* _internal_mutable_replica_groups();
  public:
  const ::xla::ReplicaGroup& replica_groups(int index) const;
  ::xla::ReplicaGroup* 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;
  PROTOBUF_NODISCARD ::xla::IotaReplicaGroupListProto* release_iota_replica_group_list();
  ::xla::IotaReplicaGroupListProto* mutable_iota_replica_group_list();
  void set_allocated_iota_replica_group_list(::xla::IotaReplicaGroupListProto* value);
  void unsafe_arena_set_allocated_iota_replica_group_list(::xla::IotaReplicaGroupListProto* value);
  ::xla::IotaReplicaGroupListProto* unsafe_arena_release_iota_replica_group_list();

  private:
  const ::xla::IotaReplicaGroupListProto& _internal_iota_replica_group_list() const;
  ::xla::IotaReplicaGroupListProto* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const CollectiveDeviceListProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ReplicaGroup > replica_groups_;
    ::xla::IotaReplicaGroupListProto* iota_replica_group_list_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_parameters() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* _internal_mutable_parameters();
  public:
  const ::xla::ShapeProto& parameters(int index) const;
  ::xla::ShapeProto* 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* 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* 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>* mutable_parameter_names();

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

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

  private:
  const ::xla::ShapeProto& _internal_result() const;
  ::xla::ShapeProto* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ProgramShapeProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > parameters_;
    ::google::protobuf::RepeatedPtrField<std::string> parameter_names_;
    ::xla::ShapeProto* result_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kLeavesFieldNumber = 2,
    kShapeFieldNumber = 1,
  };
  // repeated .xla.OriginalValueNodeProto leaves = 2;
  int leaves_size() const;
  private:
  int _internal_leaves_size() const;

  public:
  void clear_leaves() ;
  ::xla::OriginalValueNodeProto* mutable_leaves(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>* mutable_leaves();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>& _internal_leaves() const;
  ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>* _internal_mutable_leaves();
  public:
  const ::xla::OriginalValueNodeProto& leaves(int index) const;
  ::xla::OriginalValueNodeProto* add_leaves();
  const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>& leaves() const;
  // .xla.ShapeProto shape = 1;
  bool has_shape() const;
  void clear_shape() ;
  const ::xla::ShapeProto& shape() const;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_shape();
  ::xla::ShapeProto* mutable_shape();
  void set_allocated_shape(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_shape(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_shape();

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

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


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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_tile_assignment_devices() const;
  ::google::protobuf::RepeatedField<::int64_t>* _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* mutable_tuple_shardings(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* mutable_tuple_shardings();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpSharding>& _internal_tuple_shardings() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpSharding>* _internal_mutable_tuple_shardings();
  public:
  const ::xla::OpSharding& tuple_shardings(int index) const;
  ::xla::OpSharding* 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* mutable_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* mutable_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>& _internal_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::OpMetadata>* _internal_mutable_metadata();
  public:
  const ::xla::OpMetadata& metadata(int index) const;
  ::xla::OpMetadata* 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>* mutable_last_tile_dims();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_last_tile_dims() const;
  ::google::protobuf::RepeatedField<int>* _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>* mutable_iota_reshape_dims();

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

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_iota_transpose_perm() const;
  ::google::protobuf::RepeatedField<::int32_t>* _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;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_tile_shape();
  ::xla::ShapeProto* mutable_tile_shape();
  void set_allocated_tile_shape(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_tile_shape(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_tile_shape();

  private:
  const ::xla::ShapeProto& _internal_tile_shape() const;
  ::xla::ShapeProto* _internal_mutable_tile_shape();

  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, 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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OpSharding& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> tile_assignment_dimensions_;
    mutable ::google::protobuf::internal::CachedSize _tile_assignment_dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> tile_assignment_devices_;
    mutable ::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_;
    mutable ::google::protobuf::internal::CachedSize _last_tile_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> iota_reshape_dims_;
    mutable ::google::protobuf::internal::CachedSize _iota_reshape_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> iota_transpose_perm_;
    mutable ::google::protobuf::internal::CachedSize _iota_transpose_perm_cached_byte_size_;
    ::xla::ShapeProto* tile_shape_;
    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;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_preds() const;
  ::google::protobuf::RepeatedField<bool>* _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>* mutable_s32s();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_s32s() const;
  ::google::protobuf::RepeatedField<::int32_t>* _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>* mutable_s64s();

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

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_u32s() const;
  ::google::protobuf::RepeatedField<::uint32_t>* _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>* mutable_u64s();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_u64s() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _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>* mutable_f32s();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_f32s() const;
  ::google::protobuf::RepeatedField<float>* _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>* mutable_f64s();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_f64s() const;
  ::google::protobuf::RepeatedField<double>* _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* mutable_tuple_literals(int index);
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* mutable_tuple_literals();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>& _internal_tuple_literals() const;
  ::google::protobuf::RepeatedPtrField<::xla::LiteralProto>* _internal_mutable_tuple_literals();
  public:
  const ::xla::LiteralProto& tuple_literals(int index) const;
  ::xla::LiteralProto* 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>* mutable_c64s();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_c64s() const;
  ::google::protobuf::RepeatedField<float>* _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>* mutable_sparse_indices();

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

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_c128s() const;
  ::google::protobuf::RepeatedField<double>* _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* mutable_u8s();
  PROTOBUF_NODISCARD std::string* release_u8s();
  void set_allocated_u8s(std::string* value);

  private:
  const std::string& _internal_u8s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u8s(
      const std::string& value);
  std::string* _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* mutable_f16s();
  PROTOBUF_NODISCARD std::string* release_f16s();
  void set_allocated_f16s(std::string* value);

  private:
  const std::string& _internal_f16s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f16s(
      const std::string& value);
  std::string* _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* mutable_bf16s();
  PROTOBUF_NODISCARD std::string* release_bf16s();
  void set_allocated_bf16s(std::string* value);

  private:
  const std::string& _internal_bf16s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_bf16s(
      const std::string& value);
  std::string* _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* mutable_s8s();
  PROTOBUF_NODISCARD std::string* release_s8s();
  void set_allocated_s8s(std::string* value);

  private:
  const std::string& _internal_s8s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s8s(
      const std::string& value);
  std::string* _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* mutable_u16s();
  PROTOBUF_NODISCARD std::string* release_u16s();
  void set_allocated_u16s(std::string* value);

  private:
  const std::string& _internal_u16s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u16s(
      const std::string& value);
  std::string* _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* mutable_s16s();
  PROTOBUF_NODISCARD std::string* release_s16s();
  void set_allocated_s16s(std::string* value);

  private:
  const std::string& _internal_s16s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s16s(
      const std::string& value);
  std::string* _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* mutable_f8e5m2s();
  PROTOBUF_NODISCARD std::string* release_f8e5m2s();
  void set_allocated_f8e5m2s(std::string* value);

  private:
  const std::string& _internal_f8e5m2s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e5m2s(
      const std::string& value);
  std::string* _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* mutable_f8e4m3fns();
  PROTOBUF_NODISCARD std::string* release_f8e4m3fns();
  void set_allocated_f8e4m3fns(std::string* value);

  private:
  const std::string& _internal_f8e4m3fns() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3fns(
      const std::string& value);
  std::string* _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* mutable_s4s();
  PROTOBUF_NODISCARD std::string* release_s4s();
  void set_allocated_s4s(std::string* value);

  private:
  const std::string& _internal_s4s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s4s(
      const std::string& value);
  std::string* _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* mutable_u4s();
  PROTOBUF_NODISCARD std::string* release_u4s();
  void set_allocated_u4s(std::string* value);

  private:
  const std::string& _internal_u4s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u4s(
      const std::string& value);
  std::string* _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* mutable_f8e4m3b11fnuzs();
  PROTOBUF_NODISCARD std::string* release_f8e4m3b11fnuzs();
  void set_allocated_f8e4m3b11fnuzs(std::string* value);

  private:
  const std::string& _internal_f8e4m3b11fnuzs() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3b11fnuzs(
      const std::string& value);
  std::string* _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* mutable_f8e5m2fnuzs();
  PROTOBUF_NODISCARD std::string* release_f8e5m2fnuzs();
  void set_allocated_f8e5m2fnuzs(std::string* value);

  private:
  const std::string& _internal_f8e5m2fnuzs() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e5m2fnuzs(
      const std::string& value);
  std::string* _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* mutable_f8e4m3fnuzs();
  PROTOBUF_NODISCARD std::string* release_f8e4m3fnuzs();
  void set_allocated_f8e4m3fnuzs(std::string* value);

  private:
  const std::string& _internal_f8e4m3fnuzs() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3fnuzs(
      const std::string& value);
  std::string* _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* mutable_s2s();
  PROTOBUF_NODISCARD std::string* release_s2s();
  void set_allocated_s2s(std::string* value);

  private:
  const std::string& _internal_s2s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s2s(
      const std::string& value);
  std::string* _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* mutable_u2s();
  PROTOBUF_NODISCARD std::string* release_u2s();
  void set_allocated_u2s(std::string* value);

  private:
  const std::string& _internal_u2s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u2s(
      const std::string& value);
  std::string* _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* mutable_f8e4m3s();
  PROTOBUF_NODISCARD std::string* release_f8e4m3s();
  void set_allocated_f8e4m3s(std::string* value);

  private:
  const std::string& _internal_f8e4m3s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e4m3s(
      const std::string& value);
  std::string* _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* mutable_f8e3m4s();
  PROTOBUF_NODISCARD std::string* release_f8e3m4s();
  void set_allocated_f8e3m4s(std::string* value);

  private:
  const std::string& _internal_f8e3m4s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e3m4s(
      const std::string& value);
  std::string* _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* mutable_s1s();
  PROTOBUF_NODISCARD std::string* release_s1s();
  void set_allocated_s1s(std::string* value);

  private:
  const std::string& _internal_s1s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s1s(
      const std::string& value);
  std::string* _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* mutable_u1s();
  PROTOBUF_NODISCARD std::string* release_u1s();
  void set_allocated_u1s(std::string* value);

  private:
  const std::string& _internal_u1s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u1s(
      const std::string& value);
  std::string* _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* mutable_f4e2m1fns();
  PROTOBUF_NODISCARD std::string* release_f4e2m1fns();
  void set_allocated_f4e2m1fns(std::string* value);

  private:
  const std::string& _internal_f4e2m1fns() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f4e2m1fns(
      const std::string& value);
  std::string* _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* mutable_f8e8m0fnus();
  PROTOBUF_NODISCARD std::string* release_f8e8m0fnus();
  void set_allocated_f8e8m0fnus(std::string* value);

  private:
  const std::string& _internal_f8e8m0fnus() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_f8e8m0fnus(
      const std::string& value);
  std::string* _internal_mutable_f8e8m0fnus();

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

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

  public:
  // @@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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const LiteralProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<bool> preds_;
    ::google::protobuf::RepeatedField<::int32_t> s32s_;
    mutable ::google::protobuf::internal::CachedSize _s32s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> s64s_;
    mutable ::google::protobuf::internal::CachedSize _s64s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint32_t> u32s_;
    mutable ::google::protobuf::internal::CachedSize _u32s_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> u64s_;
    mutable ::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_;
    mutable ::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* shape_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

class GemmPerfTable_EntriesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          GemmPerfTable_EntriesEntry_DoNotUse, std::string, ::xla::GemmPerfTableEntryValues,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      GemmPerfTable_EntriesEntry_DoNotUse, std::string, ::xla::GemmPerfTableEntryValues,
      ::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* arena);
  static const GemmPerfTable_EntriesEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const GemmPerfTable_EntriesEntry_DoNotUse*>(
        &_GemmPerfTable_EntriesEntry_DoNotUse_default_instance_);
  }


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

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

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

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

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

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

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

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

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

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

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

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

  private:
  const ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>& _internal_entries() const;
  ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* _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* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* 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_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fxla_5fdata_2eproto;
};

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




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


#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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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* 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>* 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* 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>*
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>* 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>* 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};
}
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);
  // @@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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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* 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>* 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* 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>*
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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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* 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* LayoutProto::release_physical_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.physical_shape_;
  _impl_.physical_shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::ShapeProto* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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};
}
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);
  // @@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* 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>* 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* 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>*
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;
}
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);
  // @@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>* 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>* 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>* 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>* 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* 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>* 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* 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>*
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* 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* ShapeProto::release_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::LayoutProto* released = _impl_.layout_;
  _impl_.layout_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::LayoutProto* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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* 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>* 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* 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>*
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* 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* ProgramShapeProto::release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.result_;
  _impl_.result_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::ShapeProto* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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* 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* 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>*
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>*
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;
}
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);
  // @@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;
}
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);
  // @@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>* 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>* 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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}

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

// OpMetadata

// string op_type = 1;
inline void OpMetadata::clear_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_type_.ClearToEmpty();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OpMetadata::set_op_type(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.op_type)
}
inline std::string* 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_.op_type_.Set(value, GetArena());
}
inline std::string* OpMetadata::_internal_mutable_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.op_type_.Mutable( GetArena());
}
inline std::string* OpMetadata::release_op_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.op_type)
  return _impl_.op_type_.Release();
}
inline void OpMetadata::set_allocated_op_type(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_type_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.op_type_.IsDefault()) {
          _impl_.op_type_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OpMetadata::set_op_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.op_name)
}
inline std::string* 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_.op_name_.Set(value, GetArena());
}
inline std::string* OpMetadata::_internal_mutable_op_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.op_name_.Mutable( GetArena());
}
inline std::string* OpMetadata::release_op_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.op_name)
  return _impl_.op_name_.Release();
}
inline void OpMetadata::set_allocated_op_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.op_name_.IsDefault()) {
          _impl_.op_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OpMetadata::set_source_file(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_file_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.source_file)
}
inline std::string* 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_.source_file_.Set(value, GetArena());
}
inline std::string* OpMetadata::_internal_mutable_source_file() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.source_file_.Mutable( GetArena());
}
inline std::string* OpMetadata::release_source_file() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.source_file)
  return _impl_.source_file_.Release();
}
inline void OpMetadata::set_allocated_source_file(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_file_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.source_file_.IsDefault()) {
          _impl_.source_file_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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;
}
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);
  // @@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;
}

// 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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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] & 0x00000001u) != 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] &= ~0x00000001u;
}
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* 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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OpMetadata.profile_info)
}
inline ::xla::OpMetadata_ProfileInfo* OpMetadata::release_profile_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

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

  _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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OpMetadata::set_deduplicated_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicated_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.deduplicated_name)
}
inline std::string* 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_.deduplicated_name_.Set(value, GetArena());
}
inline std::string* OpMetadata::_internal_mutable_deduplicated_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.deduplicated_name_.Mutable( GetArena());
}
inline std::string* OpMetadata::release_deduplicated_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.deduplicated_name)
  return _impl_.deduplicated_name_.Release();
}
inline void OpMetadata::set_allocated_deduplicated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicated_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.deduplicated_name_.IsDefault()) {
          _impl_.deduplicated_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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;
}
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);
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OpMetadata::set_scheduling_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scheduling_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OpMetadata.scheduling_name)
}
inline std::string* 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_.scheduling_name_.Set(value, GetArena());
}
inline std::string* OpMetadata::_internal_mutable_scheduling_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.scheduling_name_.Mutable( GetArena());
}
inline std::string* OpMetadata::release_scheduling_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OpMetadata.scheduling_name)
  return _impl_.scheduling_name_.Release();
}
inline void OpMetadata::set_allocated_scheduling_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scheduling_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.scheduling_name_.IsDefault()) {
          _impl_.scheduling_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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;
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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>* 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>* 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;
}
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);
  // @@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;
}
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);
  // @@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* 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>* 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* 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>*
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] & 0x00000001u) != 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] &= ~0x00000001u;
}
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* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.LiteralProto.shape)
}
inline ::xla::ShapeProto* LiteralProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

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

  _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>* 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>* 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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s1s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s1s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s1s)
}
inline std::string* 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_.s1s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_s1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.s1s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_s1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s1s)
  return _impl_.s1s_.Release();
}
inline void LiteralProto::set_allocated_s1s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s1s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.s1s_.IsDefault()) {
          _impl_.s1s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s2s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s2s)
}
inline std::string* 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_.s2s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_s2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.s2s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_s2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s2s)
  return _impl_.s2s_.Release();
}
inline void LiteralProto::set_allocated_s2s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s2s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.s2s_.IsDefault()) {
          _impl_.s2s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s4s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s4s)
}
inline std::string* 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_.s4s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_s4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.s4s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_s4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s4s)
  return _impl_.s4s_.Release();
}
inline void LiteralProto::set_allocated_s4s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s4s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.s4s_.IsDefault()) {
          _impl_.s4s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s8s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s8s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s8s)
}
inline std::string* 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_.s8s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_s8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.s8s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_s8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s8s)
  return _impl_.s8s_.Release();
}
inline void LiteralProto::set_allocated_s8s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s8s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.s8s_.IsDefault()) {
          _impl_.s8s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u1s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u1s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u1s)
}
inline std::string* 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_.u1s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_u1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.u1s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_u1s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u1s)
  return _impl_.u1s_.Release();
}
inline void LiteralProto::set_allocated_u1s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u1s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u1s_.IsDefault()) {
          _impl_.u1s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u2s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u2s)
}
inline std::string* 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_.u2s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_u2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.u2s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_u2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u2s)
  return _impl_.u2s_.Release();
}
inline void LiteralProto::set_allocated_u2s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u2s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u2s_.IsDefault()) {
          _impl_.u2s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u4s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u4s)
}
inline std::string* 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_.u4s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_u4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.u4s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_u4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u4s)
  return _impl_.u4s_.Release();
}
inline void LiteralProto::set_allocated_u4s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u4s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u4s_.IsDefault()) {
          _impl_.u4s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u8s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u8s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u8s)
}
inline std::string* 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_.u8s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_u8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.u8s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_u8s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u8s)
  return _impl_.u8s_.Release();
}
inline void LiteralProto::set_allocated_u8s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u8s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u8s_.IsDefault()) {
          _impl_.u8s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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* 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>* 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* 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>*
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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f16s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f16s)
}
inline std::string* 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_.f16s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f16s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f16s)
  return _impl_.f16s_.Release();
}
inline void LiteralProto::set_allocated_f16s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f16s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f16s_.IsDefault()) {
          _impl_.f16s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_bf16s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bf16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.bf16s)
}
inline std::string* 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_.bf16s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_bf16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.bf16s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_bf16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.bf16s)
  return _impl_.bf16s_.Release();
}
inline void LiteralProto::set_allocated_bf16s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bf16s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.bf16s_.IsDefault()) {
          _impl_.bf16s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_u16s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.u16s)
}
inline std::string* 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_.u16s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_u16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.u16s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_u16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.u16s)
  return _impl_.u16s_.Release();
}
inline void LiteralProto::set_allocated_u16s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.u16s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u16s_.IsDefault()) {
          _impl_.u16s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_s16s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s16s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.s16s)
}
inline std::string* 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_.s16s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_s16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.s16s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_s16s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.s16s)
  return _impl_.s16s_.Release();
}
inline void LiteralProto::set_allocated_s16s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s16s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.s16s_.IsDefault()) {
          _impl_.s16s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f4e2m1fns(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f4e2m1fns_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f4e2m1fns)
}
inline std::string* 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_.f4e2m1fns_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f4e2m1fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f4e2m1fns_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f4e2m1fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f4e2m1fns)
  return _impl_.f4e2m1fns_.Release();
}
inline void LiteralProto::set_allocated_f4e2m1fns(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f4e2m1fns_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f4e2m1fns_.IsDefault()) {
          _impl_.f4e2m1fns_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e3m4s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e3m4s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e3m4s)
}
inline std::string* 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_.f8e3m4s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e3m4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e3m4s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e3m4s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e3m4s)
  return _impl_.f8e3m4s_.Release();
}
inline void LiteralProto::set_allocated_f8e3m4s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e3m4s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e3m4s_.IsDefault()) {
          _impl_.f8e3m4s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3b11fnuzs(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3b11fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3b11fnuzs)
}
inline std::string* 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_.f8e4m3b11fnuzs_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e4m3b11fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e4m3b11fnuzs_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e4m3b11fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3b11fnuzs)
  return _impl_.f8e4m3b11fnuzs_.Release();
}
inline void LiteralProto::set_allocated_f8e4m3b11fnuzs(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3b11fnuzs_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e4m3b11fnuzs_.IsDefault()) {
          _impl_.f8e4m3b11fnuzs_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3fns(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fns_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3fns)
}
inline std::string* 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_.f8e4m3fns_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e4m3fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e4m3fns_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e4m3fns() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3fns)
  return _impl_.f8e4m3fns_.Release();
}
inline void LiteralProto::set_allocated_f8e4m3fns(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fns_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e4m3fns_.IsDefault()) {
          _impl_.f8e4m3fns_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3fnuzs(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3fnuzs)
}
inline std::string* 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_.f8e4m3fnuzs_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e4m3fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e4m3fnuzs_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e4m3fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3fnuzs)
  return _impl_.f8e4m3fnuzs_.Release();
}
inline void LiteralProto::set_allocated_f8e4m3fnuzs(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3fnuzs_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e4m3fnuzs_.IsDefault()) {
          _impl_.f8e4m3fnuzs_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e4m3s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e4m3s)
}
inline std::string* 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_.f8e4m3s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e4m3s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e4m3s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e4m3s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e4m3s)
  return _impl_.f8e4m3s_.Release();
}
inline void LiteralProto::set_allocated_f8e4m3s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e4m3s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e4m3s_.IsDefault()) {
          _impl_.f8e4m3s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e5m2fnuzs(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2fnuzs_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e5m2fnuzs)
}
inline std::string* 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_.f8e5m2fnuzs_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e5m2fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e5m2fnuzs_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e5m2fnuzs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e5m2fnuzs)
  return _impl_.f8e5m2fnuzs_.Release();
}
inline void LiteralProto::set_allocated_f8e5m2fnuzs(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2fnuzs_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e5m2fnuzs_.IsDefault()) {
          _impl_.f8e5m2fnuzs_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e5m2s(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2s_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e5m2s)
}
inline std::string* 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_.f8e5m2s_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e5m2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e5m2s_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e5m2s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e5m2s)
  return _impl_.f8e5m2s_.Release();
}
inline void LiteralProto::set_allocated_f8e5m2s(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e5m2s_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e5m2s_.IsDefault()) {
          _impl_.f8e5m2s_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void LiteralProto::set_f8e8m0fnus(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e8m0fnus_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.LiteralProto.f8e8m0fnus)
}
inline std::string* 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_.f8e8m0fnus_.Set(value, GetArena());
}
inline std::string* LiteralProto::_internal_mutable_f8e8m0fnus() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.f8e8m0fnus_.Mutable( GetArena());
}
inline std::string* LiteralProto::release_f8e8m0fnus() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.LiteralProto.f8e8m0fnus)
  return _impl_.f8e8m0fnus_.Release();
}
inline void LiteralProto::set_allocated_f8e8m0fnus(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.f8e8m0fnus_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.f8e8m0fnus_.IsDefault()) {
          _impl_.f8e8m0fnus_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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* 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>* 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* 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>*
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>* 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>* 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>* 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>* 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>* 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>* 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};
}
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);
  // @@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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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};
}
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);
  // @@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>* 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>* 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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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>* 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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::DotDimensionNumbers* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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>* 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>* 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>* 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>* RaggedDotDimensionNumbers::_internal_mutable_rhs_group_dimensions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rhs_group_dimensions_;
}

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

// SparsityDescriptor

// .xla.SparsityType type = 1;
inline void SparsityDescriptor::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
}
inline ::xla::SparsityType SparsityDescriptor::type() const {
  // @@protoc_insertion_point(field_get:xla.SparsityDescriptor.type)
  return _internal_type();
}
inline void SparsityDescriptor::set_type(::xla::SparsityType value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:xla.SparsityDescriptor.type)
}
inline ::xla::SparsityType SparsityDescriptor::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::SparsityType>(_impl_.type_);
}
inline void SparsityDescriptor::_internal_set_type(::xla::SparsityType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// int32 index = 2;
inline void SparsityDescriptor::clear_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_ = 0;
}
inline ::int32_t SparsityDescriptor::index() const {
  // @@protoc_insertion_point(field_get:xla.SparsityDescriptor.index)
  return _internal_index();
}
inline void SparsityDescriptor::set_index(::int32_t value) {
  _internal_set_index(value);
  // @@protoc_insertion_point(field_set:xla.SparsityDescriptor.index)
}
inline ::int32_t SparsityDescriptor::_internal_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.index_;
}
inline void SparsityDescriptor::_internal_set_index(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.index_ = value;
}

// int32 dimension = 3;
inline void SparsityDescriptor::clear_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimension_ = 0;
}
inline ::int32_t SparsityDescriptor::dimension() const {
  // @@protoc_insertion_point(field_get:xla.SparsityDescriptor.dimension)
  return _internal_dimension();
}
inline void SparsityDescriptor::set_dimension(::int32_t value) {
  _internal_set_dimension(value);
  // @@protoc_insertion_point(field_set:xla.SparsityDescriptor.dimension)
}
inline ::int32_t SparsityDescriptor::_internal_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dimension_;
}
inline void SparsityDescriptor::_internal_set_dimension(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dimension_ = value;
}

// int32 n = 4;
inline void SparsityDescriptor::clear_n() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = 0;
}
inline ::int32_t SparsityDescriptor::n() const {
  // @@protoc_insertion_point(field_get:xla.SparsityDescriptor.n)
  return _internal_n();
}
inline void SparsityDescriptor::set_n(::int32_t value) {
  _internal_set_n(value);
  // @@protoc_insertion_point(field_set:xla.SparsityDescriptor.n)
}
inline ::int32_t SparsityDescriptor::_internal_n() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.n_;
}
inline void SparsityDescriptor::_internal_set_n(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.n_ = value;
}

// int32 m = 5;
inline void SparsityDescriptor::clear_m() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_ = 0;
}
inline ::int32_t SparsityDescriptor::m() const {
  // @@protoc_insertion_point(field_get:xla.SparsityDescriptor.m)
  return _internal_m();
}
inline void SparsityDescriptor::set_m(::int32_t value) {
  _internal_set_m(value);
  // @@protoc_insertion_point(field_set:xla.SparsityDescriptor.m)
}
inline ::int32_t SparsityDescriptor::_internal_m() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_;
}
inline void SparsityDescriptor::_internal_set_m(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_ = value;
}

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

// TriangularSolveOptions

// bool left_side = 1;
inline void TriangularSolveOptions::clear_left_side() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.left_side_ = false;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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>* FrontendAttributes::_internal_mutable_map() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.map_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* 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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void Statistic::set_stat_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.Statistic.stat_name)
}
inline std::string* 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_.stat_name_.Set(value, GetArena());
}
inline std::string* Statistic::_internal_mutable_stat_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.stat_name_.Mutable( GetArena());
}
inline std::string* Statistic::release_stat_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.Statistic.stat_name)
  return _impl_.stat_name_.Release();
}
inline void Statistic::set_allocated_stat_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stat_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.stat_name_.IsDefault()) {
          _impl_.stat_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@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;
}
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);
  // @@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};
}
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);
  // @@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* 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>* 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* 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>*
StatisticsViz::_internal_mutable_statistics() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.statistics_;
}

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

// OpSharding

// .xla.OpSharding.Type type = 1;
inline void OpSharding::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
}
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);
  // @@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* 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* OpSharding::release_tile_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.tile_shape_;
  _impl_.tile_shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::ShapeProto* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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>* 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>* 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>* 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>* 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* 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>* 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* 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>*
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;
}
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);
  // @@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* 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>* 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* 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>*
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>* 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>* 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>* 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>* 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>* 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>* 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;
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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;
}

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

// 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>* 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>* ReplicaGroup::_internal_mutable_replica_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_ids_;
}

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

// 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};
}
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);
  // @@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};
}
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);
  // @@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>* 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>* 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>* 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>* 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* 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>* 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* 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>*
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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::IotaReplicaGroupListProto* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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};
}
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);
  // @@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};
}
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);
  // @@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;
}
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);
  // @@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;
}
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);
  // @@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};
}
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);
  // @@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* 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* 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* 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* 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* 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>* 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>* 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;
}
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);
  // @@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>* 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>* 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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::WhileLoopBackendConfig_KnownTripCount* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::WhileLoopBackendConfig_KnownInitStep* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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* 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* 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;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::WhileLoopBackendConfig_KnownInductionVariable* 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* 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* 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* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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)
}

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

// 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>* 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>* 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};
}
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);
  // @@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>* 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>* 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();
}
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_>
inline PROTOBUF_ALWAYS_INLINE void OriginalArrayProto::set_instruction_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OriginalArrayProto.instruction_name)
}
inline std::string* 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_.instruction_name_.Set(value, GetArena());
}
inline std::string* OriginalArrayProto::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline std::string* OriginalArrayProto::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OriginalArrayProto.instruction_name)
  return _impl_.instruction_name_.Release();
}
inline void OriginalArrayProto::set_allocated_instruction_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.instruction_name_.IsDefault()) {
          _impl_.instruction_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.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>* 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>* OriginalArrayProto::_internal_mutable_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_index_;
}

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

// OriginalValueNodeProto

// repeated int64 shape_index = 1;
inline int OriginalValueNodeProto::_internal_shape_index_size() const {
  return _internal_shape_index().size();
}
inline int OriginalValueNodeProto::shape_index_size() const {
  return _internal_shape_index_size();
}
inline void OriginalValueNodeProto::clear_shape_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_index_.Clear();
}
inline ::int64_t OriginalValueNodeProto::shape_index(int index) const {
  // @@protoc_insertion_point(field_get:xla.OriginalValueNodeProto.shape_index)
  return _internal_shape_index().Get(index);
}
inline void OriginalValueNodeProto::set_shape_index(int index, ::int64_t value) {
  _internal_mutable_shape_index()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.OriginalValueNodeProto.shape_index)
}
inline void OriginalValueNodeProto::add_shape_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape_index()->Add(value);
  // @@protoc_insertion_point(field_add:xla.OriginalValueNodeProto.shape_index)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& OriginalValueNodeProto::shape_index() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalValueNodeProto.shape_index)
  return _internal_shape_index();
}
inline ::google::protobuf::RepeatedField<::int64_t>* OriginalValueNodeProto::mutable_shape_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalValueNodeProto.shape_index)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape_index();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
OriginalValueNodeProto::_internal_shape_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_index_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* OriginalValueNodeProto::_internal_mutable_shape_index() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_index_;
}

// .xla.OriginalArrayProto original_array = 2;
inline bool OriginalValueNodeProto::has_original_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.original_array_ != nullptr);
  return value;
}
inline void OriginalValueNodeProto::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& OriginalValueNodeProto::_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& OriginalValueNodeProto::original_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueNodeProto.original_array)
  return _internal_original_array();
}
inline void OriginalValueNodeProto::unsafe_arena_set_allocated_original_array(::xla::OriginalArrayProto* 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.OriginalValueNodeProto.original_array)
}
inline ::xla::OriginalArrayProto* OriginalValueNodeProto::release_original_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::OriginalArrayProto* temp = _impl_.original_array_;
  _impl_.original_array_ = nullptr;
  return temp;
}
inline ::xla::OriginalArrayProto* OriginalValueNodeProto::_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* OriginalValueNodeProto::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.OriginalValueNodeProto.original_array)
  return _msg;
}
inline void OriginalValueNodeProto::set_allocated_original_array(::xla::OriginalArrayProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_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.OriginalValueNodeProto.original_array)
}

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

// OriginalValueProto

// .xla.ShapeProto shape = 1;
inline bool OriginalValueProto::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline void OriginalValueProto::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ != nullptr) _impl_.shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::ShapeProto& OriginalValueProto::_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& OriginalValueProto::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueProto.shape)
  return _internal_shape();
}
inline void OriginalValueProto::unsafe_arena_set_allocated_shape(::xla::ShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.OriginalValueProto.shape)
}
inline ::xla::ShapeProto* OriginalValueProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

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

  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.OriginalValueProto.shape)
}

// repeated .xla.OriginalValueNodeProto leaves = 2;
inline int OriginalValueProto::_internal_leaves_size() const {
  return _internal_leaves().size();
}
inline int OriginalValueProto::leaves_size() const {
  return _internal_leaves_size();
}
inline void OriginalValueProto::clear_leaves() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.leaves_.Clear();
}
inline ::xla::OriginalValueNodeProto* OriginalValueProto::mutable_leaves(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.OriginalValueProto.leaves)
  return _internal_mutable_leaves()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>* OriginalValueProto::mutable_leaves()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.OriginalValueProto.leaves)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_leaves();
}
inline const ::xla::OriginalValueNodeProto& OriginalValueProto::leaves(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OriginalValueProto.leaves)
  return _internal_leaves().Get(index);
}
inline ::xla::OriginalValueNodeProto* OriginalValueProto::add_leaves() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::OriginalValueNodeProto* _add = _internal_mutable_leaves()->Add();
  // @@protoc_insertion_point(field_add:xla.OriginalValueProto.leaves)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>& OriginalValueProto::leaves() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.OriginalValueProto.leaves)
  return _internal_leaves();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>&
OriginalValueProto::_internal_leaves() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.leaves_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::OriginalValueNodeProto>*
OriginalValueProto::_internal_mutable_leaves() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.leaves_;
}

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

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

// GemmPerfTableEntry

// int64 b = 1;
inline void GemmPerfTableEntry::clear_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_ = ::int64_t{0};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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};
}
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);
  // @@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>* GemmPerfTableEntry::_internal_mutable_flops() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.flops_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::int64_t>* 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* 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>* 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* 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>*
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>* GemmPerfTable::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.entries_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::xla::GemmPerfTableEntryValues>* 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* GetEnumDescriptor<::xla::ChannelHandle_ChannelType>() {
  return ::xla::ChannelHandle_ChannelType_descriptor();
}
template <>
struct is_proto_enum<::xla::TriangularSolveOptions_Transpose> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::TriangularSolveOptions_Transpose>() {
  return ::xla::TriangularSolveOptions_Transpose_descriptor();
}
template <>
struct is_proto_enum<::xla::OpSharding_Type> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::OpSharding_Type>() {
  return ::xla::OpSharding_Type_descriptor();
}
template <>
struct is_proto_enum<::xla::OpSharding_ShardGroupType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::OpSharding_ShardGroupType>() {
  return ::xla::OpSharding_ShardGroupType_descriptor();
}
template <>
struct is_proto_enum<::xla::ResultAccuracy_Mode> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::ResultAccuracy_Mode>() {
  return ::xla::ResultAccuracy_Mode_descriptor();
}
template <>
struct is_proto_enum<::xla::PrecisionConfig_Precision> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::PrecisionConfig_Precision>() {
  return ::xla::PrecisionConfig_Precision_descriptor();
}
template <>
struct is_proto_enum<::xla::PrecisionConfig_Algorithm> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::PrecisionConfig_Algorithm>() {
  return ::xla::PrecisionConfig_Algorithm_descriptor();
}
template <>
struct is_proto_enum<::xla::PrimitiveType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::PrimitiveType>() {
  return ::xla::PrimitiveType_descriptor();
}
template <>
struct is_proto_enum<::xla::DimLevelType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::DimLevelType>() {
  return ::xla::DimLevelType_descriptor();
}
template <>
struct is_proto_enum<::xla::ProfileType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::ProfileType>() {
  return ::xla::ProfileType_descriptor();
}
template <>
struct is_proto_enum<::xla::ProfileSource> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::ProfileSource>() {
  return ::xla::ProfileSource_descriptor();
}
template <>
struct is_proto_enum<::xla::CompilationEvent> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::CompilationEvent>() {
  return ::xla::CompilationEvent_descriptor();
}
template <>
struct is_proto_enum<::xla::PaddingType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::PaddingType>() {
  return ::xla::PaddingType_descriptor();
}
template <>
struct is_proto_enum<::xla::FftType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::FftType>() {
  return ::xla::FftType_descriptor();
}
template <>
struct is_proto_enum<::xla::SparsityType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::SparsityType>() {
  return ::xla::SparsityType_descriptor();
}
template <>
struct is_proto_enum<::xla::RandomDistribution> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::RandomDistribution>() {
  return ::xla::RandomDistribution_descriptor();
}
template <>
struct is_proto_enum<::xla::RandomAlgorithm> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::RandomAlgorithm>() {
  return ::xla::RandomAlgorithm_descriptor();
}
template <>
struct is_proto_enum<::xla::CollectiveOpGroupModeProto> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::CollectiveOpGroupModeProto>() {
  return ::xla::CollectiveOpGroupModeProto_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_xla_2fxla_5fdata_2eproto_2epb_2eh
