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

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fpjrt_2fproto_2fcompile_5foptions_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/unknown_field_set.h"
#include "xla/stream_executor/device_description.pb.h"
#include "xla/xla.pb.h"
#include "xla/xla_data.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fpjrt_2fproto_2fcompile_5foptions_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_2fpjrt_2fproto_2fcompile_5foptions_2eproto {
  static const ::uint32_t offsets[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto;
namespace xla {
class CompileOptionsProto;
struct CompileOptionsProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CompileOptionsProtoDefaultTypeInternal _CompileOptionsProto_default_instance_;
class CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse;
struct CompileOptionsProto_EnvOptionOverridesEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern CompileOptionsProto_EnvOptionOverridesEntry_DoNotUseDefaultTypeInternal _CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse_default_instance_;
class ExecutableAndOptionsProto;
struct ExecutableAndOptionsProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutableAndOptionsProtoDefaultTypeInternal _ExecutableAndOptionsProto_default_instance_;
class ExecutableBuildOptionsProto;
struct ExecutableBuildOptionsProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ExecutableBuildOptionsProtoDefaultTypeInternal _ExecutableBuildOptionsProto_default_instance_;
class OptionOverrideProto;
struct OptionOverrideProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OptionOverrideProtoDefaultTypeInternal _OptionOverrideProto_default_instance_;
}  // namespace xla
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace xla {

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


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

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

  inline OptionOverrideProto(const OptionOverrideProto& from) : OptionOverrideProto(nullptr, from) {}
  inline OptionOverrideProto(OptionOverrideProto&& from) noexcept
      : OptionOverrideProto(nullptr, std::move(from)) {}
  inline OptionOverrideProto& operator=(const OptionOverrideProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OptionOverrideProto& operator=(OptionOverrideProto&& 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 OptionOverrideProto& default_instance() {
    return *internal_default_instance();
  }
  enum ValueCase {
    kStringField = 1,
    kBoolField = 2,
    kIntField = 3,
    kDoubleField = 4,
    VALUE_NOT_SET = 0,
  };
  static inline const OptionOverrideProto* internal_default_instance() {
    return reinterpret_cast<const OptionOverrideProto*>(
        &_OptionOverrideProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(OptionOverrideProto& a, OptionOverrideProto& b) { a.Swap(&b); }
  inline void Swap(OptionOverrideProto* 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(OptionOverrideProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

 protected:
  explicit OptionOverrideProto(::google::protobuf::Arena* arena);
  OptionOverrideProto(::google::protobuf::Arena* arena, const OptionOverrideProto& from);
  OptionOverrideProto(::google::protobuf::Arena* arena, OptionOverrideProto&& from) noexcept
      : OptionOverrideProto(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 {
    kStringFieldFieldNumber = 1,
    kBoolFieldFieldNumber = 2,
    kIntFieldFieldNumber = 3,
    kDoubleFieldFieldNumber = 4,
  };
  // string string_field = 1;
  bool has_string_field() const;
  void clear_string_field() ;
  const std::string& string_field() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_string_field(Arg_&& arg, Args_... args);
  std::string* mutable_string_field();
  PROTOBUF_NODISCARD std::string* release_string_field();
  void set_allocated_string_field(std::string* value);

  private:
  const std::string& _internal_string_field() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_string_field(
      const std::string& value);
  std::string* _internal_mutable_string_field();

  public:
  // bool bool_field = 2;
  bool has_bool_field() const;
  void clear_bool_field() ;
  bool bool_field() const;
  void set_bool_field(bool value);

  private:
  bool _internal_bool_field() const;
  void _internal_set_bool_field(bool value);

  public:
  // int64 int_field = 3;
  bool has_int_field() const;
  void clear_int_field() ;
  ::int64_t int_field() const;
  void set_int_field(::int64_t value);

  private:
  ::int64_t _internal_int_field() const;
  void _internal_set_int_field(::int64_t value);

  public:
  // double double_field = 4;
  bool has_double_field() const;
  void clear_double_field() ;
  double double_field() const;
  void set_double_field(double value);

  private:
  double _internal_double_field() const;
  void _internal_set_double_field(double value);

  public:
  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:xla.OptionOverrideProto)
 private:
  class _Internal;
  void set_has_string_field();
  void set_has_bool_field();
  void set_has_int_field();
  void set_has_double_field();
  inline bool has_value() const;
  inline void clear_has_value();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 4, 0,
      44, 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 OptionOverrideProto& from_msg);
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr string_field_;
      bool bool_field_;
      ::int64_t int_field_;
      double double_field_;
    } value_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto;
};
// -------------------------------------------------------------------

class CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse, std::string, ::xla::OptionOverrideProto,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse, std::string, ::xla::OptionOverrideProto,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse(
      ::google::protobuf::internal::ConstantInitialized);
  explicit CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse(::google::protobuf::Arena* arena);
  static const CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse*>(
        &_CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse_default_instance_);
  }


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

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

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

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

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

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

 protected:
  explicit ExecutableBuildOptionsProto(::google::protobuf::Arena* arena);
  ExecutableBuildOptionsProto(::google::protobuf::Arena* arena, const ExecutableBuildOptionsProto& from);
  ExecutableBuildOptionsProto(::google::protobuf::Arena* arena, ExecutableBuildOptionsProto&& from) noexcept
      : ExecutableBuildOptionsProto(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 {
    kAllowSpmdShardingPropagationToOutputFieldNumber = 12,
    kAutoSpmdPartitioningMeshShapeFieldNumber = 16,
    kAutoSpmdPartitioningMeshIdsFieldNumber = 17,
    kAllowSpmdShardingPropagationToParametersFieldNumber = 18,
    kFdoProfileFieldNumber = 14,
    kResultLayoutFieldNumber = 2,
    kDebugOptionsFieldNumber = 3,
    kDeviceAssignmentFieldNumber = 9,
    kCompEnvsFieldNumber = 13,
    kDeviceOrdinalFieldNumber = 1,
    kNumReplicasFieldNumber = 4,
    kNumPartitionsFieldNumber = 5,
    kUseSpmdPartitioningFieldNumber = 6,
    kUseAutoSpmdPartitioningFieldNumber = 7,
    kDeduplicateHloFieldNumber = 8,
    kAliasPassthroughParamsFieldNumber = 10,
    kRunBackendOnlyFieldNumber = 11,
    kUseShardyPartitionerFieldNumber = 19,
    kDeviceMemorySizeFieldNumber = 15,
    kExecTimeOptimizationEffortFieldNumber = 20,
    kMemoryFittingEffortFieldNumber = 21,
    kProcessIndexFieldNumber = 22,
    kProcessCountFieldNumber = 23,
    kOptimizationLevelFieldNumber = 24,
    kMemoryFittingLevelFieldNumber = 25,
  };
  // repeated bool allow_spmd_sharding_propagation_to_output = 12;
  int allow_spmd_sharding_propagation_to_output_size() const;
  private:
  int _internal_allow_spmd_sharding_propagation_to_output_size() const;

  public:
  void clear_allow_spmd_sharding_propagation_to_output() ;
  bool allow_spmd_sharding_propagation_to_output(int index) const;
  void set_allow_spmd_sharding_propagation_to_output(int index, bool value);
  void add_allow_spmd_sharding_propagation_to_output(bool value);
  const ::google::protobuf::RepeatedField<bool>& allow_spmd_sharding_propagation_to_output() const;
  ::google::protobuf::RepeatedField<bool>* mutable_allow_spmd_sharding_propagation_to_output();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_allow_spmd_sharding_propagation_to_output() const;
  ::google::protobuf::RepeatedField<bool>* _internal_mutable_allow_spmd_sharding_propagation_to_output();

  public:
  // repeated int64 auto_spmd_partitioning_mesh_shape = 16;
  int auto_spmd_partitioning_mesh_shape_size() const;
  private:
  int _internal_auto_spmd_partitioning_mesh_shape_size() const;

  public:
  void clear_auto_spmd_partitioning_mesh_shape() ;
  ::int64_t auto_spmd_partitioning_mesh_shape(int index) const;
  void set_auto_spmd_partitioning_mesh_shape(int index, ::int64_t value);
  void add_auto_spmd_partitioning_mesh_shape(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& auto_spmd_partitioning_mesh_shape() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_auto_spmd_partitioning_mesh_shape();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_auto_spmd_partitioning_mesh_shape() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_auto_spmd_partitioning_mesh_shape();

  public:
  // repeated int64 auto_spmd_partitioning_mesh_ids = 17;
  int auto_spmd_partitioning_mesh_ids_size() const;
  private:
  int _internal_auto_spmd_partitioning_mesh_ids_size() const;

  public:
  void clear_auto_spmd_partitioning_mesh_ids() ;
  ::int64_t auto_spmd_partitioning_mesh_ids(int index) const;
  void set_auto_spmd_partitioning_mesh_ids(int index, ::int64_t value);
  void add_auto_spmd_partitioning_mesh_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& auto_spmd_partitioning_mesh_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* mutable_auto_spmd_partitioning_mesh_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_auto_spmd_partitioning_mesh_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* _internal_mutable_auto_spmd_partitioning_mesh_ids();

  public:
  // repeated bool allow_spmd_sharding_propagation_to_parameters = 18;
  int allow_spmd_sharding_propagation_to_parameters_size() const;
  private:
  int _internal_allow_spmd_sharding_propagation_to_parameters_size() const;

  public:
  void clear_allow_spmd_sharding_propagation_to_parameters() ;
  bool allow_spmd_sharding_propagation_to_parameters(int index) const;
  void set_allow_spmd_sharding_propagation_to_parameters(int index, bool value);
  void add_allow_spmd_sharding_propagation_to_parameters(bool value);
  const ::google::protobuf::RepeatedField<bool>& allow_spmd_sharding_propagation_to_parameters() const;
  ::google::protobuf::RepeatedField<bool>* mutable_allow_spmd_sharding_propagation_to_parameters();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_allow_spmd_sharding_propagation_to_parameters() const;
  ::google::protobuf::RepeatedField<bool>* _internal_mutable_allow_spmd_sharding_propagation_to_parameters();

  public:
  // bytes fdo_profile = 14;
  void clear_fdo_profile() ;
  const std::string& fdo_profile() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_fdo_profile(Arg_&& arg, Args_... args);
  std::string* mutable_fdo_profile();
  PROTOBUF_NODISCARD std::string* release_fdo_profile();
  void set_allocated_fdo_profile(std::string* value);

  private:
  const std::string& _internal_fdo_profile() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_fdo_profile(
      const std::string& value);
  std::string* _internal_mutable_fdo_profile();

  public:
  // .xla.ShapeProto result_layout = 2;
  bool has_result_layout() const;
  void clear_result_layout() ;
  const ::xla::ShapeProto& result_layout() const;
  PROTOBUF_NODISCARD ::xla::ShapeProto* release_result_layout();
  ::xla::ShapeProto* mutable_result_layout();
  void set_allocated_result_layout(::xla::ShapeProto* value);
  void unsafe_arena_set_allocated_result_layout(::xla::ShapeProto* value);
  ::xla::ShapeProto* unsafe_arena_release_result_layout();

  private:
  const ::xla::ShapeProto& _internal_result_layout() const;
  ::xla::ShapeProto* _internal_mutable_result_layout();

  public:
  // .xla.DebugOptions debug_options = 3;
  bool has_debug_options() const;
  void clear_debug_options() ;
  const ::xla::DebugOptions& debug_options() const;
  PROTOBUF_NODISCARD ::xla::DebugOptions* release_debug_options();
  ::xla::DebugOptions* mutable_debug_options();
  void set_allocated_debug_options(::xla::DebugOptions* value);
  void unsafe_arena_set_allocated_debug_options(::xla::DebugOptions* value);
  ::xla::DebugOptions* unsafe_arena_release_debug_options();

  private:
  const ::xla::DebugOptions& _internal_debug_options() const;
  ::xla::DebugOptions* _internal_mutable_debug_options();

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

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

  public:
  // .xla.CompilationEnvironmentsProto comp_envs = 13;
  bool has_comp_envs() const;
  void clear_comp_envs() ;
  const ::xla::CompilationEnvironmentsProto& comp_envs() const;
  PROTOBUF_NODISCARD ::xla::CompilationEnvironmentsProto* release_comp_envs();
  ::xla::CompilationEnvironmentsProto* mutable_comp_envs();
  void set_allocated_comp_envs(::xla::CompilationEnvironmentsProto* value);
  void unsafe_arena_set_allocated_comp_envs(::xla::CompilationEnvironmentsProto* value);
  ::xla::CompilationEnvironmentsProto* unsafe_arena_release_comp_envs();

  private:
  const ::xla::CompilationEnvironmentsProto& _internal_comp_envs() const;
  ::xla::CompilationEnvironmentsProto* _internal_mutable_comp_envs();

  public:
  // int64 device_ordinal = 1;
  void clear_device_ordinal() ;
  ::int64_t device_ordinal() const;
  void set_device_ordinal(::int64_t value);

  private:
  ::int64_t _internal_device_ordinal() const;
  void _internal_set_device_ordinal(::int64_t value);

  public:
  // int64 num_replicas = 4;
  void clear_num_replicas() ;
  ::int64_t num_replicas() const;
  void set_num_replicas(::int64_t value);

  private:
  ::int64_t _internal_num_replicas() const;
  void _internal_set_num_replicas(::int64_t value);

  public:
  // int64 num_partitions = 5;
  void clear_num_partitions() ;
  ::int64_t num_partitions() const;
  void set_num_partitions(::int64_t value);

  private:
  ::int64_t _internal_num_partitions() const;
  void _internal_set_num_partitions(::int64_t value);

  public:
  // bool use_spmd_partitioning = 6;
  void clear_use_spmd_partitioning() ;
  bool use_spmd_partitioning() const;
  void set_use_spmd_partitioning(bool value);

  private:
  bool _internal_use_spmd_partitioning() const;
  void _internal_set_use_spmd_partitioning(bool value);

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

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

  public:
  // bool deduplicate_hlo = 8;
  void clear_deduplicate_hlo() ;
  bool deduplicate_hlo() const;
  void set_deduplicate_hlo(bool value);

  private:
  bool _internal_deduplicate_hlo() const;
  void _internal_set_deduplicate_hlo(bool value);

  public:
  // bool alias_passthrough_params = 10;
  void clear_alias_passthrough_params() ;
  bool alias_passthrough_params() const;
  void set_alias_passthrough_params(bool value);

  private:
  bool _internal_alias_passthrough_params() const;
  void _internal_set_alias_passthrough_params(bool value);

  public:
  // bool run_backend_only = 11;
  void clear_run_backend_only() ;
  bool run_backend_only() const;
  void set_run_backend_only(bool value);

  private:
  bool _internal_run_backend_only() const;
  void _internal_set_run_backend_only(bool value);

  public:
  // bool use_shardy_partitioner = 19;
  void clear_use_shardy_partitioner() ;
  bool use_shardy_partitioner() const;
  void set_use_shardy_partitioner(bool value);

  private:
  bool _internal_use_shardy_partitioner() const;
  void _internal_set_use_shardy_partitioner(bool value);

  public:
  // int64 device_memory_size = 15;
  void clear_device_memory_size() ;
  ::int64_t device_memory_size() const;
  void set_device_memory_size(::int64_t value);

  private:
  ::int64_t _internal_device_memory_size() const;
  void _internal_set_device_memory_size(::int64_t value);

  public:
  // float exec_time_optimization_effort = 20;
  void clear_exec_time_optimization_effort() ;
  float exec_time_optimization_effort() const;
  void set_exec_time_optimization_effort(float value);

  private:
  float _internal_exec_time_optimization_effort() const;
  void _internal_set_exec_time_optimization_effort(float value);

  public:
  // float memory_fitting_effort = 21;
  void clear_memory_fitting_effort() ;
  float memory_fitting_effort() const;
  void set_memory_fitting_effort(float value);

  private:
  float _internal_memory_fitting_effort() const;
  void _internal_set_memory_fitting_effort(float value);

  public:
  // int64 process_index = 22;
  void clear_process_index() ;
  ::int64_t process_index() const;
  void set_process_index(::int64_t value);

  private:
  ::int64_t _internal_process_index() const;
  void _internal_set_process_index(::int64_t value);

  public:
  // int64 process_count = 23;
  void clear_process_count() ;
  ::int64_t process_count() const;
  void set_process_count(::int64_t value);

  private:
  ::int64_t _internal_process_count() const;
  void _internal_set_process_count(::int64_t value);

  public:
  // .xla.ExecutionOptions.EffortLevel optimization_level = 24;
  void clear_optimization_level() ;
  ::xla::ExecutionOptions_EffortLevel optimization_level() const;
  void set_optimization_level(::xla::ExecutionOptions_EffortLevel value);

  private:
  ::xla::ExecutionOptions_EffortLevel _internal_optimization_level() const;
  void _internal_set_optimization_level(::xla::ExecutionOptions_EffortLevel value);

  public:
  // .xla.ExecutionOptions.EffortLevel memory_fitting_level = 25;
  void clear_memory_fitting_level() ;
  ::xla::ExecutionOptions_EffortLevel memory_fitting_level() const;
  void set_memory_fitting_level(::xla::ExecutionOptions_EffortLevel value);

  private:
  ::xla::ExecutionOptions_EffortLevel _internal_memory_fitting_level() const;
  void _internal_set_memory_fitting_level(::xla::ExecutionOptions_EffortLevel value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ExecutableBuildOptionsProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<bool> allow_spmd_sharding_propagation_to_output_;
    ::google::protobuf::RepeatedField<::int64_t> auto_spmd_partitioning_mesh_shape_;
    mutable ::google::protobuf::internal::CachedSize _auto_spmd_partitioning_mesh_shape_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> auto_spmd_partitioning_mesh_ids_;
    mutable ::google::protobuf::internal::CachedSize _auto_spmd_partitioning_mesh_ids_cached_byte_size_;
    ::google::protobuf::RepeatedField<bool> allow_spmd_sharding_propagation_to_parameters_;
    ::google::protobuf::internal::ArenaStringPtr fdo_profile_;
    ::xla::ShapeProto* result_layout_;
    ::xla::DebugOptions* debug_options_;
    ::xla::DeviceAssignmentProto* device_assignment_;
    ::xla::CompilationEnvironmentsProto* comp_envs_;
    ::int64_t device_ordinal_;
    ::int64_t num_replicas_;
    ::int64_t num_partitions_;
    bool use_spmd_partitioning_;
    bool use_auto_spmd_partitioning_;
    bool deduplicate_hlo_;
    bool alias_passthrough_params_;
    bool run_backend_only_;
    bool use_shardy_partitioner_;
    ::int64_t device_memory_size_;
    float exec_time_optimization_effort_;
    float memory_fitting_effort_;
    ::int64_t process_index_;
    ::int64_t process_count_;
    int optimization_level_;
    int memory_fitting_level_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit CompileOptionsProto(::google::protobuf::Arena* arena);
  CompileOptionsProto(::google::protobuf::Arena* arena, const CompileOptionsProto& from);
  CompileOptionsProto(::google::protobuf::Arena* arena, CompileOptionsProto&& from) noexcept
      : CompileOptionsProto(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 {
    kArgumentLayoutsFieldNumber = 1,
    kEnvOptionOverridesFieldNumber = 7,
    kSerializedMultiSliceConfigFieldNumber = 6,
    kExecutableBuildOptionsFieldNumber = 3,
    kTargetConfigFieldNumber = 8,
    kProfileVersionFieldNumber = 5,
    kParameterIsTupledArgumentsFieldNumber = 2,
    kCompilePortableExecutableFieldNumber = 4,
  };
  // repeated .xla.ShapeProto argument_layouts = 1;
  int argument_layouts_size() const;
  private:
  int _internal_argument_layouts_size() const;

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_argument_layouts() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* _internal_mutable_argument_layouts();
  public:
  const ::xla::ShapeProto& argument_layouts(int index) const;
  ::xla::ShapeProto* add_argument_layouts();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& argument_layouts() const;
  // map<string, .xla.OptionOverrideProto> env_option_overrides = 7;
  int env_option_overrides_size() const;
  private:
  int _internal_env_option_overrides_size() const;

  public:
  void clear_env_option_overrides() ;
  const ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>& env_option_overrides() const;
  ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>* mutable_env_option_overrides();

  private:
  const ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>& _internal_env_option_overrides() const;
  ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>* _internal_mutable_env_option_overrides();

  public:
  // bytes serialized_multi_slice_config = 6;
  void clear_serialized_multi_slice_config() ;
  const std::string& serialized_multi_slice_config() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_serialized_multi_slice_config(Arg_&& arg, Args_... args);
  std::string* mutable_serialized_multi_slice_config();
  PROTOBUF_NODISCARD std::string* release_serialized_multi_slice_config();
  void set_allocated_serialized_multi_slice_config(std::string* value);

  private:
  const std::string& _internal_serialized_multi_slice_config() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_serialized_multi_slice_config(
      const std::string& value);
  std::string* _internal_mutable_serialized_multi_slice_config();

  public:
  // .xla.ExecutableBuildOptionsProto executable_build_options = 3;
  bool has_executable_build_options() const;
  void clear_executable_build_options() ;
  const ::xla::ExecutableBuildOptionsProto& executable_build_options() const;
  PROTOBUF_NODISCARD ::xla::ExecutableBuildOptionsProto* release_executable_build_options();
  ::xla::ExecutableBuildOptionsProto* mutable_executable_build_options();
  void set_allocated_executable_build_options(::xla::ExecutableBuildOptionsProto* value);
  void unsafe_arena_set_allocated_executable_build_options(::xla::ExecutableBuildOptionsProto* value);
  ::xla::ExecutableBuildOptionsProto* unsafe_arena_release_executable_build_options();

  private:
  const ::xla::ExecutableBuildOptionsProto& _internal_executable_build_options() const;
  ::xla::ExecutableBuildOptionsProto* _internal_mutable_executable_build_options();

  public:
  // .stream_executor.GpuTargetConfigProto target_config = 8;
  bool has_target_config() const;
  void clear_target_config() ;
  const ::stream_executor::GpuTargetConfigProto& target_config() const;
  PROTOBUF_NODISCARD ::stream_executor::GpuTargetConfigProto* release_target_config();
  ::stream_executor::GpuTargetConfigProto* mutable_target_config();
  void set_allocated_target_config(::stream_executor::GpuTargetConfigProto* value);
  void unsafe_arena_set_allocated_target_config(::stream_executor::GpuTargetConfigProto* value);
  ::stream_executor::GpuTargetConfigProto* unsafe_arena_release_target_config();

  private:
  const ::stream_executor::GpuTargetConfigProto& _internal_target_config() const;
  ::stream_executor::GpuTargetConfigProto* _internal_mutable_target_config();

  public:
  // int64 profile_version = 5;
  void clear_profile_version() ;
  ::int64_t profile_version() const;
  void set_profile_version(::int64_t value);

  private:
  ::int64_t _internal_profile_version() const;
  void _internal_set_profile_version(::int64_t value);

  public:
  // bool parameter_is_tupled_arguments = 2;
  void clear_parameter_is_tupled_arguments() ;
  bool parameter_is_tupled_arguments() const;
  void set_parameter_is_tupled_arguments(bool value);

  private:
  bool _internal_parameter_is_tupled_arguments() const;
  void _internal_set_parameter_is_tupled_arguments(bool value);

  public:
  // bool compile_portable_executable = 4;
  void clear_compile_portable_executable() ;
  bool compile_portable_executable() const;
  void set_compile_portable_executable(bool value);

  private:
  bool _internal_compile_portable_executable() const;
  void _internal_set_compile_portable_executable(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.CompileOptionsProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 8, 5,
      60, 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 CompileOptionsProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > argument_layouts_;
    ::google::protobuf::internal::MapField<CompileOptionsProto_EnvOptionOverridesEntry_DoNotUse, std::string, ::xla::OptionOverrideProto,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        env_option_overrides_;
    ::google::protobuf::internal::ArenaStringPtr serialized_multi_slice_config_;
    ::xla::ExecutableBuildOptionsProto* executable_build_options_;
    ::stream_executor::GpuTargetConfigProto* target_config_;
    ::int64_t profile_version_;
    bool parameter_is_tupled_arguments_;
    bool compile_portable_executable_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit ExecutableAndOptionsProto(::google::protobuf::Arena* arena);
  ExecutableAndOptionsProto(::google::protobuf::Arena* arena, const ExecutableAndOptionsProto& from);
  ExecutableAndOptionsProto(::google::protobuf::Arena* arena, ExecutableAndOptionsProto&& from) noexcept
      : ExecutableAndOptionsProto(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 {
    kSerializedExecutableFieldNumber = 1,
    kPjrtClientNameFieldNumber = 3,
    kCompileOptionsFieldNumber = 2,
  };
  // bytes serialized_executable = 1;
  void clear_serialized_executable() ;
  const std::string& serialized_executable() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_serialized_executable(Arg_&& arg, Args_... args);
  std::string* mutable_serialized_executable();
  PROTOBUF_NODISCARD std::string* release_serialized_executable();
  void set_allocated_serialized_executable(std::string* value);

  private:
  const std::string& _internal_serialized_executable() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_serialized_executable(
      const std::string& value);
  std::string* _internal_mutable_serialized_executable();

  public:
  // string pjrt_client_name = 3;
  void clear_pjrt_client_name() ;
  const std::string& pjrt_client_name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_pjrt_client_name(Arg_&& arg, Args_... args);
  std::string* mutable_pjrt_client_name();
  PROTOBUF_NODISCARD std::string* release_pjrt_client_name();
  void set_allocated_pjrt_client_name(std::string* value);

  private:
  const std::string& _internal_pjrt_client_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_pjrt_client_name(
      const std::string& value);
  std::string* _internal_mutable_pjrt_client_name();

  public:
  // .xla.CompileOptionsProto compile_options = 2;
  bool has_compile_options() const;
  void clear_compile_options() ;
  const ::xla::CompileOptionsProto& compile_options() const;
  PROTOBUF_NODISCARD ::xla::CompileOptionsProto* release_compile_options();
  ::xla::CompileOptionsProto* mutable_compile_options();
  void set_allocated_compile_options(::xla::CompileOptionsProto* value);
  void unsafe_arena_set_allocated_compile_options(::xla::CompileOptionsProto* value);
  ::xla::CompileOptionsProto* unsafe_arena_release_compile_options();

  private:
  const ::xla::CompileOptionsProto& _internal_compile_options() const;
  ::xla::CompileOptionsProto* _internal_mutable_compile_options();

  public:
  // @@protoc_insertion_point(class_scope:xla.ExecutableAndOptionsProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      54, 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 ExecutableAndOptionsProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr serialized_executable_;
    ::google::protobuf::internal::ArenaStringPtr pjrt_client_name_;
    ::xla::CompileOptionsProto* compile_options_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto;
};

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




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


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

// ExecutableBuildOptionsProto

// int64 device_ordinal = 1;
inline void ExecutableBuildOptionsProto::clear_device_ordinal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_ordinal_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::device_ordinal() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.device_ordinal)
  return _internal_device_ordinal();
}
inline void ExecutableBuildOptionsProto::set_device_ordinal(::int64_t value) {
  _internal_set_device_ordinal(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.device_ordinal)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_device_ordinal() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_ordinal_;
}
inline void ExecutableBuildOptionsProto::_internal_set_device_ordinal(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_ordinal_ = value;
}

// .xla.ShapeProto result_layout = 2;
inline bool ExecutableBuildOptionsProto::has_result_layout() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_layout_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& ExecutableBuildOptionsProto::_internal_result_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.result_layout_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& ExecutableBuildOptionsProto::result_layout() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.result_layout)
  return _internal_result_layout();
}
inline void ExecutableBuildOptionsProto::unsafe_arena_set_allocated_result_layout(::xla::ShapeProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_layout_);
  }
  _impl_.result_layout_ = 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.ExecutableBuildOptionsProto.result_layout)
}
inline ::xla::ShapeProto* ExecutableBuildOptionsProto::release_result_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* released = _impl_.result_layout_;
  _impl_.result_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::ShapeProto* ExecutableBuildOptionsProto::unsafe_arena_release_result_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableBuildOptionsProto.result_layout)

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

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

  _impl_.result_layout_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableBuildOptionsProto.result_layout)
}

