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

#ifndef GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fcpu_2fonednn_5fconfig_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/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto PROTOBUF_EXPORT

namespace google {
namespace protobuf {
namespace internal {
class AnyMetadata;
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct PROTOBUF_EXPORT TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto {
  static const ::uint32_t offsets[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
namespace xla {
namespace cpu {
class OneDnnConvolutionConfig;
struct OneDnnConvolutionConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnConvolutionConfigDefaultTypeInternal _OneDnnConvolutionConfig_default_instance_;
class OneDnnDataLayoutProto;
struct OneDnnDataLayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnDataLayoutProtoDefaultTypeInternal _OneDnnDataLayoutProto_default_instance_;
class OneDnnFactorLayoutProto;
struct OneDnnFactorLayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnFactorLayoutProtoDefaultTypeInternal _OneDnnFactorLayoutProto_default_instance_;
class OneDnnFilterLayoutProto;
struct OneDnnFilterLayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnFilterLayoutProtoDefaultTypeInternal _OneDnnFilterLayoutProto_default_instance_;
class OneDnnFusionConfig;
struct OneDnnFusionConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnFusionConfigDefaultTypeInternal _OneDnnFusionConfig_default_instance_;
class OneDnnMatMulConfig;
struct OneDnnMatMulConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnMatMulConfigDefaultTypeInternal _OneDnnMatMulConfig_default_instance_;
class OneDnnNormConfig;
struct OneDnnNormConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnNormConfigDefaultTypeInternal _OneDnnNormConfig_default_instance_;
class OneDnnOptimizationConfig;
struct OneDnnOptimizationConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnOptimizationConfigDefaultTypeInternal _OneDnnOptimizationConfig_default_instance_;
class OneDnnSoftmaxConfig;
struct OneDnnSoftmaxConfigDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnSoftmaxConfigDefaultTypeInternal _OneDnnSoftmaxConfig_default_instance_;
class OneDnnTensorLayoutProto;
struct OneDnnTensorLayoutProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnTensorLayoutProtoDefaultTypeInternal _OneDnnTensorLayoutProto_default_instance_;
class OneDnnWindowProto;
struct OneDnnWindowProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OneDnnWindowProtoDefaultTypeInternal _OneDnnWindowProto_default_instance_;
}  // namespace cpu
}  // namespace xla
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace xla {
namespace cpu {
enum OneDnnFusionConfig_FusionKind : int {
  OneDnnFusionConfig_FusionKind_UNDEFINED = 0,
  OneDnnFusionConfig_FusionKind_BIAS = 1,
  OneDnnFusionConfig_FusionKind_RELU = 2,
  OneDnnFusionConfig_FusionKind_TANH = 3,
  OneDnnFusionConfig_FusionKind_GELU_ERF = 4,
  OneDnnFusionConfig_FusionKind_GELU_TANH = 5,
  OneDnnFusionConfig_FusionKind_BINARY_ADD = 6,
  OneDnnFusionConfig_FusionKind_LINEAR = 7,
  OneDnnFusionConfig_FusionKind_ELU = 8,
  OneDnnFusionConfig_FusionKind_RELU6 = 9,
  OneDnnFusionConfig_FusionKind_SIGMOID = 10,
  OneDnnFusionConfig_FusionKind_SUM = 11,
  OneDnnFusionConfig_FusionKind_SWISH = 12,
  OneDnnFusionConfig_FusionKind_OneDnnFusionConfig_FusionKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  OneDnnFusionConfig_FusionKind_OneDnnFusionConfig_FusionKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool OneDnnFusionConfig_FusionKind_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t OneDnnFusionConfig_FusionKind_internal_data_[];
constexpr OneDnnFusionConfig_FusionKind OneDnnFusionConfig_FusionKind_FusionKind_MIN = static_cast<OneDnnFusionConfig_FusionKind>(0);
constexpr OneDnnFusionConfig_FusionKind OneDnnFusionConfig_FusionKind_FusionKind_MAX = static_cast<OneDnnFusionConfig_FusionKind>(12);
constexpr int OneDnnFusionConfig_FusionKind_FusionKind_ARRAYSIZE = 12 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
OneDnnFusionConfig_FusionKind_descriptor();
template <typename T>
const std::string& OneDnnFusionConfig_FusionKind_Name(T value) {
  static_assert(std::is_same<T, OneDnnFusionConfig_FusionKind>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to FusionKind_Name().");
  return OneDnnFusionConfig_FusionKind_Name(static_cast<OneDnnFusionConfig_FusionKind>(value));
}
template <>
inline const std::string& OneDnnFusionConfig_FusionKind_Name(OneDnnFusionConfig_FusionKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<OneDnnFusionConfig_FusionKind_descriptor,
                                                 0, 12>(
      static_cast<int>(value));
}
inline bool OneDnnFusionConfig_FusionKind_Parse(absl::string_view name, OneDnnFusionConfig_FusionKind* value) {
  return ::google::protobuf::internal::ParseNamedEnum<OneDnnFusionConfig_FusionKind>(
      OneDnnFusionConfig_FusionKind_descriptor(), name, value);
}
enum OneDnnNormConfig_ScaleAndShift : int {
  OneDnnNormConfig_ScaleAndShift_UNDEFINED = 0,
  OneDnnNormConfig_ScaleAndShift_SCALE = 1,
  OneDnnNormConfig_ScaleAndShift_SHIFT = 2,
  OneDnnNormConfig_ScaleAndShift_SCALE_AND_SHIFT = 3,
  OneDnnNormConfig_ScaleAndShift_OneDnnNormConfig_ScaleAndShift_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  OneDnnNormConfig_ScaleAndShift_OneDnnNormConfig_ScaleAndShift_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT bool OneDnnNormConfig_ScaleAndShift_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t OneDnnNormConfig_ScaleAndShift_internal_data_[];
constexpr OneDnnNormConfig_ScaleAndShift OneDnnNormConfig_ScaleAndShift_ScaleAndShift_MIN = static_cast<OneDnnNormConfig_ScaleAndShift>(0);
constexpr OneDnnNormConfig_ScaleAndShift OneDnnNormConfig_ScaleAndShift_ScaleAndShift_MAX = static_cast<OneDnnNormConfig_ScaleAndShift>(3);
constexpr int OneDnnNormConfig_ScaleAndShift_ScaleAndShift_ARRAYSIZE = 3 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
OneDnnNormConfig_ScaleAndShift_descriptor();
template <typename T>
const std::string& OneDnnNormConfig_ScaleAndShift_Name(T value) {
  static_assert(std::is_same<T, OneDnnNormConfig_ScaleAndShift>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to ScaleAndShift_Name().");
  return OneDnnNormConfig_ScaleAndShift_Name(static_cast<OneDnnNormConfig_ScaleAndShift>(value));
}
template <>
inline const std::string& OneDnnNormConfig_ScaleAndShift_Name(OneDnnNormConfig_ScaleAndShift value) {
  return ::google::protobuf::internal::NameOfDenseEnum<OneDnnNormConfig_ScaleAndShift_descriptor,
                                                 0, 3>(
      static_cast<int>(value));
}
inline bool OneDnnNormConfig_ScaleAndShift_Parse(absl::string_view name, OneDnnNormConfig_ScaleAndShift* value) {
  return ::google::protobuf::internal::ParseNamedEnum<OneDnnNormConfig_ScaleAndShift>(
      OneDnnNormConfig_ScaleAndShift_descriptor(), name, value);
}

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


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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kSizeFieldNumber = 1,
    kPadLeftFieldNumber = 2,
    kPadRightFieldNumber = 3,
    kStridesFieldNumber = 4,
    kWindowDilationsFieldNumber = 5,
  };
  // repeated uint64 size = 1;
  int size_size() const;
  private:
  int _internal_size_size() const;

  public:
  void clear_size() ;
  ::uint64_t size(int index) const;
  void set_size(int index, ::uint64_t value);
  void add_size(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& size() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_size();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_size() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_size();

  public:
  // repeated uint64 pad_left = 2;
  int pad_left_size() const;
  private:
  int _internal_pad_left_size() const;

  public:
  void clear_pad_left() ;
  ::uint64_t pad_left(int index) const;
  void set_pad_left(int index, ::uint64_t value);
  void add_pad_left(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& pad_left() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_pad_left();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_pad_left() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_pad_left();

  public:
  // repeated uint64 pad_right = 3;
  int pad_right_size() const;
  private:
  int _internal_pad_right_size() const;

  public:
  void clear_pad_right() ;
  ::uint64_t pad_right(int index) const;
  void set_pad_right(int index, ::uint64_t value);
  void add_pad_right(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& pad_right() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_pad_right();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_pad_right() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_pad_right();

  public:
  // repeated uint64 strides = 4;
  int strides_size() const;
  private:
  int _internal_strides_size() const;

  public:
  void clear_strides() ;
  ::uint64_t strides(int index) const;
  void set_strides(int index, ::uint64_t value);
  void add_strides(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& strides() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_strides();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_strides() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_strides();

  public:
  // repeated uint64 window_dilations = 5;
  int window_dilations_size() const;
  private:
  int _internal_window_dilations_size() const;

  public:
  void clear_window_dilations() ;
  ::uint64_t window_dilations(int index) const;
  void set_window_dilations(int index, ::uint64_t value);
  void add_window_dilations(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& window_dilations() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_window_dilations();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_window_dilations() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_window_dilations();

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnWindowProto& from_msg);
    ::google::protobuf::RepeatedField<::uint64_t> size_;
    mutable ::google::protobuf::internal::CachedSize _size_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> pad_left_;
    mutable ::google::protobuf::internal::CachedSize _pad_left_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> pad_right_;
    mutable ::google::protobuf::internal::CachedSize _pad_right_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> strides_;
    mutable ::google::protobuf::internal::CachedSize _strides_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> window_dilations_;
    mutable ::google::protobuf::internal::CachedSize _window_dilations_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OneDnnSoftmaxConfig(::google::protobuf::Arena* arena);
  OneDnnSoftmaxConfig(::google::protobuf::Arena* arena, const OneDnnSoftmaxConfig& from);
  OneDnnSoftmaxConfig(::google::protobuf::Arena* arena, OneDnnSoftmaxConfig&& from) noexcept
      : OneDnnSoftmaxConfig(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 {
    kSoftmaxAxisFieldNumber = 1,
  };
  // int32 softmax_axis = 1;
  void clear_softmax_axis() ;
  ::int32_t softmax_axis() const;
  void set_softmax_axis(::int32_t value);

  private:
  ::int32_t _internal_softmax_axis() const;
  void _internal_set_softmax_axis(::int32_t value);

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


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

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

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

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

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

 protected:
  explicit OneDnnOptimizationConfig(::google::protobuf::Arena* arena);
  OneDnnOptimizationConfig(::google::protobuf::Arena* arena, const OneDnnOptimizationConfig& from);
  OneDnnOptimizationConfig(::google::protobuf::Arena* arena, OneDnnOptimizationConfig&& from) noexcept
      : OneDnnOptimizationConfig(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 {
    kWeightsPrepackedFieldNumber = 1,
    kUserScratchpadFieldNumber = 2,
    kBiasBroadcastFieldNumber = 3,
  };
  // bool weights_prepacked = 1;
  void clear_weights_prepacked() ;
  bool weights_prepacked() const;
  void set_weights_prepacked(bool value);

  private:
  bool _internal_weights_prepacked() const;
  void _internal_set_weights_prepacked(bool value);

  public:
  // bool user_scratchpad = 2;
  void clear_user_scratchpad() ;
  bool user_scratchpad() const;
  void set_user_scratchpad(bool value);

  private:
  bool _internal_user_scratchpad() const;
  void _internal_set_user_scratchpad(bool value);

  public:
  // bool bias_broadcast = 3;
  void clear_bias_broadcast() ;
  bool bias_broadcast() const;
  void set_bias_broadcast(bool value);

  private:
  bool _internal_bias_broadcast() const;
  void _internal_set_bias_broadcast(bool value);

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


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

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using FusionKind = OneDnnFusionConfig_FusionKind;
  static constexpr FusionKind UNDEFINED = OneDnnFusionConfig_FusionKind_UNDEFINED;
  static constexpr FusionKind BIAS = OneDnnFusionConfig_FusionKind_BIAS;
  static constexpr FusionKind RELU = OneDnnFusionConfig_FusionKind_RELU;
  static constexpr FusionKind TANH = OneDnnFusionConfig_FusionKind_TANH;
  static constexpr FusionKind GELU_ERF = OneDnnFusionConfig_FusionKind_GELU_ERF;
  static constexpr FusionKind GELU_TANH = OneDnnFusionConfig_FusionKind_GELU_TANH;
  static constexpr FusionKind BINARY_ADD = OneDnnFusionConfig_FusionKind_BINARY_ADD;
  static constexpr FusionKind LINEAR = OneDnnFusionConfig_FusionKind_LINEAR;
  static constexpr FusionKind ELU = OneDnnFusionConfig_FusionKind_ELU;
  static constexpr FusionKind RELU6 = OneDnnFusionConfig_FusionKind_RELU6;
  static constexpr FusionKind SIGMOID = OneDnnFusionConfig_FusionKind_SIGMOID;
  static constexpr FusionKind SUM = OneDnnFusionConfig_FusionKind_SUM;
  static constexpr FusionKind SWISH = OneDnnFusionConfig_FusionKind_SWISH;
  static inline bool FusionKind_IsValid(int value) {
    return OneDnnFusionConfig_FusionKind_IsValid(value);
  }
  static constexpr FusionKind FusionKind_MIN = OneDnnFusionConfig_FusionKind_FusionKind_MIN;
  static constexpr FusionKind FusionKind_MAX = OneDnnFusionConfig_FusionKind_FusionKind_MAX;
  static constexpr int FusionKind_ARRAYSIZE = OneDnnFusionConfig_FusionKind_FusionKind_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* FusionKind_descriptor() {
    return OneDnnFusionConfig_FusionKind_descriptor();
  }
  template <typename T>
  static inline const std::string& FusionKind_Name(T value) {
    return OneDnnFusionConfig_FusionKind_Name(value);
  }
  static inline bool FusionKind_Parse(absl::string_view name, FusionKind* value) {
    return OneDnnFusionConfig_FusionKind_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kOpsFieldNumber = 1,
    kAlphaTypecastFieldNumber = 2,
  };
  // repeated .xla.cpu.OneDnnFusionConfig.FusionKind ops = 1;
  int ops_size() const;
  private:
  int _internal_ops_size() const;

  public:
  void clear_ops() ;
  public:
  ::xla::cpu::OneDnnFusionConfig_FusionKind ops(int index) const;
  void set_ops(int index, ::xla::cpu::OneDnnFusionConfig_FusionKind value);
  void add_ops(::xla::cpu::OneDnnFusionConfig_FusionKind value);
  const ::google::protobuf::RepeatedField<int>& ops() const;
  ::google::protobuf::RepeatedField<int>* mutable_ops();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_ops() const;
  ::google::protobuf::RepeatedField<int>* _internal_mutable_ops();

  public:
  // repeated int32 alpha_typecast = 2;
  int alpha_typecast_size() const;
  private:
  int _internal_alpha_typecast_size() const;

  public:
  void clear_alpha_typecast() ;
  ::int32_t alpha_typecast(int index) const;
  void set_alpha_typecast(int index, ::int32_t value);
  void add_alpha_typecast(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& alpha_typecast() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_alpha_typecast();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_alpha_typecast() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_alpha_typecast();

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnFusionConfig& from_msg);
    ::google::protobuf::RepeatedField<int> ops_;
    mutable ::google::protobuf::internal::CachedSize _ops_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> alpha_typecast_;
    mutable ::google::protobuf::internal::CachedSize _alpha_typecast_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OneDnnFilterLayoutProto(::google::protobuf::Arena* arena);
  OneDnnFilterLayoutProto(::google::protobuf::Arena* arena, const OneDnnFilterLayoutProto& from);
  OneDnnFilterLayoutProto(::google::protobuf::Arena* arena, OneDnnFilterLayoutProto&& from) noexcept
      : OneDnnFilterLayoutProto(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 {
    kSpatialDimsFieldNumber = 3,
    kShapeFieldNumber = 4,
    kInputFeatureDimFieldNumber = 1,
    kOutputFeatureDimFieldNumber = 2,
  };
  // repeated uint64 spatial_dims = 3;
  int spatial_dims_size() const;
  private:
  int _internal_spatial_dims_size() const;

  public:
  void clear_spatial_dims() ;
  ::uint64_t spatial_dims(int index) const;
  void set_spatial_dims(int index, ::uint64_t value);
  void add_spatial_dims(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& spatial_dims() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_spatial_dims();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_spatial_dims() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_spatial_dims();

  public:
  // repeated uint64 shape = 4;
  int shape_size() const;
  private:
  int _internal_shape_size() const;

  public:
  void clear_shape() ;
  ::uint64_t shape(int index) const;
  void set_shape(int index, ::uint64_t value);
  void add_shape(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& shape() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_shape();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_shape() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_shape();

  public:
  // uint64 input_feature_dim = 1;
  void clear_input_feature_dim() ;
  ::uint64_t input_feature_dim() const;
  void set_input_feature_dim(::uint64_t value);

  private:
  ::uint64_t _internal_input_feature_dim() const;
  void _internal_set_input_feature_dim(::uint64_t value);

  public:
  // uint64 output_feature_dim = 2;
  void clear_output_feature_dim() ;
  ::uint64_t output_feature_dim() const;
  void set_output_feature_dim(::uint64_t value);

  private:
  ::uint64_t _internal_output_feature_dim() const;
  void _internal_set_output_feature_dim(::uint64_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnFilterLayoutProto& from_msg);
    ::google::protobuf::RepeatedField<::uint64_t> spatial_dims_;
    mutable ::google::protobuf::internal::CachedSize _spatial_dims_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> shape_;
    mutable ::google::protobuf::internal::CachedSize _shape_cached_byte_size_;
    ::uint64_t input_feature_dim_;
    ::uint64_t output_feature_dim_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kDimensionsFieldNumber = 1,
    kShapeFieldNumber = 2,
  };
  // repeated uint64 dimensions = 1;
  int dimensions_size() const;
  private:
  int _internal_dimensions_size() const;

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

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

  public:
  // repeated uint64 shape = 2;
  int shape_size() const;
  private:
  int _internal_shape_size() const;

  public:
  void clear_shape() ;
  ::uint64_t shape(int index) const;
  void set_shape(int index, ::uint64_t value);
  void add_shape(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& shape() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_shape();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_shape() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_shape();

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnFactorLayoutProto& from_msg);
    ::google::protobuf::RepeatedField<::uint64_t> dimensions_;
    mutable ::google::protobuf::internal::CachedSize _dimensions_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint64_t> shape_;
    mutable ::google::protobuf::internal::CachedSize _shape_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OneDnnDataLayoutProto(::google::protobuf::Arena* arena);
  OneDnnDataLayoutProto(::google::protobuf::Arena* arena, const OneDnnDataLayoutProto& from);
  OneDnnDataLayoutProto(::google::protobuf::Arena* arena, OneDnnDataLayoutProto&& from) noexcept
      : OneDnnDataLayoutProto(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 {
    kSpatialDimsFieldNumber = 3,
    kBatchDimFieldNumber = 1,
    kFeatureDimFieldNumber = 2,
  };
  // repeated uint64 spatial_dims = 3;
  int spatial_dims_size() const;
  private:
  int _internal_spatial_dims_size() const;

  public:
  void clear_spatial_dims() ;
  ::uint64_t spatial_dims(int index) const;
  void set_spatial_dims(int index, ::uint64_t value);
  void add_spatial_dims(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& spatial_dims() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_spatial_dims();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_spatial_dims() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_spatial_dims();

  public:
  // uint64 batch_dim = 1;
  void clear_batch_dim() ;
  ::uint64_t batch_dim() const;
  void set_batch_dim(::uint64_t value);

  private:
  ::uint64_t _internal_batch_dim() const;
  void _internal_set_batch_dim(::uint64_t value);

  public:
  // uint64 feature_dim = 2;
  void clear_feature_dim() ;
  ::uint64_t feature_dim() const;
  void set_feature_dim(::uint64_t value);

  private:
  ::uint64_t _internal_feature_dim() const;
  void _internal_set_feature_dim(::uint64_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnDataLayoutProto& from_msg);
    ::google::protobuf::RepeatedField<::uint64_t> spatial_dims_;
    mutable ::google::protobuf::internal::CachedSize _spatial_dims_cached_byte_size_;
    ::uint64_t batch_dim_;
    ::uint64_t feature_dim_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

  inline OneDnnTensorLayoutProto(const OneDnnTensorLayoutProto& from) : OneDnnTensorLayoutProto(nullptr, from) {}
  inline OneDnnTensorLayoutProto(OneDnnTensorLayoutProto&& from) noexcept
      : OneDnnTensorLayoutProto(nullptr, std::move(from)) {}
  inline OneDnnTensorLayoutProto& operator=(const OneDnnTensorLayoutProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OneDnnTensorLayoutProto& operator=(OneDnnTensorLayoutProto&& 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 OneDnnTensorLayoutProto& default_instance() {
    return *internal_default_instance();
  }
  enum LayoutCase {
    kData = 2,
    kFilter = 3,
    kTensor = 4,
    LAYOUT_NOT_SET = 0,
  };
  static inline const OneDnnTensorLayoutProto* internal_default_instance() {
    return reinterpret_cast<const OneDnnTensorLayoutProto*>(
        &_OneDnnTensorLayoutProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(OneDnnTensorLayoutProto& a, OneDnnTensorLayoutProto& b) { a.Swap(&b); }
  inline void Swap(OneDnnTensorLayoutProto* 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(OneDnnTensorLayoutProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

 protected:
  explicit OneDnnTensorLayoutProto(::google::protobuf::Arena* arena);
  OneDnnTensorLayoutProto(::google::protobuf::Arena* arena, const OneDnnTensorLayoutProto& from);
  OneDnnTensorLayoutProto(::google::protobuf::Arena* arena, OneDnnTensorLayoutProto&& from) noexcept
      : OneDnnTensorLayoutProto(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 {
    kDimsFieldNumber = 1,
    kDataFieldNumber = 2,
    kFilterFieldNumber = 3,
    kTensorFieldNumber = 4,
  };
  // uint64 dims = 1;
  void clear_dims() ;
  ::uint64_t dims() const;
  void set_dims(::uint64_t value);

  private:
  ::uint64_t _internal_dims() const;
  void _internal_set_dims(::uint64_t value);

  public:
  // .xla.cpu.OneDnnDataLayoutProto data = 2;
  bool has_data() const;
  private:
  bool _internal_has_data() const;

  public:
  void clear_data() ;
  const ::xla::cpu::OneDnnDataLayoutProto& data() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnDataLayoutProto* release_data();
  ::xla::cpu::OneDnnDataLayoutProto* mutable_data();
  void set_allocated_data(::xla::cpu::OneDnnDataLayoutProto* value);
  void unsafe_arena_set_allocated_data(::xla::cpu::OneDnnDataLayoutProto* value);
  ::xla::cpu::OneDnnDataLayoutProto* unsafe_arena_release_data();

  private:
  const ::xla::cpu::OneDnnDataLayoutProto& _internal_data() const;
  ::xla::cpu::OneDnnDataLayoutProto* _internal_mutable_data();

  public:
  // .xla.cpu.OneDnnFilterLayoutProto filter = 3;
  bool has_filter() const;
  private:
  bool _internal_has_filter() const;

  public:
  void clear_filter() ;
  const ::xla::cpu::OneDnnFilterLayoutProto& filter() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnFilterLayoutProto* release_filter();
  ::xla::cpu::OneDnnFilterLayoutProto* mutable_filter();
  void set_allocated_filter(::xla::cpu::OneDnnFilterLayoutProto* value);
  void unsafe_arena_set_allocated_filter(::xla::cpu::OneDnnFilterLayoutProto* value);
  ::xla::cpu::OneDnnFilterLayoutProto* unsafe_arena_release_filter();

  private:
  const ::xla::cpu::OneDnnFilterLayoutProto& _internal_filter() const;
  ::xla::cpu::OneDnnFilterLayoutProto* _internal_mutable_filter();

  public:
  // .xla.cpu.OneDnnFactorLayoutProto tensor = 4;
  bool has_tensor() const;
  private:
  bool _internal_has_tensor() const;

  public:
  void clear_tensor() ;
  const ::xla::cpu::OneDnnFactorLayoutProto& tensor() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnFactorLayoutProto* release_tensor();
  ::xla::cpu::OneDnnFactorLayoutProto* mutable_tensor();
  void set_allocated_tensor(::xla::cpu::OneDnnFactorLayoutProto* value);
  void unsafe_arena_set_allocated_tensor(::xla::cpu::OneDnnFactorLayoutProto* value);
  ::xla::cpu::OneDnnFactorLayoutProto* unsafe_arena_release_tensor();

  private:
  const ::xla::cpu::OneDnnFactorLayoutProto& _internal_tensor() const;
  ::xla::cpu::OneDnnFactorLayoutProto* _internal_mutable_tensor();

  public:
  void clear_layout();
  LayoutCase layout_case() const;
  // @@protoc_insertion_point(class_scope:xla.cpu.OneDnnTensorLayoutProto)
 private:
  class _Internal;
  void set_has_data();
  void set_has_filter();
  void set_has_tensor();
  inline bool has_layout() const;
  inline void clear_has_layout();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 4, 3,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnTensorLayoutProto& from_msg);
    ::uint64_t dims_;
    union LayoutUnion {
      constexpr LayoutUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::xla::cpu::OneDnnDataLayoutProto* data_;
      ::xla::cpu::OneDnnFilterLayoutProto* filter_;
      ::xla::cpu::OneDnnFactorLayoutProto* tensor_;
    } layout_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using ScaleAndShift = OneDnnNormConfig_ScaleAndShift;
  static constexpr ScaleAndShift UNDEFINED = OneDnnNormConfig_ScaleAndShift_UNDEFINED;
  static constexpr ScaleAndShift SCALE = OneDnnNormConfig_ScaleAndShift_SCALE;
  static constexpr ScaleAndShift SHIFT = OneDnnNormConfig_ScaleAndShift_SHIFT;
  static constexpr ScaleAndShift SCALE_AND_SHIFT = OneDnnNormConfig_ScaleAndShift_SCALE_AND_SHIFT;
  static inline bool ScaleAndShift_IsValid(int value) {
    return OneDnnNormConfig_ScaleAndShift_IsValid(value);
  }
  static constexpr ScaleAndShift ScaleAndShift_MIN = OneDnnNormConfig_ScaleAndShift_ScaleAndShift_MIN;
  static constexpr ScaleAndShift ScaleAndShift_MAX = OneDnnNormConfig_ScaleAndShift_ScaleAndShift_MAX;
  static constexpr int ScaleAndShift_ARRAYSIZE = OneDnnNormConfig_ScaleAndShift_ScaleAndShift_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* ScaleAndShift_descriptor() {
    return OneDnnNormConfig_ScaleAndShift_descriptor();
  }
  template <typename T>
  static inline const std::string& ScaleAndShift_Name(T value) {
    return OneDnnNormConfig_ScaleAndShift_Name(value);
  }
  static inline bool ScaleAndShift_Parse(absl::string_view name, ScaleAndShift* value) {
    return OneDnnNormConfig_ScaleAndShift_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kFusionsFieldNumber = 3,
    kRescaleFieldNumber = 1,
    kEpsilonTypecastFieldNumber = 2,
  };
  // .xla.cpu.OneDnnFusionConfig fusions = 3;
  bool has_fusions() const;
  void clear_fusions() ;
  const ::xla::cpu::OneDnnFusionConfig& fusions() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnFusionConfig* release_fusions();
  ::xla::cpu::OneDnnFusionConfig* mutable_fusions();
  void set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  void unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  ::xla::cpu::OneDnnFusionConfig* unsafe_arena_release_fusions();

  private:
  const ::xla::cpu::OneDnnFusionConfig& _internal_fusions() const;
  ::xla::cpu::OneDnnFusionConfig* _internal_mutable_fusions();

  public:
  // .xla.cpu.OneDnnNormConfig.ScaleAndShift rescale = 1;
  void clear_rescale() ;
  ::xla::cpu::OneDnnNormConfig_ScaleAndShift rescale() const;
  void set_rescale(::xla::cpu::OneDnnNormConfig_ScaleAndShift value);

  private:
  ::xla::cpu::OneDnnNormConfig_ScaleAndShift _internal_rescale() const;
  void _internal_set_rescale(::xla::cpu::OneDnnNormConfig_ScaleAndShift value);

  public:
  // int32 epsilon_typecast = 2;
  void clear_epsilon_typecast() ;
  ::int32_t epsilon_typecast() const;
  void set_epsilon_typecast(::int32_t value);

  private:
  ::int32_t _internal_epsilon_typecast() const;
  void _internal_set_epsilon_typecast(::int32_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnNormConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::cpu::OneDnnFusionConfig* fusions_;
    int rescale_;
    ::int32_t epsilon_typecast_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OneDnnMatMulConfig(::google::protobuf::Arena* arena);
  OneDnnMatMulConfig(::google::protobuf::Arena* arena, const OneDnnMatMulConfig& from);
  OneDnnMatMulConfig(::google::protobuf::Arena* arena, OneDnnMatMulConfig&& from) noexcept
      : OneDnnMatMulConfig(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 {
    kFusionsFieldNumber = 3,
    kOptimizationConfigFieldNumber = 8,
    kLhsFieldNumber = 9,
    kRhsFieldNumber = 10,
    kResultFieldNumber = 11,
    kTransposeAFieldNumber = 1,
    kTransposeBFieldNumber = 2,
  };
  // .xla.cpu.OneDnnFusionConfig fusions = 3;
  bool has_fusions() const;
  void clear_fusions() ;
  const ::xla::cpu::OneDnnFusionConfig& fusions() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnFusionConfig* release_fusions();
  ::xla::cpu::OneDnnFusionConfig* mutable_fusions();
  void set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  void unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  ::xla::cpu::OneDnnFusionConfig* unsafe_arena_release_fusions();

  private:
  const ::xla::cpu::OneDnnFusionConfig& _internal_fusions() const;
  ::xla::cpu::OneDnnFusionConfig* _internal_mutable_fusions();

  public:
  // .xla.cpu.OneDnnOptimizationConfig optimization_config = 8;
  bool has_optimization_config() const;
  void clear_optimization_config() ;
  const ::xla::cpu::OneDnnOptimizationConfig& optimization_config() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnOptimizationConfig* release_optimization_config();
  ::xla::cpu::OneDnnOptimizationConfig* mutable_optimization_config();
  void set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value);
  void unsafe_arena_set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value);
  ::xla::cpu::OneDnnOptimizationConfig* unsafe_arena_release_optimization_config();

  private:
  const ::xla::cpu::OneDnnOptimizationConfig& _internal_optimization_config() const;
  ::xla::cpu::OneDnnOptimizationConfig* _internal_mutable_optimization_config();

  public:
  // .xla.cpu.OneDnnTensorLayoutProto lhs = 9;
  bool has_lhs() const;
  void clear_lhs() ;
  const ::xla::cpu::OneDnnTensorLayoutProto& lhs() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnTensorLayoutProto* release_lhs();
  ::xla::cpu::OneDnnTensorLayoutProto* mutable_lhs();
  void set_allocated_lhs(::xla::cpu::OneDnnTensorLayoutProto* value);
  void unsafe_arena_set_allocated_lhs(::xla::cpu::OneDnnTensorLayoutProto* value);
  ::xla::cpu::OneDnnTensorLayoutProto* unsafe_arena_release_lhs();

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_lhs() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_lhs();

  public:
  // .xla.cpu.OneDnnTensorLayoutProto rhs = 10;
  bool has_rhs() const;
  void clear_rhs() ;
  const ::xla::cpu::OneDnnTensorLayoutProto& rhs() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnTensorLayoutProto* release_rhs();
  ::xla::cpu::OneDnnTensorLayoutProto* mutable_rhs();
  void set_allocated_rhs(::xla::cpu::OneDnnTensorLayoutProto* value);
  void unsafe_arena_set_allocated_rhs(::xla::cpu::OneDnnTensorLayoutProto* value);
  ::xla::cpu::OneDnnTensorLayoutProto* unsafe_arena_release_rhs();

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_rhs() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_rhs();

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

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_result() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_result();

  public:
  // bool transpose_a = 1;
  void clear_transpose_a() ;
  bool transpose_a() const;
  void set_transpose_a(bool value);

  private:
  bool _internal_transpose_a() const;
  void _internal_set_transpose_a(bool value);

  public:
  // bool transpose_b = 2;
  void clear_transpose_b() ;
  bool transpose_b() const;
  void set_transpose_b(bool value);

  private:
  bool _internal_transpose_b() const;
  void _internal_set_transpose_b(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.cpu.OneDnnMatMulConfig)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 7, 5,
      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 OneDnnMatMulConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::cpu::OneDnnFusionConfig* fusions_;
    ::xla::cpu::OneDnnOptimizationConfig* optimization_config_;
    ::xla::cpu::OneDnnTensorLayoutProto* lhs_;
    ::xla::cpu::OneDnnTensorLayoutProto* rhs_;
    ::xla::cpu::OneDnnTensorLayoutProto* result_;
    bool transpose_a_;
    bool transpose_b_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OneDnnConvolutionConfig(::google::protobuf::Arena* arena);
  OneDnnConvolutionConfig(::google::protobuf::Arena* arena, const OneDnnConvolutionConfig& from);
  OneDnnConvolutionConfig(::google::protobuf::Arena* arena, OneDnnConvolutionConfig&& from) noexcept
      : OneDnnConvolutionConfig(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 {
    kInputFieldNumber = 2,
    kKernelFieldNumber = 3,
    kOutputFieldNumber = 4,
    kWindowFieldNumber = 5,
    kFusionsFieldNumber = 6,
    kOptimizationConfigFieldNumber = 8,
    kDimsFieldNumber = 1,
    kFeatureGroupsFieldNumber = 7,
  };
  // .xla.cpu.OneDnnTensorLayoutProto input = 2;
  bool has_input() const;
  void clear_input() ;
  const ::xla::cpu::OneDnnTensorLayoutProto& input() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnTensorLayoutProto* release_input();
  ::xla::cpu::OneDnnTensorLayoutProto* mutable_input();
  void set_allocated_input(::xla::cpu::OneDnnTensorLayoutProto* value);
  void unsafe_arena_set_allocated_input(::xla::cpu::OneDnnTensorLayoutProto* value);
  ::xla::cpu::OneDnnTensorLayoutProto* unsafe_arena_release_input();

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_input() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_input();

  public:
  // .xla.cpu.OneDnnTensorLayoutProto kernel = 3;
  bool has_kernel() const;
  void clear_kernel() ;
  const ::xla::cpu::OneDnnTensorLayoutProto& kernel() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnTensorLayoutProto* release_kernel();
  ::xla::cpu::OneDnnTensorLayoutProto* mutable_kernel();
  void set_allocated_kernel(::xla::cpu::OneDnnTensorLayoutProto* value);
  void unsafe_arena_set_allocated_kernel(::xla::cpu::OneDnnTensorLayoutProto* value);
  ::xla::cpu::OneDnnTensorLayoutProto* unsafe_arena_release_kernel();

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_kernel() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_kernel();

  public:
  // .xla.cpu.OneDnnTensorLayoutProto output = 4;
  bool has_output() const;
  void clear_output() ;
  const ::xla::cpu::OneDnnTensorLayoutProto& output() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnTensorLayoutProto* release_output();
  ::xla::cpu::OneDnnTensorLayoutProto* mutable_output();
  void set_allocated_output(::xla::cpu::OneDnnTensorLayoutProto* value);
  void unsafe_arena_set_allocated_output(::xla::cpu::OneDnnTensorLayoutProto* value);
  ::xla::cpu::OneDnnTensorLayoutProto* unsafe_arena_release_output();

  private:
  const ::xla::cpu::OneDnnTensorLayoutProto& _internal_output() const;
  ::xla::cpu::OneDnnTensorLayoutProto* _internal_mutable_output();

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

  private:
  const ::xla::cpu::OneDnnWindowProto& _internal_window() const;
  ::xla::cpu::OneDnnWindowProto* _internal_mutable_window();

  public:
  // .xla.cpu.OneDnnFusionConfig fusions = 6;
  bool has_fusions() const;
  void clear_fusions() ;
  const ::xla::cpu::OneDnnFusionConfig& fusions() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnFusionConfig* release_fusions();
  ::xla::cpu::OneDnnFusionConfig* mutable_fusions();
  void set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  void unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value);
  ::xla::cpu::OneDnnFusionConfig* unsafe_arena_release_fusions();

  private:
  const ::xla::cpu::OneDnnFusionConfig& _internal_fusions() const;
  ::xla::cpu::OneDnnFusionConfig* _internal_mutable_fusions();

  public:
  // .xla.cpu.OneDnnOptimizationConfig optimization_config = 8;
  bool has_optimization_config() const;
  void clear_optimization_config() ;
  const ::xla::cpu::OneDnnOptimizationConfig& optimization_config() const;
  PROTOBUF_NODISCARD ::xla::cpu::OneDnnOptimizationConfig* release_optimization_config();
  ::xla::cpu::OneDnnOptimizationConfig* mutable_optimization_config();
  void set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value);
  void unsafe_arena_set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value);
  ::xla::cpu::OneDnnOptimizationConfig* unsafe_arena_release_optimization_config();

  private:
  const ::xla::cpu::OneDnnOptimizationConfig& _internal_optimization_config() const;
  ::xla::cpu::OneDnnOptimizationConfig* _internal_mutable_optimization_config();

  public:
  // uint64 dims = 1;
  void clear_dims() ;
  ::uint64_t dims() const;
  void set_dims(::uint64_t value);

  private:
  ::uint64_t _internal_dims() const;
  void _internal_set_dims(::uint64_t value);

  public:
  // uint64 feature_groups = 7;
  void clear_feature_groups() ;
  ::uint64_t feature_groups() const;
  void set_feature_groups(::uint64_t value);

  private:
  ::uint64_t _internal_feature_groups() const;
  void _internal_set_feature_groups(::uint64_t value);

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


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const OneDnnConvolutionConfig& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::cpu::OneDnnTensorLayoutProto* input_;
    ::xla::cpu::OneDnnTensorLayoutProto* kernel_;
    ::xla::cpu::OneDnnTensorLayoutProto* output_;
    ::xla::cpu::OneDnnWindowProto* window_;
    ::xla::cpu::OneDnnFusionConfig* fusions_;
    ::xla::cpu::OneDnnOptimizationConfig* optimization_config_;
    ::uint64_t dims_;
    ::uint64_t feature_groups_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto;
};

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




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


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

// OneDnnDataLayoutProto

// uint64 batch_dim = 1;
inline void OneDnnDataLayoutProto::clear_batch_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_dim_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnDataLayoutProto::batch_dim() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnDataLayoutProto.batch_dim)
  return _internal_batch_dim();
}
inline void OneDnnDataLayoutProto::set_batch_dim(::uint64_t value) {
  _internal_set_batch_dim(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnDataLayoutProto.batch_dim)
}
inline ::uint64_t OneDnnDataLayoutProto::_internal_batch_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.batch_dim_;
}
inline void OneDnnDataLayoutProto::_internal_set_batch_dim(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_dim_ = value;
}

// uint64 feature_dim = 2;
inline void OneDnnDataLayoutProto::clear_feature_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_dim_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnDataLayoutProto::feature_dim() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnDataLayoutProto.feature_dim)
  return _internal_feature_dim();
}
inline void OneDnnDataLayoutProto::set_feature_dim(::uint64_t value) {
  _internal_set_feature_dim(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnDataLayoutProto.feature_dim)
}
inline ::uint64_t OneDnnDataLayoutProto::_internal_feature_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_dim_;
}
inline void OneDnnDataLayoutProto::_internal_set_feature_dim(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_dim_ = value;
}

// repeated uint64 spatial_dims = 3;
inline int OneDnnDataLayoutProto::_internal_spatial_dims_size() const {
  return _internal_spatial_dims().size();
}
inline int OneDnnDataLayoutProto::spatial_dims_size() const {
  return _internal_spatial_dims_size();
}
inline void OneDnnDataLayoutProto::clear_spatial_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.spatial_dims_.Clear();
}
inline ::uint64_t OneDnnDataLayoutProto::spatial_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnDataLayoutProto.spatial_dims)
  return _internal_spatial_dims().Get(index);
}
inline void OneDnnDataLayoutProto::set_spatial_dims(int index, ::uint64_t value) {
  _internal_mutable_spatial_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnDataLayoutProto.spatial_dims)
}
inline void OneDnnDataLayoutProto::add_spatial_dims(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_spatial_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnDataLayoutProto.spatial_dims)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnDataLayoutProto::spatial_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnDataLayoutProto.spatial_dims)
  return _internal_spatial_dims();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnDataLayoutProto::mutable_spatial_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnDataLayoutProto.spatial_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_spatial_dims();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnDataLayoutProto::_internal_spatial_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.spatial_dims_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnDataLayoutProto::_internal_mutable_spatial_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.spatial_dims_;
}

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

// OneDnnFilterLayoutProto

// uint64 input_feature_dim = 1;
inline void OneDnnFilterLayoutProto::clear_input_feature_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_feature_dim_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnFilterLayoutProto::input_feature_dim() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFilterLayoutProto.input_feature_dim)
  return _internal_input_feature_dim();
}
inline void OneDnnFilterLayoutProto::set_input_feature_dim(::uint64_t value) {
  _internal_set_input_feature_dim(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFilterLayoutProto.input_feature_dim)
}
inline ::uint64_t OneDnnFilterLayoutProto::_internal_input_feature_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_feature_dim_;
}
inline void OneDnnFilterLayoutProto::_internal_set_input_feature_dim(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_feature_dim_ = value;
}

// uint64 output_feature_dim = 2;
inline void OneDnnFilterLayoutProto::clear_output_feature_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_feature_dim_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnFilterLayoutProto::output_feature_dim() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFilterLayoutProto.output_feature_dim)
  return _internal_output_feature_dim();
}
inline void OneDnnFilterLayoutProto::set_output_feature_dim(::uint64_t value) {
  _internal_set_output_feature_dim(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFilterLayoutProto.output_feature_dim)
}
inline ::uint64_t OneDnnFilterLayoutProto::_internal_output_feature_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_feature_dim_;
}
inline void OneDnnFilterLayoutProto::_internal_set_output_feature_dim(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_feature_dim_ = value;
}

// repeated uint64 spatial_dims = 3;
inline int OneDnnFilterLayoutProto::_internal_spatial_dims_size() const {
  return _internal_spatial_dims().size();
}
inline int OneDnnFilterLayoutProto::spatial_dims_size() const {
  return _internal_spatial_dims_size();
}
inline void OneDnnFilterLayoutProto::clear_spatial_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.spatial_dims_.Clear();
}
inline ::uint64_t OneDnnFilterLayoutProto::spatial_dims(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFilterLayoutProto.spatial_dims)
  return _internal_spatial_dims().Get(index);
}
inline void OneDnnFilterLayoutProto::set_spatial_dims(int index, ::uint64_t value) {
  _internal_mutable_spatial_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFilterLayoutProto.spatial_dims)
}
inline void OneDnnFilterLayoutProto::add_spatial_dims(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_spatial_dims()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnFilterLayoutProto.spatial_dims)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnFilterLayoutProto::spatial_dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnFilterLayoutProto.spatial_dims)
  return _internal_spatial_dims();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFilterLayoutProto::mutable_spatial_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnFilterLayoutProto.spatial_dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_spatial_dims();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnFilterLayoutProto::_internal_spatial_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.spatial_dims_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFilterLayoutProto::_internal_mutable_spatial_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.spatial_dims_;
}

// repeated uint64 shape = 4;
inline int OneDnnFilterLayoutProto::_internal_shape_size() const {
  return _internal_shape().size();
}
inline int OneDnnFilterLayoutProto::shape_size() const {
  return _internal_shape_size();
}
inline void OneDnnFilterLayoutProto::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_.Clear();
}
inline ::uint64_t OneDnnFilterLayoutProto::shape(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFilterLayoutProto.shape)
  return _internal_shape().Get(index);
}
inline void OneDnnFilterLayoutProto::set_shape(int index, ::uint64_t value) {
  _internal_mutable_shape()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFilterLayoutProto.shape)
}
inline void OneDnnFilterLayoutProto::add_shape(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnFilterLayoutProto.shape)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnFilterLayoutProto::shape() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnFilterLayoutProto.shape)
  return _internal_shape();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFilterLayoutProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnFilterLayoutProto.shape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnFilterLayoutProto::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFilterLayoutProto::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_;
}

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

// OneDnnFactorLayoutProto

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

// repeated uint64 shape = 2;
inline int OneDnnFactorLayoutProto::_internal_shape_size() const {
  return _internal_shape().size();
}
inline int OneDnnFactorLayoutProto::shape_size() const {
  return _internal_shape_size();
}
inline void OneDnnFactorLayoutProto::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_.Clear();
}
inline ::uint64_t OneDnnFactorLayoutProto::shape(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFactorLayoutProto.shape)
  return _internal_shape().Get(index);
}
inline void OneDnnFactorLayoutProto::set_shape(int index, ::uint64_t value) {
  _internal_mutable_shape()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFactorLayoutProto.shape)
}
inline void OneDnnFactorLayoutProto::add_shape(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnFactorLayoutProto.shape)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnFactorLayoutProto::shape() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnFactorLayoutProto.shape)
  return _internal_shape();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFactorLayoutProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnFactorLayoutProto.shape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnFactorLayoutProto::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnFactorLayoutProto::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_;
}

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