// .xla.CompilationEnvironmentsProto comp_envs = 13;
inline bool ExecutableBuildOptionsProto::has_comp_envs() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.comp_envs_ != nullptr);
  return value;
}
inline const ::xla::CompilationEnvironmentsProto& ExecutableBuildOptionsProto::_internal_comp_envs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::CompilationEnvironmentsProto* p = _impl_.comp_envs_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::CompilationEnvironmentsProto&>(::xla::_CompilationEnvironmentsProto_default_instance_);
}
inline const ::xla::CompilationEnvironmentsProto& ExecutableBuildOptionsProto::comp_envs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.comp_envs)
  return _internal_comp_envs();
}
inline void ExecutableBuildOptionsProto::unsafe_arena_set_allocated_comp_envs(::xla::CompilationEnvironmentsProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.comp_envs_);
  }
  _impl_.comp_envs_ = reinterpret_cast<::xla::CompilationEnvironmentsProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ExecutableBuildOptionsProto.comp_envs)
}
inline ::xla::CompilationEnvironmentsProto* ExecutableBuildOptionsProto::release_comp_envs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::CompilationEnvironmentsProto* released = _impl_.comp_envs_;
  _impl_.comp_envs_ = 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::CompilationEnvironmentsProto* ExecutableBuildOptionsProto::unsafe_arena_release_comp_envs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableBuildOptionsProto.comp_envs)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::CompilationEnvironmentsProto* temp = _impl_.comp_envs_;
  _impl_.comp_envs_ = nullptr;
  return temp;
}
inline ::xla::CompilationEnvironmentsProto* ExecutableBuildOptionsProto::_internal_mutable_comp_envs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.comp_envs_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::CompilationEnvironmentsProto>(GetArena());
    _impl_.comp_envs_ = reinterpret_cast<::xla::CompilationEnvironmentsProto*>(p);
  }
  return _impl_.comp_envs_;
}
inline ::xla::CompilationEnvironmentsProto* ExecutableBuildOptionsProto::mutable_comp_envs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::CompilationEnvironmentsProto* _msg = _internal_mutable_comp_envs();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableBuildOptionsProto.comp_envs)
  return _msg;
}
inline void ExecutableBuildOptionsProto::set_allocated_comp_envs(::xla::CompilationEnvironmentsProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.comp_envs_);
  }

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

  _impl_.comp_envs_ = reinterpret_cast<::xla::CompilationEnvironmentsProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableBuildOptionsProto.comp_envs)
}

// .xla.DebugOptions debug_options = 3;
inline bool ExecutableBuildOptionsProto::has_debug_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.debug_options_ != nullptr);
  return value;
}
inline const ::xla::DebugOptions& ExecutableBuildOptionsProto::_internal_debug_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::DebugOptions* p = _impl_.debug_options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::DebugOptions&>(::xla::_DebugOptions_default_instance_);
}
inline const ::xla::DebugOptions& ExecutableBuildOptionsProto::debug_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.debug_options)
  return _internal_debug_options();
}
inline void ExecutableBuildOptionsProto::unsafe_arena_set_allocated_debug_options(::xla::DebugOptions* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.debug_options_);
  }
  _impl_.debug_options_ = reinterpret_cast<::xla::DebugOptions*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ExecutableBuildOptionsProto.debug_options)
}
inline ::xla::DebugOptions* ExecutableBuildOptionsProto::release_debug_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::DebugOptions* released = _impl_.debug_options_;
  _impl_.debug_options_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::DebugOptions* ExecutableBuildOptionsProto::unsafe_arena_release_debug_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableBuildOptionsProto.debug_options)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::DebugOptions* temp = _impl_.debug_options_;
  _impl_.debug_options_ = nullptr;
  return temp;
}
inline ::xla::DebugOptions* ExecutableBuildOptionsProto::_internal_mutable_debug_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.debug_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::DebugOptions>(GetArena());
    _impl_.debug_options_ = reinterpret_cast<::xla::DebugOptions*>(p);
  }
  return _impl_.debug_options_;
}
inline ::xla::DebugOptions* ExecutableBuildOptionsProto::mutable_debug_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::DebugOptions* _msg = _internal_mutable_debug_options();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableBuildOptionsProto.debug_options)
  return _msg;
}
inline void ExecutableBuildOptionsProto::set_allocated_debug_options(::xla::DebugOptions* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.debug_options_);
  }

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

  _impl_.debug_options_ = reinterpret_cast<::xla::DebugOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableBuildOptionsProto.debug_options)
}