// OneDnnOptimizationConfig

// bool weights_prepacked = 1;
inline void OneDnnOptimizationConfig::clear_weights_prepacked() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weights_prepacked_ = false;
}
inline bool OneDnnOptimizationConfig::weights_prepacked() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnOptimizationConfig.weights_prepacked)
  return _internal_weights_prepacked();
}
inline void OneDnnOptimizationConfig::set_weights_prepacked(bool value) {
  _internal_set_weights_prepacked(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnOptimizationConfig.weights_prepacked)
}
inline bool OneDnnOptimizationConfig::_internal_weights_prepacked() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weights_prepacked_;
}
inline void OneDnnOptimizationConfig::_internal_set_weights_prepacked(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weights_prepacked_ = value;
}

// bool user_scratchpad = 2;
inline void OneDnnOptimizationConfig::clear_user_scratchpad() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_scratchpad_ = false;
}
inline bool OneDnnOptimizationConfig::user_scratchpad() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnOptimizationConfig.user_scratchpad)
  return _internal_user_scratchpad();
}
inline void OneDnnOptimizationConfig::set_user_scratchpad(bool value) {
  _internal_set_user_scratchpad(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnOptimizationConfig.user_scratchpad)
}
inline bool OneDnnOptimizationConfig::_internal_user_scratchpad() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.user_scratchpad_;
}
inline void OneDnnOptimizationConfig::_internal_set_user_scratchpad(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_scratchpad_ = value;
}