// int64 num_replicas = 4;
inline void ExecutableBuildOptionsProto::clear_num_replicas() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_replicas_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::num_replicas() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.num_replicas)
  return _internal_num_replicas();
}
inline void ExecutableBuildOptionsProto::set_num_replicas(::int64_t value) {
  _internal_set_num_replicas(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.num_replicas)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_num_replicas() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_replicas_;
}
inline void ExecutableBuildOptionsProto::_internal_set_num_replicas(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_replicas_ = value;
}

// int64 num_partitions = 5;
inline void ExecutableBuildOptionsProto::clear_num_partitions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_partitions_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::num_partitions() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.num_partitions)
  return _internal_num_partitions();
}
inline void ExecutableBuildOptionsProto::set_num_partitions(::int64_t value) {
  _internal_set_num_partitions(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.num_partitions)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_num_partitions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_partitions_;
}
inline void ExecutableBuildOptionsProto::_internal_set_num_partitions(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_partitions_ = value;
}

// bool use_spmd_partitioning = 6;
inline void ExecutableBuildOptionsProto::clear_use_spmd_partitioning() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_spmd_partitioning_ = false;
}
inline bool ExecutableBuildOptionsProto::use_spmd_partitioning() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.use_spmd_partitioning)
  return _internal_use_spmd_partitioning();
}
inline void ExecutableBuildOptionsProto::set_use_spmd_partitioning(bool value) {
  _internal_set_use_spmd_partitioning(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.use_spmd_partitioning)
}
inline bool ExecutableBuildOptionsProto::_internal_use_spmd_partitioning() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_spmd_partitioning_;
}
inline void ExecutableBuildOptionsProto::_internal_set_use_spmd_partitioning(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_spmd_partitioning_ = value;
}

// bool use_auto_spmd_partitioning = 7;
inline void ExecutableBuildOptionsProto::clear_use_auto_spmd_partitioning() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_auto_spmd_partitioning_ = false;
}
inline bool ExecutableBuildOptionsProto::use_auto_spmd_partitioning() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.use_auto_spmd_partitioning)
  return _internal_use_auto_spmd_partitioning();
}
inline void ExecutableBuildOptionsProto::set_use_auto_spmd_partitioning(bool value) {
  _internal_set_use_auto_spmd_partitioning(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.use_auto_spmd_partitioning)
}
inline bool ExecutableBuildOptionsProto::_internal_use_auto_spmd_partitioning() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_auto_spmd_partitioning_;
}
inline void ExecutableBuildOptionsProto::_internal_set_use_auto_spmd_partitioning(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_auto_spmd_partitioning_ = value;
}

// float exec_time_optimization_effort = 20;
inline void ExecutableBuildOptionsProto::clear_exec_time_optimization_effort() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exec_time_optimization_effort_ = 0;
}
inline float ExecutableBuildOptionsProto::exec_time_optimization_effort() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.exec_time_optimization_effort)
  return _internal_exec_time_optimization_effort();
}
inline void ExecutableBuildOptionsProto::set_exec_time_optimization_effort(float value) {
  _internal_set_exec_time_optimization_effort(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.exec_time_optimization_effort)
}
inline float ExecutableBuildOptionsProto::_internal_exec_time_optimization_effort() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.exec_time_optimization_effort_;
}
inline void ExecutableBuildOptionsProto::_internal_set_exec_time_optimization_effort(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.exec_time_optimization_effort_ = value;
}

// float memory_fitting_effort = 21;
inline void ExecutableBuildOptionsProto::clear_memory_fitting_effort() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_fitting_effort_ = 0;
}
inline float ExecutableBuildOptionsProto::memory_fitting_effort() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.memory_fitting_effort)
  return _internal_memory_fitting_effort();
}
inline void ExecutableBuildOptionsProto::set_memory_fitting_effort(float value) {
  _internal_set_memory_fitting_effort(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.memory_fitting_effort)
}
inline float ExecutableBuildOptionsProto::_internal_memory_fitting_effort() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.memory_fitting_effort_;
}
inline void ExecutableBuildOptionsProto::_internal_set_memory_fitting_effort(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_fitting_effort_ = value;
}

// .xla.ExecutionOptions.EffortLevel optimization_level = 24;
inline void ExecutableBuildOptionsProto::clear_optimization_level() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.optimization_level_ = 0;
}
inline ::xla::ExecutionOptions_EffortLevel ExecutableBuildOptionsProto::optimization_level() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.optimization_level)
  return _internal_optimization_level();
}
inline void ExecutableBuildOptionsProto::set_optimization_level(::xla::ExecutionOptions_EffortLevel value) {
  _internal_set_optimization_level(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.optimization_level)
}
inline ::xla::ExecutionOptions_EffortLevel ExecutableBuildOptionsProto::_internal_optimization_level() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ExecutionOptions_EffortLevel>(_impl_.optimization_level_);
}
inline void ExecutableBuildOptionsProto::_internal_set_optimization_level(::xla::ExecutionOptions_EffortLevel value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.optimization_level_ = value;
}