// bool bias_broadcast = 3;
inline void OneDnnOptimizationConfig::clear_bias_broadcast() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bias_broadcast_ = false;
}
inline bool OneDnnOptimizationConfig::bias_broadcast() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnOptimizationConfig.bias_broadcast)
  return _internal_bias_broadcast();
}
inline void OneDnnOptimizationConfig::set_bias_broadcast(bool value) {
  _internal_set_bias_broadcast(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnOptimizationConfig.bias_broadcast)
}
inline bool OneDnnOptimizationConfig::_internal_bias_broadcast() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bias_broadcast_;
}
inline void OneDnnOptimizationConfig::_internal_set_bias_broadcast(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bias_broadcast_ = value;
}

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

// OneDnnFusionConfig

// repeated .xla.cpu.OneDnnFusionConfig.FusionKind ops = 1;
inline int OneDnnFusionConfig::_internal_ops_size() const {
  return _internal_ops().size();
}
inline int OneDnnFusionConfig::ops_size() const {
  return _internal_ops_size();
}
inline void OneDnnFusionConfig::clear_ops() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ops_.Clear();
}
inline ::xla::cpu::OneDnnFusionConfig_FusionKind OneDnnFusionConfig::ops(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFusionConfig.ops)
  return static_cast<::xla::cpu::OneDnnFusionConfig_FusionKind>(_internal_ops().Get(index));
}
inline void OneDnnFusionConfig::set_ops(int index, ::xla::cpu::OneDnnFusionConfig_FusionKind value) {
  _internal_mutable_ops()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFusionConfig.ops)
}
inline void OneDnnFusionConfig::add_ops(::xla::cpu::OneDnnFusionConfig_FusionKind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_ops()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnFusionConfig.ops)
}
inline const ::google::protobuf::RepeatedField<int>& OneDnnFusionConfig::ops() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnFusionConfig.ops)
  return _internal_ops();
}
inline ::google::protobuf::RepeatedField<int>* OneDnnFusionConfig::mutable_ops()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnFusionConfig.ops)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ops();
}
inline const ::google::protobuf::RepeatedField<int>& OneDnnFusionConfig::_internal_ops()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ops_;
}
inline ::google::protobuf::RepeatedField<int>* OneDnnFusionConfig::_internal_mutable_ops() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ops_;
}