// .xla.ExecutionOptions.EffortLevel memory_fitting_level = 25;
inline void ExecutableBuildOptionsProto::clear_memory_fitting_level() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_fitting_level_ = 0;
}
inline ::xla::ExecutionOptions_EffortLevel ExecutableBuildOptionsProto::memory_fitting_level() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.memory_fitting_level)
  return _internal_memory_fitting_level();
}
inline void ExecutableBuildOptionsProto::set_memory_fitting_level(::xla::ExecutionOptions_EffortLevel value) {
  _internal_set_memory_fitting_level(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.memory_fitting_level)
}
inline ::xla::ExecutionOptions_EffortLevel ExecutableBuildOptionsProto::_internal_memory_fitting_level() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::ExecutionOptions_EffortLevel>(_impl_.memory_fitting_level_);
}
inline void ExecutableBuildOptionsProto::_internal_set_memory_fitting_level(::xla::ExecutionOptions_EffortLevel value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memory_fitting_level_ = value;
}

// bool deduplicate_hlo = 8;
inline void ExecutableBuildOptionsProto::clear_deduplicate_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicate_hlo_ = false;
}
inline bool ExecutableBuildOptionsProto::deduplicate_hlo() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.deduplicate_hlo)
  return _internal_deduplicate_hlo();
}
inline void ExecutableBuildOptionsProto::set_deduplicate_hlo(bool value) {
  _internal_set_deduplicate_hlo(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.deduplicate_hlo)
}
inline bool ExecutableBuildOptionsProto::_internal_deduplicate_hlo() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.deduplicate_hlo_;
}
inline void ExecutableBuildOptionsProto::_internal_set_deduplicate_hlo(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicate_hlo_ = value;
}

// .xla.DeviceAssignmentProto device_assignment = 9;
inline bool ExecutableBuildOptionsProto::has_device_assignment() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.device_assignment_ != nullptr);
  return value;
}
inline const ::xla::DeviceAssignmentProto& ExecutableBuildOptionsProto::_internal_device_assignment() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::DeviceAssignmentProto* p = _impl_.device_assignment_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::DeviceAssignmentProto&>(::xla::_DeviceAssignmentProto_default_instance_);
}
inline const ::xla::DeviceAssignmentProto& ExecutableBuildOptionsProto::device_assignment() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.device_assignment)
  return _internal_device_assignment();
}
inline void ExecutableBuildOptionsProto::unsafe_arena_set_allocated_device_assignment(::xla::DeviceAssignmentProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.device_assignment_);
  }
  _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ExecutableBuildOptionsProto.device_assignment)
}
inline ::xla::DeviceAssignmentProto* ExecutableBuildOptionsProto::release_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::DeviceAssignmentProto* temp = _impl_.device_assignment_;
  _impl_.device_assignment_ = nullptr;
  return temp;
}
inline ::xla::DeviceAssignmentProto* ExecutableBuildOptionsProto::_internal_mutable_device_assignment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.device_assignment_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::DeviceAssignmentProto>(GetArena());
    _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(p);
  }
  return _impl_.device_assignment_;
}
inline ::xla::DeviceAssignmentProto* ExecutableBuildOptionsProto::mutable_device_assignment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::DeviceAssignmentProto* _msg = _internal_mutable_device_assignment();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableBuildOptionsProto.device_assignment)
  return _msg;
}
inline void ExecutableBuildOptionsProto::set_allocated_device_assignment(::xla::DeviceAssignmentProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.device_assignment_);
  }

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

  _impl_.device_assignment_ = reinterpret_cast<::xla::DeviceAssignmentProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableBuildOptionsProto.device_assignment)
}

// bool alias_passthrough_params = 10;
inline void ExecutableBuildOptionsProto::clear_alias_passthrough_params() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.alias_passthrough_params_ = false;
}
inline bool ExecutableBuildOptionsProto::alias_passthrough_params() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.alias_passthrough_params)
  return _internal_alias_passthrough_params();
}
inline void ExecutableBuildOptionsProto::set_alias_passthrough_params(bool value) {
  _internal_set_alias_passthrough_params(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.alias_passthrough_params)
}
inline bool ExecutableBuildOptionsProto::_internal_alias_passthrough_params() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.alias_passthrough_params_;
}
inline void ExecutableBuildOptionsProto::_internal_set_alias_passthrough_params(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.alias_passthrough_params_ = value;
}

// bool run_backend_only = 11;
inline void ExecutableBuildOptionsProto::clear_run_backend_only() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.run_backend_only_ = false;
}
inline bool ExecutableBuildOptionsProto::run_backend_only() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.run_backend_only)
  return _internal_run_backend_only();
}
inline void ExecutableBuildOptionsProto::set_run_backend_only(bool value) {
  _internal_set_run_backend_only(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.run_backend_only)
}
inline bool ExecutableBuildOptionsProto::_internal_run_backend_only() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.run_backend_only_;
}
inline void ExecutableBuildOptionsProto::_internal_set_run_backend_only(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.run_backend_only_ = value;
}

// repeated bool allow_spmd_sharding_propagation_to_parameters = 18;
inline int ExecutableBuildOptionsProto::_internal_allow_spmd_sharding_propagation_to_parameters_size() const {
  return _internal_allow_spmd_sharding_propagation_to_parameters().size();
}
inline int ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_parameters_size() const {
  return _internal_allow_spmd_sharding_propagation_to_parameters_size();
}
inline void ExecutableBuildOptionsProto::clear_allow_spmd_sharding_propagation_to_parameters() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_spmd_sharding_propagation_to_parameters_.Clear();
}
inline bool ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_parameters(int index) const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_parameters)
  return _internal_allow_spmd_sharding_propagation_to_parameters().Get(index);
}
inline void ExecutableBuildOptionsProto::set_allow_spmd_sharding_propagation_to_parameters(int index, bool value) {
  _internal_mutable_allow_spmd_sharding_propagation_to_parameters()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_parameters)
}
inline void ExecutableBuildOptionsProto::add_allow_spmd_sharding_propagation_to_parameters(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_allow_spmd_sharding_propagation_to_parameters()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_parameters)
}
inline const ::google::protobuf::RepeatedField<bool>& ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_parameters() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_parameters)
  return _internal_allow_spmd_sharding_propagation_to_parameters();
}
inline ::google::protobuf::RepeatedField<bool>* ExecutableBuildOptionsProto::mutable_allow_spmd_sharding_propagation_to_parameters()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_parameters)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_allow_spmd_sharding_propagation_to_parameters();
}
inline const ::google::protobuf::RepeatedField<bool>&
ExecutableBuildOptionsProto::_internal_allow_spmd_sharding_propagation_to_parameters() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.allow_spmd_sharding_propagation_to_parameters_;
}
inline ::google::protobuf::RepeatedField<bool>* ExecutableBuildOptionsProto::_internal_mutable_allow_spmd_sharding_propagation_to_parameters() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.allow_spmd_sharding_propagation_to_parameters_;
}

// repeated bool allow_spmd_sharding_propagation_to_output = 12;
inline int ExecutableBuildOptionsProto::_internal_allow_spmd_sharding_propagation_to_output_size() const {
  return _internal_allow_spmd_sharding_propagation_to_output().size();
}
inline int ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_output_size() const {
  return _internal_allow_spmd_sharding_propagation_to_output_size();
}
inline void ExecutableBuildOptionsProto::clear_allow_spmd_sharding_propagation_to_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_spmd_sharding_propagation_to_output_.Clear();
}
inline bool ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_output(int index) const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_output)
  return _internal_allow_spmd_sharding_propagation_to_output().Get(index);
}
inline void ExecutableBuildOptionsProto::set_allow_spmd_sharding_propagation_to_output(int index, bool value) {
  _internal_mutable_allow_spmd_sharding_propagation_to_output()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_output)
}
inline void ExecutableBuildOptionsProto::add_allow_spmd_sharding_propagation_to_output(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_allow_spmd_sharding_propagation_to_output()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_output)
}
inline const ::google::protobuf::RepeatedField<bool>& ExecutableBuildOptionsProto::allow_spmd_sharding_propagation_to_output() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_output)
  return _internal_allow_spmd_sharding_propagation_to_output();
}
inline ::google::protobuf::RepeatedField<bool>* ExecutableBuildOptionsProto::mutable_allow_spmd_sharding_propagation_to_output()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ExecutableBuildOptionsProto.allow_spmd_sharding_propagation_to_output)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_allow_spmd_sharding_propagation_to_output();
}
inline const ::google::protobuf::RepeatedField<bool>&
ExecutableBuildOptionsProto::_internal_allow_spmd_sharding_propagation_to_output() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.allow_spmd_sharding_propagation_to_output_;
}
inline ::google::protobuf::RepeatedField<bool>* ExecutableBuildOptionsProto::_internal_mutable_allow_spmd_sharding_propagation_to_output() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.allow_spmd_sharding_propagation_to_output_;
}