// repeated int32 alpha_typecast = 2;
inline int OneDnnFusionConfig::_internal_alpha_typecast_size() const {
  return _internal_alpha_typecast().size();
}
inline int OneDnnFusionConfig::alpha_typecast_size() const {
  return _internal_alpha_typecast_size();
}
inline void OneDnnFusionConfig::clear_alpha_typecast() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.alpha_typecast_.Clear();
}
inline ::int32_t OneDnnFusionConfig::alpha_typecast(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnFusionConfig.alpha_typecast)
  return _internal_alpha_typecast().Get(index);
}
inline void OneDnnFusionConfig::set_alpha_typecast(int index, ::int32_t value) {
  _internal_mutable_alpha_typecast()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnFusionConfig.alpha_typecast)
}
inline void OneDnnFusionConfig::add_alpha_typecast(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_alpha_typecast()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnFusionConfig.alpha_typecast)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& OneDnnFusionConfig::alpha_typecast() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnFusionConfig.alpha_typecast)
  return _internal_alpha_typecast();
}
inline ::google::protobuf::RepeatedField<::int32_t>* OneDnnFusionConfig::mutable_alpha_typecast()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnFusionConfig.alpha_typecast)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_alpha_typecast();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
OneDnnFusionConfig::_internal_alpha_typecast() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.alpha_typecast_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* OneDnnFusionConfig::_internal_mutable_alpha_typecast() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.alpha_typecast_;
}

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

// OneDnnTensorLayoutProto

// uint64 dims = 1;
inline void OneDnnTensorLayoutProto::clear_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dims_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnTensorLayoutProto::dims() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnTensorLayoutProto.dims)
  return _internal_dims();
}
inline void OneDnnTensorLayoutProto::set_dims(::uint64_t value) {
  _internal_set_dims(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnTensorLayoutProto.dims)
}
inline ::uint64_t OneDnnTensorLayoutProto::_internal_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dims_;
}
inline void OneDnnTensorLayoutProto::_internal_set_dims(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dims_ = value;
}

// .xla.cpu.OneDnnDataLayoutProto data = 2;
inline bool OneDnnTensorLayoutProto::has_data() const {
  return layout_case() == kData;
}
inline bool OneDnnTensorLayoutProto::_internal_has_data() const {
  return layout_case() == kData;
}
inline void OneDnnTensorLayoutProto::set_has_data() {
  _impl_._oneof_case_[0] = kData;
}
inline void OneDnnTensorLayoutProto::clear_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (layout_case() == kData) {
    if (GetArena() == nullptr) {
      delete _impl_.layout_.data_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.layout_.data_);
    }
    clear_has_layout();
  }
}
inline ::xla::cpu::OneDnnDataLayoutProto* OneDnnTensorLayoutProto::release_data() {
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnTensorLayoutProto.data)
  if (layout_case() == kData) {
    clear_has_layout();
    auto* temp = _impl_.layout_.data_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.layout_.data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::cpu::OneDnnDataLayoutProto& OneDnnTensorLayoutProto::_internal_data() const {
  return layout_case() == kData ? *_impl_.layout_.data_ : reinterpret_cast<::xla::cpu::OneDnnDataLayoutProto&>(::xla::cpu::_OneDnnDataLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnDataLayoutProto& OneDnnTensorLayoutProto::data() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnTensorLayoutProto.data)
  return _internal_data();
}
inline ::xla::cpu::OneDnnDataLayoutProto* OneDnnTensorLayoutProto::unsafe_arena_release_data() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.cpu.OneDnnTensorLayoutProto.data)
  if (layout_case() == kData) {
    clear_has_layout();
    auto* temp = _impl_.layout_.data_;
    _impl_.layout_.data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void OneDnnTensorLayoutProto::unsafe_arena_set_allocated_data(::xla::cpu::OneDnnDataLayoutProto* value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_layout();
  if (value) {
    set_has_data();
    _impl_.layout_.data_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnTensorLayoutProto.data)
}
inline ::xla::cpu::OneDnnDataLayoutProto* OneDnnTensorLayoutProto::_internal_mutable_data() {
  if (layout_case() != kData) {
    clear_layout();
    set_has_data();
    _impl_.layout_.data_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnDataLayoutProto>(GetArena());
  }
  return _impl_.layout_.data_;
}
inline ::xla::cpu::OneDnnDataLayoutProto* OneDnnTensorLayoutProto::mutable_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::cpu::OneDnnDataLayoutProto* _msg = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnTensorLayoutProto.data)
  return _msg;
}