// bytes fdo_profile = 14;
inline void ExecutableBuildOptionsProto::clear_fdo_profile() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fdo_profile_.ClearToEmpty();
}
inline const std::string& ExecutableBuildOptionsProto::fdo_profile() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.fdo_profile)
  return _internal_fdo_profile();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ExecutableBuildOptionsProto::set_fdo_profile(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fdo_profile_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.fdo_profile)
}
inline std::string* ExecutableBuildOptionsProto::mutable_fdo_profile() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_fdo_profile();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableBuildOptionsProto.fdo_profile)
  return _s;
}
inline const std::string& ExecutableBuildOptionsProto::_internal_fdo_profile() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fdo_profile_.Get();
}
inline void ExecutableBuildOptionsProto::_internal_set_fdo_profile(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fdo_profile_.Set(value, GetArena());
}
inline std::string* ExecutableBuildOptionsProto::_internal_mutable_fdo_profile() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.fdo_profile_.Mutable( GetArena());
}
inline std::string* ExecutableBuildOptionsProto::release_fdo_profile() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableBuildOptionsProto.fdo_profile)
  return _impl_.fdo_profile_.Release();
}
inline void ExecutableBuildOptionsProto::set_allocated_fdo_profile(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fdo_profile_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.fdo_profile_.IsDefault()) {
          _impl_.fdo_profile_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableBuildOptionsProto.fdo_profile)
}

// int64 device_memory_size = 15;
inline void ExecutableBuildOptionsProto::clear_device_memory_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_memory_size_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::device_memory_size() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.device_memory_size)
  return _internal_device_memory_size();
}
inline void ExecutableBuildOptionsProto::set_device_memory_size(::int64_t value) {
  _internal_set_device_memory_size(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.device_memory_size)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_device_memory_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_memory_size_;
}
inline void ExecutableBuildOptionsProto::_internal_set_device_memory_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_memory_size_ = value;
}

// repeated int64 auto_spmd_partitioning_mesh_shape = 16;
inline int ExecutableBuildOptionsProto::_internal_auto_spmd_partitioning_mesh_shape_size() const {
  return _internal_auto_spmd_partitioning_mesh_shape().size();
}
inline int ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_shape_size() const {
  return _internal_auto_spmd_partitioning_mesh_shape_size();
}
inline void ExecutableBuildOptionsProto::clear_auto_spmd_partitioning_mesh_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.auto_spmd_partitioning_mesh_shape_.Clear();
}
inline ::int64_t ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_shape(int index) const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_shape)
  return _internal_auto_spmd_partitioning_mesh_shape().Get(index);
}
inline void ExecutableBuildOptionsProto::set_auto_spmd_partitioning_mesh_shape(int index, ::int64_t value) {
  _internal_mutable_auto_spmd_partitioning_mesh_shape()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_shape)
}
inline void ExecutableBuildOptionsProto::add_auto_spmd_partitioning_mesh_shape(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_auto_spmd_partitioning_mesh_shape()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_shape)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_shape() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_shape)
  return _internal_auto_spmd_partitioning_mesh_shape();
}
inline ::google::protobuf::RepeatedField<::int64_t>* ExecutableBuildOptionsProto::mutable_auto_spmd_partitioning_mesh_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_shape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_auto_spmd_partitioning_mesh_shape();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ExecutableBuildOptionsProto::_internal_auto_spmd_partitioning_mesh_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.auto_spmd_partitioning_mesh_shape_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* ExecutableBuildOptionsProto::_internal_mutable_auto_spmd_partitioning_mesh_shape() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.auto_spmd_partitioning_mesh_shape_;
}

// repeated int64 auto_spmd_partitioning_mesh_ids = 17;
inline int ExecutableBuildOptionsProto::_internal_auto_spmd_partitioning_mesh_ids_size() const {
  return _internal_auto_spmd_partitioning_mesh_ids().size();
}
inline int ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_ids_size() const {
  return _internal_auto_spmd_partitioning_mesh_ids_size();
}
inline void ExecutableBuildOptionsProto::clear_auto_spmd_partitioning_mesh_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.auto_spmd_partitioning_mesh_ids_.Clear();
}
inline ::int64_t ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_ids(int index) const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_ids)
  return _internal_auto_spmd_partitioning_mesh_ids().Get(index);
}
inline void ExecutableBuildOptionsProto::set_auto_spmd_partitioning_mesh_ids(int index, ::int64_t value) {
  _internal_mutable_auto_spmd_partitioning_mesh_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_ids)
}
inline void ExecutableBuildOptionsProto::add_auto_spmd_partitioning_mesh_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_auto_spmd_partitioning_mesh_ids()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ExecutableBuildOptionsProto::auto_spmd_partitioning_mesh_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_ids)
  return _internal_auto_spmd_partitioning_mesh_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* ExecutableBuildOptionsProto::mutable_auto_spmd_partitioning_mesh_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ExecutableBuildOptionsProto.auto_spmd_partitioning_mesh_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_auto_spmd_partitioning_mesh_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ExecutableBuildOptionsProto::_internal_auto_spmd_partitioning_mesh_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.auto_spmd_partitioning_mesh_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* ExecutableBuildOptionsProto::_internal_mutable_auto_spmd_partitioning_mesh_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.auto_spmd_partitioning_mesh_ids_;
}

// bool use_shardy_partitioner = 19;
inline void ExecutableBuildOptionsProto::clear_use_shardy_partitioner() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_shardy_partitioner_ = false;
}
inline bool ExecutableBuildOptionsProto::use_shardy_partitioner() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.use_shardy_partitioner)
  return _internal_use_shardy_partitioner();
}
inline void ExecutableBuildOptionsProto::set_use_shardy_partitioner(bool value) {
  _internal_set_use_shardy_partitioner(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.use_shardy_partitioner)
}
inline bool ExecutableBuildOptionsProto::_internal_use_shardy_partitioner() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_shardy_partitioner_;
}
inline void ExecutableBuildOptionsProto::_internal_set_use_shardy_partitioner(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_shardy_partitioner_ = value;
}

// int64 process_index = 22;
inline void ExecutableBuildOptionsProto::clear_process_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.process_index_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::process_index() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.process_index)
  return _internal_process_index();
}
inline void ExecutableBuildOptionsProto::set_process_index(::int64_t value) {
  _internal_set_process_index(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.process_index)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_process_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.process_index_;
}
inline void ExecutableBuildOptionsProto::_internal_set_process_index(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.process_index_ = value;
}

// int64 process_count = 23;
inline void ExecutableBuildOptionsProto::clear_process_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.process_count_ = ::int64_t{0};
}
inline ::int64_t ExecutableBuildOptionsProto::process_count() const {
  // @@protoc_insertion_point(field_get:xla.ExecutableBuildOptionsProto.process_count)
  return _internal_process_count();
}
inline void ExecutableBuildOptionsProto::set_process_count(::int64_t value) {
  _internal_set_process_count(value);
  // @@protoc_insertion_point(field_set:xla.ExecutableBuildOptionsProto.process_count)
}
inline ::int64_t ExecutableBuildOptionsProto::_internal_process_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.process_count_;
}
inline void ExecutableBuildOptionsProto::_internal_set_process_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.process_count_ = value;
}

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

// OptionOverrideProto

// string string_field = 1;
inline bool OptionOverrideProto::has_string_field() const {
  return value_case() == kStringField;
}
inline void OptionOverrideProto::set_has_string_field() {
  _impl_._oneof_case_[0] = kStringField;
}
inline void OptionOverrideProto::clear_string_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kStringField) {
    _impl_.value_.string_field_.Destroy();
    clear_has_value();
  }
}
inline const std::string& OptionOverrideProto::string_field() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.OptionOverrideProto.string_field)
  return _internal_string_field();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void OptionOverrideProto::set_string_field(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStringField) {
    clear_value();

    set_has_string_field();
    _impl_.value_.string_field_.InitDefault();
  }
  _impl_.value_.string_field_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.OptionOverrideProto.string_field)
}
inline std::string* OptionOverrideProto::mutable_string_field() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_string_field();
  // @@protoc_insertion_point(field_mutable:xla.OptionOverrideProto.string_field)
  return _s;
}
inline const std::string& OptionOverrideProto::_internal_string_field() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  if (value_case() != kStringField) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.value_.string_field_.Get();
}
inline void OptionOverrideProto::_internal_set_string_field(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStringField) {
    clear_value();

    set_has_string_field();
    _impl_.value_.string_field_.InitDefault();
  }
  _impl_.value_.string_field_.Set(value, GetArena());
}
inline std::string* OptionOverrideProto::_internal_mutable_string_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStringField) {
    clear_value();

    set_has_string_field();
    _impl_.value_.string_field_.InitDefault();
  }
  return _impl_.value_.string_field_.Mutable( GetArena());
}
inline std::string* OptionOverrideProto::release_string_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.OptionOverrideProto.string_field)
  if (value_case() != kStringField) {
    return nullptr;
  }
  clear_has_value();
  return _impl_.value_.string_field_.Release();
}
inline void OptionOverrideProto::set_allocated_string_field(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (has_value()) {
    clear_value();
  }
  if (value != nullptr) {
    set_has_string_field();
    _impl_.value_.string_field_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.OptionOverrideProto.string_field)
}

// bool bool_field = 2;
inline bool OptionOverrideProto::has_bool_field() const {
  return value_case() == kBoolField;
}
inline void OptionOverrideProto::set_has_bool_field() {
  _impl_._oneof_case_[0] = kBoolField;
}
inline void OptionOverrideProto::clear_bool_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kBoolField) {
    _impl_.value_.bool_field_ = false;
    clear_has_value();
  }
}
inline bool OptionOverrideProto::bool_field() const {
  // @@protoc_insertion_point(field_get:xla.OptionOverrideProto.bool_field)
  return _internal_bool_field();
}
inline void OptionOverrideProto::set_bool_field(bool value) {
  if (value_case() != kBoolField) {
    clear_value();
    set_has_bool_field();
  }
  _impl_.value_.bool_field_ = value;
  // @@protoc_insertion_point(field_set:xla.OptionOverrideProto.bool_field)
}
inline bool OptionOverrideProto::_internal_bool_field() const {
  if (value_case() == kBoolField) {
    return _impl_.value_.bool_field_;
  }
  return false;
}

// int64 int_field = 3;
inline bool OptionOverrideProto::has_int_field() const {
  return value_case() == kIntField;
}
inline void OptionOverrideProto::set_has_int_field() {
  _impl_._oneof_case_[0] = kIntField;
}
inline void OptionOverrideProto::clear_int_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kIntField) {
    _impl_.value_.int_field_ = ::int64_t{0};
    clear_has_value();
  }
}
inline ::int64_t OptionOverrideProto::int_field() const {
  // @@protoc_insertion_point(field_get:xla.OptionOverrideProto.int_field)
  return _internal_int_field();
}
inline void OptionOverrideProto::set_int_field(::int64_t value) {
  if (value_case() != kIntField) {
    clear_value();
    set_has_int_field();
  }
  _impl_.value_.int_field_ = value;
  // @@protoc_insertion_point(field_set:xla.OptionOverrideProto.int_field)
}
inline ::int64_t OptionOverrideProto::_internal_int_field() const {
  if (value_case() == kIntField) {
    return _impl_.value_.int_field_;
  }
  return ::int64_t{0};
}

// double double_field = 4;
inline bool OptionOverrideProto::has_double_field() const {
  return value_case() == kDoubleField;
}
inline void OptionOverrideProto::set_has_double_field() {
  _impl_._oneof_case_[0] = kDoubleField;
}
inline void OptionOverrideProto::clear_double_field() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kDoubleField) {
    _impl_.value_.double_field_ = 0;
    clear_has_value();
  }
}
inline double OptionOverrideProto::double_field() const {
  // @@protoc_insertion_point(field_get:xla.OptionOverrideProto.double_field)
  return _internal_double_field();
}
inline void OptionOverrideProto::set_double_field(double value) {
  if (value_case() != kDoubleField) {
    clear_value();
    set_has_double_field();
  }
  _impl_.value_.double_field_ = value;
  // @@protoc_insertion_point(field_set:xla.OptionOverrideProto.double_field)
}
inline double OptionOverrideProto::_internal_double_field() const {
  if (value_case() == kDoubleField) {
    return _impl_.value_.double_field_;
  }
  return 0;
}

inline bool OptionOverrideProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void OptionOverrideProto::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline OptionOverrideProto::ValueCase OptionOverrideProto::value_case() const {
  return OptionOverrideProto::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

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

// CompileOptionsProto

// repeated .xla.ShapeProto argument_layouts = 1;
inline int CompileOptionsProto::_internal_argument_layouts_size() const {
  return _internal_argument_layouts().size();
}
inline int CompileOptionsProto::argument_layouts_size() const {
  return _internal_argument_layouts_size();
}
inline ::xla::ShapeProto* CompileOptionsProto::mutable_argument_layouts(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.CompileOptionsProto.argument_layouts)
  return _internal_mutable_argument_layouts()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* CompileOptionsProto::mutable_argument_layouts()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.CompileOptionsProto.argument_layouts)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_argument_layouts();
}
inline const ::xla::ShapeProto& CompileOptionsProto::argument_layouts(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.argument_layouts)
  return _internal_argument_layouts().Get(index);
}
inline ::xla::ShapeProto* CompileOptionsProto::add_argument_layouts() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapeProto* _add = _internal_mutable_argument_layouts()->Add();
  // @@protoc_insertion_point(field_add:xla.CompileOptionsProto.argument_layouts)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& CompileOptionsProto::argument_layouts() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.CompileOptionsProto.argument_layouts)
  return _internal_argument_layouts();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>&
CompileOptionsProto::_internal_argument_layouts() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.argument_layouts_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>*
CompileOptionsProto::_internal_mutable_argument_layouts() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.argument_layouts_;
}

// bool parameter_is_tupled_arguments = 2;
inline void CompileOptionsProto::clear_parameter_is_tupled_arguments() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_is_tupled_arguments_ = false;
}
inline bool CompileOptionsProto::parameter_is_tupled_arguments() const {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.parameter_is_tupled_arguments)
  return _internal_parameter_is_tupled_arguments();
}
inline void CompileOptionsProto::set_parameter_is_tupled_arguments(bool value) {
  _internal_set_parameter_is_tupled_arguments(value);
  // @@protoc_insertion_point(field_set:xla.CompileOptionsProto.parameter_is_tupled_arguments)
}
inline bool CompileOptionsProto::_internal_parameter_is_tupled_arguments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.parameter_is_tupled_arguments_;
}
inline void CompileOptionsProto::_internal_set_parameter_is_tupled_arguments(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_is_tupled_arguments_ = value;
}

// .xla.ExecutableBuildOptionsProto executable_build_options = 3;
inline bool CompileOptionsProto::has_executable_build_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.executable_build_options_ != nullptr);
  return value;
}
inline void CompileOptionsProto::clear_executable_build_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.executable_build_options_ != nullptr) _impl_.executable_build_options_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::ExecutableBuildOptionsProto& CompileOptionsProto::_internal_executable_build_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ExecutableBuildOptionsProto* p = _impl_.executable_build_options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ExecutableBuildOptionsProto&>(::xla::_ExecutableBuildOptionsProto_default_instance_);
}
inline const ::xla::ExecutableBuildOptionsProto& CompileOptionsProto::executable_build_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.executable_build_options)
  return _internal_executable_build_options();
}
inline void CompileOptionsProto::unsafe_arena_set_allocated_executable_build_options(::xla::ExecutableBuildOptionsProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.executable_build_options_);
  }
  _impl_.executable_build_options_ = reinterpret_cast<::xla::ExecutableBuildOptionsProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.CompileOptionsProto.executable_build_options)
}
inline ::xla::ExecutableBuildOptionsProto* CompileOptionsProto::release_executable_build_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ExecutableBuildOptionsProto* temp = _impl_.executable_build_options_;
  _impl_.executable_build_options_ = nullptr;
  return temp;
}
inline ::xla::ExecutableBuildOptionsProto* CompileOptionsProto::_internal_mutable_executable_build_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.executable_build_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ExecutableBuildOptionsProto>(GetArena());
    _impl_.executable_build_options_ = reinterpret_cast<::xla::ExecutableBuildOptionsProto*>(p);
  }
  return _impl_.executable_build_options_;
}
inline ::xla::ExecutableBuildOptionsProto* CompileOptionsProto::mutable_executable_build_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ExecutableBuildOptionsProto* _msg = _internal_mutable_executable_build_options();
  // @@protoc_insertion_point(field_mutable:xla.CompileOptionsProto.executable_build_options)
  return _msg;
}
inline void CompileOptionsProto::set_allocated_executable_build_options(::xla::ExecutableBuildOptionsProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.executable_build_options_);
  }

  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_.executable_build_options_ = reinterpret_cast<::xla::ExecutableBuildOptionsProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.CompileOptionsProto.executable_build_options)
}

// bool compile_portable_executable = 4;
inline void CompileOptionsProto::clear_compile_portable_executable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compile_portable_executable_ = false;
}
inline bool CompileOptionsProto::compile_portable_executable() const {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.compile_portable_executable)
  return _internal_compile_portable_executable();
}
inline void CompileOptionsProto::set_compile_portable_executable(bool value) {
  _internal_set_compile_portable_executable(value);
  // @@protoc_insertion_point(field_set:xla.CompileOptionsProto.compile_portable_executable)
}
inline bool CompileOptionsProto::_internal_compile_portable_executable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.compile_portable_executable_;
}
inline void CompileOptionsProto::_internal_set_compile_portable_executable(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.compile_portable_executable_ = value;
}

// int64 profile_version = 5;
inline void CompileOptionsProto::clear_profile_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_version_ = ::int64_t{0};
}
inline ::int64_t CompileOptionsProto::profile_version() const {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.profile_version)
  return _internal_profile_version();
}
inline void CompileOptionsProto::set_profile_version(::int64_t value) {
  _internal_set_profile_version(value);
  // @@protoc_insertion_point(field_set:xla.CompileOptionsProto.profile_version)
}
inline ::int64_t CompileOptionsProto::_internal_profile_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_version_;
}
inline void CompileOptionsProto::_internal_set_profile_version(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_version_ = value;
}