// .xla.cpu.OneDnnFilterLayoutProto filter = 3;
inline bool OneDnnTensorLayoutProto::has_filter() const {
  return layout_case() == kFilter;
}
inline bool OneDnnTensorLayoutProto::_internal_has_filter() const {
  return layout_case() == kFilter;
}
inline void OneDnnTensorLayoutProto::set_has_filter() {
  _impl_._oneof_case_[0] = kFilter;
}
inline void OneDnnTensorLayoutProto::clear_filter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (layout_case() == kFilter) {
    if (GetArena() == nullptr) {
      delete _impl_.layout_.filter_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.layout_.filter_);
    }
    clear_has_layout();
  }
}
inline ::xla::cpu::OneDnnFilterLayoutProto* OneDnnTensorLayoutProto::release_filter() {
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnTensorLayoutProto.filter)
  if (layout_case() == kFilter) {
    clear_has_layout();
    auto* temp = _impl_.layout_.filter_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.layout_.filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::cpu::OneDnnFilterLayoutProto& OneDnnTensorLayoutProto::_internal_filter() const {
  return layout_case() == kFilter ? *_impl_.layout_.filter_ : reinterpret_cast<::xla::cpu::OneDnnFilterLayoutProto&>(::xla::cpu::_OneDnnFilterLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnFilterLayoutProto& OneDnnTensorLayoutProto::filter() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnTensorLayoutProto.filter)
  return _internal_filter();
}
inline ::xla::cpu::OneDnnFilterLayoutProto* OneDnnTensorLayoutProto::unsafe_arena_release_filter() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.cpu.OneDnnTensorLayoutProto.filter)
  if (layout_case() == kFilter) {
    clear_has_layout();
    auto* temp = _impl_.layout_.filter_;
    _impl_.layout_.filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void OneDnnTensorLayoutProto::unsafe_arena_set_allocated_filter(::xla::cpu::OneDnnFilterLayoutProto* value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_layout();
  if (value) {
    set_has_filter();
    _impl_.layout_.filter_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnTensorLayoutProto.filter)
}
inline ::xla::cpu::OneDnnFilterLayoutProto* OneDnnTensorLayoutProto::_internal_mutable_filter() {
  if (layout_case() != kFilter) {
    clear_layout();
    set_has_filter();
    _impl_.layout_.filter_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnFilterLayoutProto>(GetArena());
  }
  return _impl_.layout_.filter_;
}
inline ::xla::cpu::OneDnnFilterLayoutProto* OneDnnTensorLayoutProto::mutable_filter() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::cpu::OneDnnFilterLayoutProto* _msg = _internal_mutable_filter();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnTensorLayoutProto.filter)
  return _msg;
}

// .xla.cpu.OneDnnFactorLayoutProto tensor = 4;
inline bool OneDnnTensorLayoutProto::has_tensor() const {
  return layout_case() == kTensor;
}
inline bool OneDnnTensorLayoutProto::_internal_has_tensor() const {
  return layout_case() == kTensor;
}
inline void OneDnnTensorLayoutProto::set_has_tensor() {
  _impl_._oneof_case_[0] = kTensor;
}
inline void OneDnnTensorLayoutProto::clear_tensor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (layout_case() == kTensor) {
    if (GetArena() == nullptr) {
      delete _impl_.layout_.tensor_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.layout_.tensor_);
    }
    clear_has_layout();
  }
}
inline ::xla::cpu::OneDnnFactorLayoutProto* OneDnnTensorLayoutProto::release_tensor() {
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnTensorLayoutProto.tensor)
  if (layout_case() == kTensor) {
    clear_has_layout();
    auto* temp = _impl_.layout_.tensor_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.layout_.tensor_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::cpu::OneDnnFactorLayoutProto& OneDnnTensorLayoutProto::_internal_tensor() const {
  return layout_case() == kTensor ? *_impl_.layout_.tensor_ : reinterpret_cast<::xla::cpu::OneDnnFactorLayoutProto&>(::xla::cpu::_OneDnnFactorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnFactorLayoutProto& OneDnnTensorLayoutProto::tensor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnTensorLayoutProto.tensor)
  return _internal_tensor();
}
inline ::xla::cpu::OneDnnFactorLayoutProto* OneDnnTensorLayoutProto::unsafe_arena_release_tensor() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.cpu.OneDnnTensorLayoutProto.tensor)
  if (layout_case() == kTensor) {
    clear_has_layout();
    auto* temp = _impl_.layout_.tensor_;
    _impl_.layout_.tensor_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void OneDnnTensorLayoutProto::unsafe_arena_set_allocated_tensor(::xla::cpu::OneDnnFactorLayoutProto* value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_layout();
  if (value) {
    set_has_tensor();
    _impl_.layout_.tensor_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnTensorLayoutProto.tensor)
}
inline ::xla::cpu::OneDnnFactorLayoutProto* OneDnnTensorLayoutProto::_internal_mutable_tensor() {
  if (layout_case() != kTensor) {
    clear_layout();
    set_has_tensor();
    _impl_.layout_.tensor_ =
        ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnFactorLayoutProto>(GetArena());
  }
  return _impl_.layout_.tensor_;
}
inline ::xla::cpu::OneDnnFactorLayoutProto* OneDnnTensorLayoutProto::mutable_tensor() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::cpu::OneDnnFactorLayoutProto* _msg = _internal_mutable_tensor();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnTensorLayoutProto.tensor)
  return _msg;
}

inline bool OneDnnTensorLayoutProto::has_layout() const {
  return layout_case() != LAYOUT_NOT_SET;
}
inline void OneDnnTensorLayoutProto::clear_has_layout() {
  _impl_._oneof_case_[0] = LAYOUT_NOT_SET;
}
inline OneDnnTensorLayoutProto::LayoutCase OneDnnTensorLayoutProto::layout_case() const {
  return OneDnnTensorLayoutProto::LayoutCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// OneDnnSoftmaxConfig

// int32 softmax_axis = 1;
inline void OneDnnSoftmaxConfig::clear_softmax_axis() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.softmax_axis_ = 0;
}
inline ::int32_t OneDnnSoftmaxConfig::softmax_axis() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnSoftmaxConfig.softmax_axis)
  return _internal_softmax_axis();
}
inline void OneDnnSoftmaxConfig::set_softmax_axis(::int32_t value) {
  _internal_set_softmax_axis(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnSoftmaxConfig.softmax_axis)
}
inline ::int32_t OneDnnSoftmaxConfig::_internal_softmax_axis() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.softmax_axis_;
}
inline void OneDnnSoftmaxConfig::_internal_set_softmax_axis(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.softmax_axis_ = value;
}

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

// OneDnnMatMulConfig

// bool transpose_a = 1;
inline void OneDnnMatMulConfig::clear_transpose_a() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_a_ = false;
}
inline bool OneDnnMatMulConfig::transpose_a() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.transpose_a)
  return _internal_transpose_a();
}
inline void OneDnnMatMulConfig::set_transpose_a(bool value) {
  _internal_set_transpose_a(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnMatMulConfig.transpose_a)
}
inline bool OneDnnMatMulConfig::_internal_transpose_a() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transpose_a_;
}
inline void OneDnnMatMulConfig::_internal_set_transpose_a(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_a_ = value;
}

// bool transpose_b = 2;
inline void OneDnnMatMulConfig::clear_transpose_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_b_ = false;
}
inline bool OneDnnMatMulConfig::transpose_b() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.transpose_b)
  return _internal_transpose_b();
}
inline void OneDnnMatMulConfig::set_transpose_b(bool value) {
  _internal_set_transpose_b(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnMatMulConfig.transpose_b)
}
inline bool OneDnnMatMulConfig::_internal_transpose_b() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transpose_b_;
}
inline void OneDnnMatMulConfig::_internal_set_transpose_b(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transpose_b_ = value;
}

// .xla.cpu.OneDnnFusionConfig fusions = 3;
inline bool OneDnnMatMulConfig::has_fusions() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.fusions_ != nullptr);
  return value;
}
inline void OneDnnMatMulConfig::clear_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ != nullptr) _impl_.fusions_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnMatMulConfig::_internal_fusions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnFusionConfig* p = _impl_.fusions_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnFusionConfig&>(::xla::cpu::_OneDnnFusionConfig_default_instance_);
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnMatMulConfig::fusions() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.fusions)
  return _internal_fusions();
}
inline void OneDnnMatMulConfig::unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fusions_);
  }
  _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnMatMulConfig.fusions)
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnMatMulConfig::release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* released = _impl_.fusions_;
  _impl_.fusions_ = 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::cpu::OneDnnFusionConfig* OneDnnMatMulConfig::unsafe_arena_release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnMatMulConfig.fusions)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* temp = _impl_.fusions_;
  _impl_.fusions_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnMatMulConfig::_internal_mutable_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnFusionConfig>(GetArena());
    _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(p);
  }
  return _impl_.fusions_;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnMatMulConfig::mutable_fusions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* _msg = _internal_mutable_fusions();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnMatMulConfig.fusions)
  return _msg;
}
inline void OneDnnMatMulConfig::set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.fusions_);
  }

  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_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnMatMulConfig.fusions)
}

// .xla.cpu.OneDnnOptimizationConfig optimization_config = 8;
inline bool OneDnnMatMulConfig::has_optimization_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.optimization_config_ != nullptr);
  return value;
}
inline void OneDnnMatMulConfig::clear_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.optimization_config_ != nullptr) _impl_.optimization_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::cpu::OneDnnOptimizationConfig& OneDnnMatMulConfig::_internal_optimization_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnOptimizationConfig* p = _impl_.optimization_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnOptimizationConfig&>(::xla::cpu::_OneDnnOptimizationConfig_default_instance_);
}
inline const ::xla::cpu::OneDnnOptimizationConfig& OneDnnMatMulConfig::optimization_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.optimization_config)
  return _internal_optimization_config();
}
inline void OneDnnMatMulConfig::unsafe_arena_set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.optimization_config_);
  }
  _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnMatMulConfig.optimization_config)
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnMatMulConfig::release_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::cpu::OneDnnOptimizationConfig* temp = _impl_.optimization_config_;
  _impl_.optimization_config_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnMatMulConfig::_internal_mutable_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.optimization_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnOptimizationConfig>(GetArena());
    _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(p);
  }
  return _impl_.optimization_config_;
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnMatMulConfig::mutable_optimization_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::cpu::OneDnnOptimizationConfig* _msg = _internal_mutable_optimization_config();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnMatMulConfig.optimization_config)
  return _msg;
}
inline void OneDnnMatMulConfig::set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.optimization_config_);
  }

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

  _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnMatMulConfig.optimization_config)
}

// .xla.cpu.OneDnnTensorLayoutProto lhs = 9;
inline bool OneDnnMatMulConfig::has_lhs() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.lhs_ != nullptr);
  return value;
}
inline void OneDnnMatMulConfig::clear_lhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.lhs_ != nullptr) _impl_.lhs_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::_internal_lhs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.lhs_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::lhs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.lhs)
  return _internal_lhs();
}
inline void OneDnnMatMulConfig::unsafe_arena_set_allocated_lhs(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lhs_);
  }
  _impl_.lhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnMatMulConfig.lhs)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::release_lhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.lhs_;
  _impl_.lhs_ = 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::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::unsafe_arena_release_lhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnMatMulConfig.lhs)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.lhs_;
  _impl_.lhs_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::_internal_mutable_lhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.lhs_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.lhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.lhs_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::mutable_lhs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_lhs();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnMatMulConfig.lhs)
  return _msg;
}
inline void OneDnnMatMulConfig::set_allocated_lhs(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.lhs_);
  }

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

  _impl_.lhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnMatMulConfig.lhs)
}

// .xla.cpu.OneDnnTensorLayoutProto rhs = 10;
inline bool OneDnnMatMulConfig::has_rhs() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.rhs_ != nullptr);
  return value;
}
inline void OneDnnMatMulConfig::clear_rhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rhs_ != nullptr) _impl_.rhs_->Clear();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::_internal_rhs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.rhs_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::rhs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.rhs)
  return _internal_rhs();
}
inline void OneDnnMatMulConfig::unsafe_arena_set_allocated_rhs(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rhs_);
  }
  _impl_.rhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnMatMulConfig.rhs)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::release_rhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.rhs_;
  _impl_.rhs_ = 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::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::unsafe_arena_release_rhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnMatMulConfig.rhs)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.rhs_;
  _impl_.rhs_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::_internal_mutable_rhs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rhs_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.rhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.rhs_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::mutable_rhs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_rhs();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnMatMulConfig.rhs)
  return _msg;
}
inline void OneDnnMatMulConfig::set_allocated_rhs(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.rhs_);
  }

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

  _impl_.rhs_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnMatMulConfig.rhs)
}

// .xla.cpu.OneDnnTensorLayoutProto result = 11;
inline bool OneDnnMatMulConfig::has_result() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_ != nullptr);
  return value;
}
inline void OneDnnMatMulConfig::clear_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_ != nullptr) _impl_.result_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::_internal_result() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.result_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnMatMulConfig::result() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnMatMulConfig.result)
  return _internal_result();
}
inline void OneDnnMatMulConfig::unsafe_arena_set_allocated_result(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }
  _impl_.result_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnMatMulConfig.result)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.result_;
  _impl_.result_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::unsafe_arena_release_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnMatMulConfig.result)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.result_;
  _impl_.result_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::_internal_mutable_result() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.result_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.result_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.result_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnMatMulConfig::mutable_result() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_result();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnMatMulConfig.result)
  return _msg;
}
inline void OneDnnMatMulConfig::set_allocated_result(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.result_);
  }

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

  _impl_.result_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnMatMulConfig.result)
}

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

// OneDnnWindowProto

// repeated uint64 size = 1;
inline int OneDnnWindowProto::_internal_size_size() const {
  return _internal_size().size();
}
inline int OneDnnWindowProto::size_size() const {
  return _internal_size_size();
}
inline void OneDnnWindowProto::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_.Clear();
}
inline ::uint64_t OneDnnWindowProto::size(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnWindowProto.size)
  return _internal_size().Get(index);
}
inline void OneDnnWindowProto::set_size(int index, ::uint64_t value) {
  _internal_mutable_size()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnWindowProto.size)
}
inline void OneDnnWindowProto::add_size(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_size()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnWindowProto.size)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnWindowProto::size() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnWindowProto.size)
  return _internal_size();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::mutable_size()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnWindowProto.size)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_size();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnWindowProto::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::_internal_mutable_size() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.size_;
}

// repeated uint64 pad_left = 2;
inline int OneDnnWindowProto::_internal_pad_left_size() const {
  return _internal_pad_left().size();
}
inline int OneDnnWindowProto::pad_left_size() const {
  return _internal_pad_left_size();
}
inline void OneDnnWindowProto::clear_pad_left() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pad_left_.Clear();
}
inline ::uint64_t OneDnnWindowProto::pad_left(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnWindowProto.pad_left)
  return _internal_pad_left().Get(index);
}
inline void OneDnnWindowProto::set_pad_left(int index, ::uint64_t value) {
  _internal_mutable_pad_left()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnWindowProto.pad_left)
}
inline void OneDnnWindowProto::add_pad_left(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_pad_left()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnWindowProto.pad_left)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnWindowProto::pad_left() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnWindowProto.pad_left)
  return _internal_pad_left();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::mutable_pad_left()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnWindowProto.pad_left)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_pad_left();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnWindowProto::_internal_pad_left() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pad_left_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::_internal_mutable_pad_left() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.pad_left_;
}

// repeated uint64 pad_right = 3;
inline int OneDnnWindowProto::_internal_pad_right_size() const {
  return _internal_pad_right().size();
}
inline int OneDnnWindowProto::pad_right_size() const {
  return _internal_pad_right_size();
}
inline void OneDnnWindowProto::clear_pad_right() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pad_right_.Clear();
}
inline ::uint64_t OneDnnWindowProto::pad_right(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnWindowProto.pad_right)
  return _internal_pad_right().Get(index);
}
inline void OneDnnWindowProto::set_pad_right(int index, ::uint64_t value) {
  _internal_mutable_pad_right()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnWindowProto.pad_right)
}
inline void OneDnnWindowProto::add_pad_right(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_pad_right()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnWindowProto.pad_right)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnWindowProto::pad_right() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnWindowProto.pad_right)
  return _internal_pad_right();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::mutable_pad_right()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnWindowProto.pad_right)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_pad_right();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnWindowProto::_internal_pad_right() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pad_right_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::_internal_mutable_pad_right() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.pad_right_;
}

// repeated uint64 strides = 4;
inline int OneDnnWindowProto::_internal_strides_size() const {
  return _internal_strides().size();
}
inline int OneDnnWindowProto::strides_size() const {
  return _internal_strides_size();
}
inline void OneDnnWindowProto::clear_strides() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.strides_.Clear();
}
inline ::uint64_t OneDnnWindowProto::strides(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnWindowProto.strides)
  return _internal_strides().Get(index);
}
inline void OneDnnWindowProto::set_strides(int index, ::uint64_t value) {
  _internal_mutable_strides()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnWindowProto.strides)
}
inline void OneDnnWindowProto::add_strides(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_strides()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnWindowProto.strides)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnWindowProto::strides() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnWindowProto.strides)
  return _internal_strides();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::mutable_strides()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnWindowProto.strides)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_strides();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnWindowProto::_internal_strides() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.strides_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::_internal_mutable_strides() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.strides_;
}

// repeated uint64 window_dilations = 5;
inline int OneDnnWindowProto::_internal_window_dilations_size() const {
  return _internal_window_dilations().size();
}
inline int OneDnnWindowProto::window_dilations_size() const {
  return _internal_window_dilations_size();
}
inline void OneDnnWindowProto::clear_window_dilations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.window_dilations_.Clear();
}
inline ::uint64_t OneDnnWindowProto::window_dilations(int index) const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnWindowProto.window_dilations)
  return _internal_window_dilations().Get(index);
}
inline void OneDnnWindowProto::set_window_dilations(int index, ::uint64_t value) {
  _internal_mutable_window_dilations()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnWindowProto.window_dilations)
}
inline void OneDnnWindowProto::add_window_dilations(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_window_dilations()->Add(value);
  // @@protoc_insertion_point(field_add:xla.cpu.OneDnnWindowProto.window_dilations)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& OneDnnWindowProto::window_dilations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.cpu.OneDnnWindowProto.window_dilations)
  return _internal_window_dilations();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::mutable_window_dilations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.cpu.OneDnnWindowProto.window_dilations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_window_dilations();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
OneDnnWindowProto::_internal_window_dilations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.window_dilations_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* OneDnnWindowProto::_internal_mutable_window_dilations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.window_dilations_;
}

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

// OneDnnNormConfig

// .xla.cpu.OneDnnNormConfig.ScaleAndShift rescale = 1;
inline void OneDnnNormConfig::clear_rescale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rescale_ = 0;
}
inline ::xla::cpu::OneDnnNormConfig_ScaleAndShift OneDnnNormConfig::rescale() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnNormConfig.rescale)
  return _internal_rescale();
}
inline void OneDnnNormConfig::set_rescale(::xla::cpu::OneDnnNormConfig_ScaleAndShift value) {
  _internal_set_rescale(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnNormConfig.rescale)
}
inline ::xla::cpu::OneDnnNormConfig_ScaleAndShift OneDnnNormConfig::_internal_rescale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::cpu::OneDnnNormConfig_ScaleAndShift>(_impl_.rescale_);
}
inline void OneDnnNormConfig::_internal_set_rescale(::xla::cpu::OneDnnNormConfig_ScaleAndShift value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rescale_ = value;
}

// int32 epsilon_typecast = 2;
inline void OneDnnNormConfig::clear_epsilon_typecast() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epsilon_typecast_ = 0;
}
inline ::int32_t OneDnnNormConfig::epsilon_typecast() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnNormConfig.epsilon_typecast)
  return _internal_epsilon_typecast();
}
inline void OneDnnNormConfig::set_epsilon_typecast(::int32_t value) {
  _internal_set_epsilon_typecast(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnNormConfig.epsilon_typecast)
}
inline ::int32_t OneDnnNormConfig::_internal_epsilon_typecast() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.epsilon_typecast_;
}
inline void OneDnnNormConfig::_internal_set_epsilon_typecast(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epsilon_typecast_ = value;
}