// bytes serialized_multi_slice_config = 6;
inline void CompileOptionsProto::clear_serialized_multi_slice_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_multi_slice_config_.ClearToEmpty();
}
inline const std::string& CompileOptionsProto::serialized_multi_slice_config() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.serialized_multi_slice_config)
  return _internal_serialized_multi_slice_config();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CompileOptionsProto::set_serialized_multi_slice_config(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_multi_slice_config_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.CompileOptionsProto.serialized_multi_slice_config)
}
inline std::string* CompileOptionsProto::mutable_serialized_multi_slice_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_serialized_multi_slice_config();
  // @@protoc_insertion_point(field_mutable:xla.CompileOptionsProto.serialized_multi_slice_config)
  return _s;
}
inline const std::string& CompileOptionsProto::_internal_serialized_multi_slice_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.serialized_multi_slice_config_.Get();
}
inline void CompileOptionsProto::_internal_set_serialized_multi_slice_config(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_multi_slice_config_.Set(value, GetArena());
}
inline std::string* CompileOptionsProto::_internal_mutable_serialized_multi_slice_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.serialized_multi_slice_config_.Mutable( GetArena());
}
inline std::string* CompileOptionsProto::release_serialized_multi_slice_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.CompileOptionsProto.serialized_multi_slice_config)
  return _impl_.serialized_multi_slice_config_.Release();
}
inline void CompileOptionsProto::set_allocated_serialized_multi_slice_config(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_multi_slice_config_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.serialized_multi_slice_config_.IsDefault()) {
          _impl_.serialized_multi_slice_config_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.CompileOptionsProto.serialized_multi_slice_config)
}

// map<string, .xla.OptionOverrideProto> env_option_overrides = 7;
inline int CompileOptionsProto::_internal_env_option_overrides_size() const {
  return _internal_env_option_overrides().size();
}
inline int CompileOptionsProto::env_option_overrides_size() const {
  return _internal_env_option_overrides_size();
}
inline void CompileOptionsProto::clear_env_option_overrides() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.env_option_overrides_.Clear();
}
inline const ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>& CompileOptionsProto::_internal_env_option_overrides() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.env_option_overrides_.GetMap();
}
inline const ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>& CompileOptionsProto::env_option_overrides() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.CompileOptionsProto.env_option_overrides)
  return _internal_env_option_overrides();
}
inline ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>* CompileOptionsProto::_internal_mutable_env_option_overrides() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.env_option_overrides_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::xla::OptionOverrideProto>* CompileOptionsProto::mutable_env_option_overrides() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.CompileOptionsProto.env_option_overrides)
  return _internal_mutable_env_option_overrides();
}

// .stream_executor.GpuTargetConfigProto target_config = 8;
inline bool CompileOptionsProto::has_target_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.target_config_ != nullptr);
  return value;
}
inline const ::stream_executor::GpuTargetConfigProto& CompileOptionsProto::_internal_target_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::stream_executor::GpuTargetConfigProto* p = _impl_.target_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::stream_executor::GpuTargetConfigProto&>(::stream_executor::_GpuTargetConfigProto_default_instance_);
}
inline const ::stream_executor::GpuTargetConfigProto& CompileOptionsProto::target_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.CompileOptionsProto.target_config)
  return _internal_target_config();
}
inline void CompileOptionsProto::unsafe_arena_set_allocated_target_config(::stream_executor::GpuTargetConfigProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.target_config_);
  }
  _impl_.target_config_ = reinterpret_cast<::stream_executor::GpuTargetConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.CompileOptionsProto.target_config)
}
inline ::stream_executor::GpuTargetConfigProto* CompileOptionsProto::release_target_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::stream_executor::GpuTargetConfigProto* released = _impl_.target_config_;
  _impl_.target_config_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::stream_executor::GpuTargetConfigProto* CompileOptionsProto::unsafe_arena_release_target_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.CompileOptionsProto.target_config)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::stream_executor::GpuTargetConfigProto* temp = _impl_.target_config_;
  _impl_.target_config_ = nullptr;
  return temp;
}
inline ::stream_executor::GpuTargetConfigProto* CompileOptionsProto::_internal_mutable_target_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.target_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::stream_executor::GpuTargetConfigProto>(GetArena());
    _impl_.target_config_ = reinterpret_cast<::stream_executor::GpuTargetConfigProto*>(p);
  }
  return _impl_.target_config_;
}
inline ::stream_executor::GpuTargetConfigProto* CompileOptionsProto::mutable_target_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::stream_executor::GpuTargetConfigProto* _msg = _internal_mutable_target_config();
  // @@protoc_insertion_point(field_mutable:xla.CompileOptionsProto.target_config)
  return _msg;
}
inline void CompileOptionsProto::set_allocated_target_config(::stream_executor::GpuTargetConfigProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.target_config_);
  }

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

  _impl_.target_config_ = reinterpret_cast<::stream_executor::GpuTargetConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.CompileOptionsProto.target_config)
}

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

// ExecutableAndOptionsProto

// bytes serialized_executable = 1;
inline void ExecutableAndOptionsProto::clear_serialized_executable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_executable_.ClearToEmpty();
}
inline const std::string& ExecutableAndOptionsProto::serialized_executable() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableAndOptionsProto.serialized_executable)
  return _internal_serialized_executable();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ExecutableAndOptionsProto::set_serialized_executable(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_executable_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.ExecutableAndOptionsProto.serialized_executable)
}
inline std::string* ExecutableAndOptionsProto::mutable_serialized_executable() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_serialized_executable();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableAndOptionsProto.serialized_executable)
  return _s;
}
inline const std::string& ExecutableAndOptionsProto::_internal_serialized_executable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.serialized_executable_.Get();
}
inline void ExecutableAndOptionsProto::_internal_set_serialized_executable(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_executable_.Set(value, GetArena());
}
inline std::string* ExecutableAndOptionsProto::_internal_mutable_serialized_executable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.serialized_executable_.Mutable( GetArena());
}
inline std::string* ExecutableAndOptionsProto::release_serialized_executable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableAndOptionsProto.serialized_executable)
  return _impl_.serialized_executable_.Release();
}
inline void ExecutableAndOptionsProto::set_allocated_serialized_executable(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_executable_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.serialized_executable_.IsDefault()) {
          _impl_.serialized_executable_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableAndOptionsProto.serialized_executable)
}

// .xla.CompileOptionsProto compile_options = 2;
inline bool ExecutableAndOptionsProto::has_compile_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.compile_options_ != nullptr);
  return value;
}
inline void ExecutableAndOptionsProto::clear_compile_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.compile_options_ != nullptr) _impl_.compile_options_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::CompileOptionsProto& ExecutableAndOptionsProto::_internal_compile_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::CompileOptionsProto* p = _impl_.compile_options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::CompileOptionsProto&>(::xla::_CompileOptionsProto_default_instance_);
}
inline const ::xla::CompileOptionsProto& ExecutableAndOptionsProto::compile_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableAndOptionsProto.compile_options)
  return _internal_compile_options();
}
inline void ExecutableAndOptionsProto::unsafe_arena_set_allocated_compile_options(::xla::CompileOptionsProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.compile_options_);
  }
  _impl_.compile_options_ = reinterpret_cast<::xla::CompileOptionsProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ExecutableAndOptionsProto.compile_options)
}
inline ::xla::CompileOptionsProto* ExecutableAndOptionsProto::release_compile_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::CompileOptionsProto* temp = _impl_.compile_options_;
  _impl_.compile_options_ = nullptr;
  return temp;
}
inline ::xla::CompileOptionsProto* ExecutableAndOptionsProto::_internal_mutable_compile_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.compile_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::CompileOptionsProto>(GetArena());
    _impl_.compile_options_ = reinterpret_cast<::xla::CompileOptionsProto*>(p);
  }
  return _impl_.compile_options_;
}
inline ::xla::CompileOptionsProto* ExecutableAndOptionsProto::mutable_compile_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::CompileOptionsProto* _msg = _internal_mutable_compile_options();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableAndOptionsProto.compile_options)
  return _msg;
}
inline void ExecutableAndOptionsProto::set_allocated_compile_options(::xla::CompileOptionsProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.compile_options_);
  }

  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_.compile_options_ = reinterpret_cast<::xla::CompileOptionsProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableAndOptionsProto.compile_options)
}

// string pjrt_client_name = 3;
inline void ExecutableAndOptionsProto::clear_pjrt_client_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pjrt_client_name_.ClearToEmpty();
}
inline const std::string& ExecutableAndOptionsProto::pjrt_client_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ExecutableAndOptionsProto.pjrt_client_name)
  return _internal_pjrt_client_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ExecutableAndOptionsProto::set_pjrt_client_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pjrt_client_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.ExecutableAndOptionsProto.pjrt_client_name)
}
inline std::string* ExecutableAndOptionsProto::mutable_pjrt_client_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_pjrt_client_name();
  // @@protoc_insertion_point(field_mutable:xla.ExecutableAndOptionsProto.pjrt_client_name)
  return _s;
}
inline const std::string& ExecutableAndOptionsProto::_internal_pjrt_client_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pjrt_client_name_.Get();
}
inline void ExecutableAndOptionsProto::_internal_set_pjrt_client_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pjrt_client_name_.Set(value, GetArena());
}
inline std::string* ExecutableAndOptionsProto::_internal_mutable_pjrt_client_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.pjrt_client_name_.Mutable( GetArena());
}
inline std::string* ExecutableAndOptionsProto::release_pjrt_client_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ExecutableAndOptionsProto.pjrt_client_name)
  return _impl_.pjrt_client_name_.Release();
}
inline void ExecutableAndOptionsProto::set_allocated_pjrt_client_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pjrt_client_name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.pjrt_client_name_.IsDefault()) {
          _impl_.pjrt_client_name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:xla.ExecutableAndOptionsProto.pjrt_client_name)
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace xla


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_xla_2fpjrt_2fproto_2fcompile_5foptions_2eproto_2epb_2eh