// .xla.cpu.OneDnnFusionConfig fusions = 3;
inline bool OneDnnNormConfig::has_fusions() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.fusions_ != nullptr);
  return value;
}
inline void OneDnnNormConfig::clear_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ != nullptr) _impl_.fusions_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnNormConfig::_internal_fusions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnFusionConfig* p = _impl_.fusions_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnFusionConfig&>(::xla::cpu::_OneDnnFusionConfig_default_instance_);
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnNormConfig::fusions() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnNormConfig.fusions)
  return _internal_fusions();
}
inline void OneDnnNormConfig::unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fusions_);
  }
  _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnNormConfig.fusions)
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnNormConfig::release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* released = _impl_.fusions_;
  _impl_.fusions_ = 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::cpu::OneDnnFusionConfig* OneDnnNormConfig::unsafe_arena_release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnNormConfig.fusions)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* temp = _impl_.fusions_;
  _impl_.fusions_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnNormConfig::_internal_mutable_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnFusionConfig>(GetArena());
    _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(p);
  }
  return _impl_.fusions_;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnNormConfig::mutable_fusions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::cpu::OneDnnFusionConfig* _msg = _internal_mutable_fusions();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnNormConfig.fusions)
  return _msg;
}
inline void OneDnnNormConfig::set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.fusions_);
  }

  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_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnNormConfig.fusions)
}

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

// OneDnnConvolutionConfig

// uint64 dims = 1;
inline void OneDnnConvolutionConfig::clear_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dims_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnConvolutionConfig::dims() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.dims)
  return _internal_dims();
}
inline void OneDnnConvolutionConfig::set_dims(::uint64_t value) {
  _internal_set_dims(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnConvolutionConfig.dims)
}
inline ::uint64_t OneDnnConvolutionConfig::_internal_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dims_;
}
inline void OneDnnConvolutionConfig::_internal_set_dims(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dims_ = value;
}

// .xla.cpu.OneDnnTensorLayoutProto input = 2;
inline bool OneDnnConvolutionConfig::has_input() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.input_ != nullptr);
  return value;
}
inline void OneDnnConvolutionConfig::clear_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_ != nullptr) _impl_.input_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::_internal_input() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.input_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::input() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.input)
  return _internal_input();
}
inline void OneDnnConvolutionConfig::unsafe_arena_set_allocated_input(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_);
  }
  _impl_.input_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnConvolutionConfig.input)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::release_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.input_;
  _impl_.input_ = 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::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::unsafe_arena_release_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.input)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.input_;
  _impl_.input_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::_internal_mutable_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.input_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.input_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::mutable_input() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_input();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnConvolutionConfig.input)
  return _msg;
}
inline void OneDnnConvolutionConfig::set_allocated_input(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.input_);
  }

  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_.input_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnConvolutionConfig.input)
}

// .xla.cpu.OneDnnTensorLayoutProto kernel = 3;
inline bool OneDnnConvolutionConfig::has_kernel() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.kernel_ != nullptr);
  return value;
}
inline void OneDnnConvolutionConfig::clear_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.kernel_ != nullptr) _impl_.kernel_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::_internal_kernel() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.kernel_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::kernel() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.kernel)
  return _internal_kernel();
}
inline void OneDnnConvolutionConfig::unsafe_arena_set_allocated_kernel(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.kernel_);
  }
  _impl_.kernel_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnConvolutionConfig.kernel)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::release_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.kernel_;
  _impl_.kernel_ = 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::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::unsafe_arena_release_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.kernel)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.kernel_;
  _impl_.kernel_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::_internal_mutable_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.kernel_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.kernel_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.kernel_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::mutable_kernel() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_kernel();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnConvolutionConfig.kernel)
  return _msg;
}
inline void OneDnnConvolutionConfig::set_allocated_kernel(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.kernel_);
  }

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

  _impl_.kernel_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnConvolutionConfig.kernel)
}

// .xla.cpu.OneDnnTensorLayoutProto output = 4;
inline bool OneDnnConvolutionConfig::has_output() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr);
  return value;
}
inline void OneDnnConvolutionConfig::clear_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.output_ != nullptr) _impl_.output_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::_internal_output() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnTensorLayoutProto* p = _impl_.output_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnTensorLayoutProto&>(::xla::cpu::_OneDnnTensorLayoutProto_default_instance_);
}
inline const ::xla::cpu::OneDnnTensorLayoutProto& OneDnnConvolutionConfig::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.output)
  return _internal_output();
}
inline void OneDnnConvolutionConfig::unsafe_arena_set_allocated_output(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_);
  }
  _impl_.output_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnConvolutionConfig.output)
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::release_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* released = _impl_.output_;
  _impl_.output_ = 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::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::unsafe_arena_release_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.output)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* temp = _impl_.output_;
  _impl_.output_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::_internal_mutable_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.output_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnTensorLayoutProto>(GetArena());
    _impl_.output_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(p);
  }
  return _impl_.output_;
}
inline ::xla::cpu::OneDnnTensorLayoutProto* OneDnnConvolutionConfig::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::cpu::OneDnnTensorLayoutProto* _msg = _internal_mutable_output();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnConvolutionConfig.output)
  return _msg;
}
inline void OneDnnConvolutionConfig::set_allocated_output(::xla::cpu::OneDnnTensorLayoutProto* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.output_);
  }

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

  _impl_.output_ = reinterpret_cast<::xla::cpu::OneDnnTensorLayoutProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnConvolutionConfig.output)
}

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

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::cpu::OneDnnWindowProto* released = _impl_.window_;
  _impl_.window_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::cpu::OneDnnWindowProto* OneDnnConvolutionConfig::unsafe_arena_release_window() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.window)

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

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

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

// .xla.cpu.OneDnnFusionConfig fusions = 6;
inline bool OneDnnConvolutionConfig::has_fusions() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.fusions_ != nullptr);
  return value;
}
inline void OneDnnConvolutionConfig::clear_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ != nullptr) _impl_.fusions_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnConvolutionConfig::_internal_fusions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnFusionConfig* p = _impl_.fusions_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnFusionConfig&>(::xla::cpu::_OneDnnFusionConfig_default_instance_);
}
inline const ::xla::cpu::OneDnnFusionConfig& OneDnnConvolutionConfig::fusions() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.fusions)
  return _internal_fusions();
}
inline void OneDnnConvolutionConfig::unsafe_arena_set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fusions_);
  }
  _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnConvolutionConfig.fusions)
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnConvolutionConfig::release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::cpu::OneDnnFusionConfig* released = _impl_.fusions_;
  _impl_.fusions_ = 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::cpu::OneDnnFusionConfig* OneDnnConvolutionConfig::unsafe_arena_release_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.fusions)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::cpu::OneDnnFusionConfig* temp = _impl_.fusions_;
  _impl_.fusions_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnConvolutionConfig::_internal_mutable_fusions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fusions_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnFusionConfig>(GetArena());
    _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(p);
  }
  return _impl_.fusions_;
}
inline ::xla::cpu::OneDnnFusionConfig* OneDnnConvolutionConfig::mutable_fusions() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::cpu::OneDnnFusionConfig* _msg = _internal_mutable_fusions();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnConvolutionConfig.fusions)
  return _msg;
}
inline void OneDnnConvolutionConfig::set_allocated_fusions(::xla::cpu::OneDnnFusionConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.fusions_);
  }

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

  _impl_.fusions_ = reinterpret_cast<::xla::cpu::OneDnnFusionConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnConvolutionConfig.fusions)
}

// uint64 feature_groups = 7;
inline void OneDnnConvolutionConfig::clear_feature_groups() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_groups_ = ::uint64_t{0u};
}
inline ::uint64_t OneDnnConvolutionConfig::feature_groups() const {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.feature_groups)
  return _internal_feature_groups();
}
inline void OneDnnConvolutionConfig::set_feature_groups(::uint64_t value) {
  _internal_set_feature_groups(value);
  // @@protoc_insertion_point(field_set:xla.cpu.OneDnnConvolutionConfig.feature_groups)
}
inline ::uint64_t OneDnnConvolutionConfig::_internal_feature_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_groups_;
}
inline void OneDnnConvolutionConfig::_internal_set_feature_groups(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_groups_ = value;
}

// .xla.cpu.OneDnnOptimizationConfig optimization_config = 8;
inline bool OneDnnConvolutionConfig::has_optimization_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.optimization_config_ != nullptr);
  return value;
}
inline void OneDnnConvolutionConfig::clear_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.optimization_config_ != nullptr) _impl_.optimization_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const ::xla::cpu::OneDnnOptimizationConfig& OneDnnConvolutionConfig::_internal_optimization_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::cpu::OneDnnOptimizationConfig* p = _impl_.optimization_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::cpu::OneDnnOptimizationConfig&>(::xla::cpu::_OneDnnOptimizationConfig_default_instance_);
}
inline const ::xla::cpu::OneDnnOptimizationConfig& OneDnnConvolutionConfig::optimization_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.cpu.OneDnnConvolutionConfig.optimization_config)
  return _internal_optimization_config();
}
inline void OneDnnConvolutionConfig::unsafe_arena_set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.optimization_config_);
  }
  _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.cpu.OneDnnConvolutionConfig.optimization_config)
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnConvolutionConfig::release_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::cpu::OneDnnOptimizationConfig* released = _impl_.optimization_config_;
  _impl_.optimization_config_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnConvolutionConfig::unsafe_arena_release_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.cpu.OneDnnConvolutionConfig.optimization_config)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::cpu::OneDnnOptimizationConfig* temp = _impl_.optimization_config_;
  _impl_.optimization_config_ = nullptr;
  return temp;
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnConvolutionConfig::_internal_mutable_optimization_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.optimization_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::cpu::OneDnnOptimizationConfig>(GetArena());
    _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(p);
  }
  return _impl_.optimization_config_;
}
inline ::xla::cpu::OneDnnOptimizationConfig* OneDnnConvolutionConfig::mutable_optimization_config() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::cpu::OneDnnOptimizationConfig* _msg = _internal_mutable_optimization_config();
  // @@protoc_insertion_point(field_mutable:xla.cpu.OneDnnConvolutionConfig.optimization_config)
  return _msg;
}
inline void OneDnnConvolutionConfig::set_allocated_optimization_config(::xla::cpu::OneDnnOptimizationConfig* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.optimization_config_);
  }

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

  _impl_.optimization_config_ = reinterpret_cast<::xla::cpu::OneDnnOptimizationConfig*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.cpu.OneDnnConvolutionConfig.optimization_config)
}

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

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


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::xla::cpu::OneDnnFusionConfig_FusionKind> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::cpu::OneDnnFusionConfig_FusionKind>() {
  return ::xla::cpu::OneDnnFusionConfig_FusionKind_descriptor();
}
template <>
struct is_proto_enum<::xla::cpu::OneDnnNormConfig_ScaleAndShift> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::xla::cpu::OneDnnNormConfig_ScaleAndShift>() {
  return ::xla::cpu::OneDnnNormConfig_ScaleAndShift_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_xla_2fservice_2fcpu_2fonednn_5fconfig_2eproto_2epb_2eh
