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

#ifndef xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto_2epb_2eh
#define xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6031001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "xla/backends/gpu/runtime/convolution_filter_thunk.pb.h"
#include "xla/backends/gpu/runtime/copy_thunk.pb.h"
#include "xla/backends/gpu/runtime/dynamic_slice_thunk.pb.h"
#include "xla/core/host_offloading/host_offloading_executable.pb.h"
#include "xla/ffi/attribute_map.pb.h"
#include "xla/ffi/execution_state.pb.h"
#include "xla/service/buffer_assignment.pb.h"
#include "xla/service/gpu/gpu_conv_runner.pb.h"
#include "xla/service/gpu/gpu_norm_runner.pb.h"
#include "xla/service/gpu/kernels/custom_kernel.pb.h"
#include "xla/service/gpu/launch_dimensions.pb.h"
#include "xla/service/hlo.pb.h"
#include "xla/service/shaped_slice.pb.h"
#include "xla/stream_executor/gpu/gpu_blas_lt.pb.h"
#include "xla/stream_executor/gpu/tma_metadata.pb.h"
#include "xla/stream_executor/launch_dim.pb.h"
#include "xla/xla_data.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto PROTOBUF_EXPORT

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct PROTOBUF_EXPORT TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable descriptor_table_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
}  // extern "C"
namespace xla {
namespace gpu {
enum ReductionKindProto : int;
PROTOBUF_EXPORT extern const uint32_t ReductionKindProto_internal_data_[];
enum ThunkKindProto : int;
PROTOBUF_EXPORT extern const uint32_t ThunkKindProto_internal_data_[];
class AllGatherStartThunkProto;
struct AllGatherStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AllGatherStartThunkProtoDefaultTypeInternal _AllGatherStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AllGatherStartThunkProto_class_data_;
class AllReduceStartThunkProto;
struct AllReduceStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AllReduceStartThunkProtoDefaultTypeInternal _AllReduceStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AllReduceStartThunkProto_class_data_;
class AllToAllStartThunkProto;
struct AllToAllStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AllToAllStartThunkProtoDefaultTypeInternal _AllToAllStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AllToAllStartThunkProto_class_data_;
class CollectiveBroadcastStartThunkProto;
struct CollectiveBroadcastStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveBroadcastStartThunkProtoDefaultTypeInternal _CollectiveBroadcastStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveBroadcastStartThunkProto_class_data_;
class CollectiveBufferProto;
struct CollectiveBufferProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveBufferProtoDefaultTypeInternal _CollectiveBufferProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveBufferProto_class_data_;
class CollectiveConfigProto;
struct CollectiveConfigProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveConfigProtoDefaultTypeInternal _CollectiveConfigProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveConfigProto_class_data_;
class CollectiveDoneThunkProto;
struct CollectiveDoneThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveDoneThunkProtoDefaultTypeInternal _CollectiveDoneThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveDoneThunkProto_class_data_;
class CollectiveGroupThunkProto;
struct CollectiveGroupThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveGroupThunkProtoDefaultTypeInternal _CollectiveGroupThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveGroupThunkProto_class_data_;
class CollectivePermuteStartThunkProto;
struct CollectivePermuteStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectivePermuteStartThunkProtoDefaultTypeInternal _CollectivePermuteStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectivePermuteStartThunkProto_class_data_;
class CollectiveThunkProto;
struct CollectiveThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CollectiveThunkProtoDefaultTypeInternal _CollectiveThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CollectiveThunkProto_class_data_;
class ConditionalThunkProto;
struct ConditionalThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ConditionalThunkProtoDefaultTypeInternal _ConditionalThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ConditionalThunkProto_class_data_;
class ConvolutionReorderThunkProto;
struct ConvolutionReorderThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ConvolutionReorderThunkProtoDefaultTypeInternal _ConvolutionReorderThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ConvolutionReorderThunkProto_class_data_;
class ConvolutionThunkProto;
struct ConvolutionThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ConvolutionThunkProtoDefaultTypeInternal _ConvolutionThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ConvolutionThunkProto_class_data_;
class CubSortThunkProto;
struct CubSortThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CubSortThunkProtoDefaultTypeInternal _CubSortThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CubSortThunkProto_class_data_;
class CublasLtMatmulThunkProto;
struct CublasLtMatmulThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CublasLtMatmulThunkProtoDefaultTypeInternal _CublasLtMatmulThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CublasLtMatmulThunkProto_class_data_;
class CudnnThunkProto;
struct CudnnThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CudnnThunkProtoDefaultTypeInternal _CudnnThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CudnnThunkProto_class_data_;
class CustomCallThunkProto;
struct CustomCallThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CustomCallThunkProtoDefaultTypeInternal _CustomCallThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CustomCallThunkProto_class_data_;
class CustomKernelThunkProto;
struct CustomKernelThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern CustomKernelThunkProtoDefaultTypeInternal _CustomKernelThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull CustomKernelThunkProto_class_data_;
class DynamicSliceThunkProto;
struct DynamicSliceThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern DynamicSliceThunkProtoDefaultTypeInternal _DynamicSliceThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull DynamicSliceThunkProto_class_data_;
class FftThunkProto;
struct FftThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern FftThunkProtoDefaultTypeInternal _FftThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FftThunkProto_class_data_;
class GemmThunkProto;
struct GemmThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern GemmThunkProtoDefaultTypeInternal _GemmThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull GemmThunkProto_class_data_;
class HostExecuteDoneThunkProto;
struct HostExecuteDoneThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostExecuteDoneThunkProtoDefaultTypeInternal _HostExecuteDoneThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostExecuteDoneThunkProto_class_data_;
class HostExecuteStartThunkProto;
struct HostExecuteStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostExecuteStartThunkProtoDefaultTypeInternal _HostExecuteStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostExecuteStartThunkProto_class_data_;
class HostRecvDoneThunkProto;
struct HostRecvDoneThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostRecvDoneThunkProtoDefaultTypeInternal _HostRecvDoneThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostRecvDoneThunkProto_class_data_;
class HostRecvThunkProto;
struct HostRecvThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostRecvThunkProtoDefaultTypeInternal _HostRecvThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostRecvThunkProto_class_data_;
class HostRecvThunkProto_FrontendAttrsEntry_DoNotUse;
struct HostRecvThunkProto_FrontendAttrsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern HostRecvThunkProto_FrontendAttrsEntry_DoNotUseDefaultTypeInternal _HostRecvThunkProto_FrontendAttrsEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostRecvThunkProto_FrontendAttrsEntry_DoNotUse_class_data_;
class HostSendDoneThunkProto;
struct HostSendDoneThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostSendDoneThunkProtoDefaultTypeInternal _HostSendDoneThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostSendDoneThunkProto_class_data_;
class HostSendThunkProto;
struct HostSendThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern HostSendThunkProtoDefaultTypeInternal _HostSendThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostSendThunkProto_class_data_;
class HostSendThunkProto_FrontendAttrsEntry_DoNotUse;
struct HostSendThunkProto_FrontendAttrsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern HostSendThunkProto_FrontendAttrsEntry_DoNotUseDefaultTypeInternal _HostSendThunkProto_FrontendAttrsEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull HostSendThunkProto_FrontendAttrsEntry_DoNotUse_class_data_;
class InfeedThunkProto;
struct InfeedThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern InfeedThunkProtoDefaultTypeInternal _InfeedThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull InfeedThunkProto_class_data_;
class KernelThunkProto;
struct KernelThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern KernelThunkProtoDefaultTypeInternal _KernelThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull KernelThunkProto_class_data_;
class Memset32BitValueThunkProto;
struct Memset32BitValueThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern Memset32BitValueThunkProtoDefaultTypeInternal _Memset32BitValueThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull Memset32BitValueThunkProto_class_data_;
class MemzeroThunkProto;
struct MemzeroThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern MemzeroThunkProtoDefaultTypeInternal _MemzeroThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull MemzeroThunkProto_class_data_;
class NormThunkProto;
struct NormThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern NormThunkProtoDefaultTypeInternal _NormThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull NormThunkProto_class_data_;
class OutfeedThunkProto;
struct OutfeedThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern OutfeedThunkProtoDefaultTypeInternal _OutfeedThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull OutfeedThunkProto_class_data_;
class PartitionIdThunkProto;
struct PartitionIdThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern PartitionIdThunkProtoDefaultTypeInternal _PartitionIdThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull PartitionIdThunkProto_class_data_;
class RaggedAllToAllStartThunkProto;
struct RaggedAllToAllStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern RaggedAllToAllStartThunkProtoDefaultTypeInternal _RaggedAllToAllStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull RaggedAllToAllStartThunkProto_class_data_;
class RecvThunkProto;
struct RecvThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern RecvThunkProtoDefaultTypeInternal _RecvThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull RecvThunkProto_class_data_;
class ReduceScatterStartThunkProto;
struct ReduceScatterStartThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ReduceScatterStartThunkProtoDefaultTypeInternal _ReduceScatterStartThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ReduceScatterStartThunkProto_class_data_;
class ReplicaIdThunkProto;
struct ReplicaIdThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ReplicaIdThunkProtoDefaultTypeInternal _ReplicaIdThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ReplicaIdThunkProto_class_data_;
class SelectKThunkProto;
struct SelectKThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern SelectKThunkProtoDefaultTypeInternal _SelectKThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SelectKThunkProto_class_data_;
class SendThunkProto;
struct SendThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern SendThunkProtoDefaultTypeInternal _SendThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SendThunkProto_class_data_;
class SequentialThunkProto;
struct SequentialThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern SequentialThunkProtoDefaultTypeInternal _SequentialThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull SequentialThunkProto_class_data_;
class ThunkInfoProto;
struct ThunkInfoProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ThunkInfoProtoDefaultTypeInternal _ThunkInfoProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ThunkInfoProto_class_data_;
class ThunkMetadataListProto;
struct ThunkMetadataListProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ThunkMetadataListProtoDefaultTypeInternal _ThunkMetadataListProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ThunkMetadataListProto_class_data_;
class ThunkMetadataProto;
struct ThunkMetadataProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ThunkMetadataProtoDefaultTypeInternal _ThunkMetadataProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ThunkMetadataProto_class_data_;
class ThunkProto;
struct ThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ThunkProtoDefaultTypeInternal _ThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ThunkProto_class_data_;
class TriangularSolveThunkProto;
struct TriangularSolveThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern TriangularSolveThunkProtoDefaultTypeInternal _TriangularSolveThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull TriangularSolveThunkProto_class_data_;
class WaitForStreamsThunkProto;
struct WaitForStreamsThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern WaitForStreamsThunkProtoDefaultTypeInternal _WaitForStreamsThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WaitForStreamsThunkProto_class_data_;
class WhileThunkProto;
struct WhileThunkProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern WhileThunkProtoDefaultTypeInternal _WhileThunkProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull WhileThunkProto_class_data_;
}  // namespace gpu
}  // namespace xla
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::xla::gpu::ReductionKindProto_internal_data_>
    internal::EnumTraitsImpl::value<::xla::gpu::ReductionKindProto>;
template <>
internal::EnumTraitsT<::xla::gpu::ThunkKindProto_internal_data_>
    internal::EnumTraitsImpl::value<::xla::gpu::ThunkKindProto>;
}  // namespace protobuf
}  // namespace google

namespace xla {
namespace gpu {
enum ThunkKindProto : int {
  THUNK_KIND_UNSPECIFIED = 0,
  THUNK_KIND_ALL_GATHER = 1,
  THUNK_KIND_ALL_GATHER_DONE = 2,
  THUNK_KIND_ALL_GATHER_START = 3,
  THUNK_KIND_ALL_REDUCE = 4,
  THUNK_KIND_ALL_REDUCE_DONE = 5,
  THUNK_KIND_ALL_REDUCE_START = 6,
  THUNK_KIND_ALL_TO_ALL = 7,
  THUNK_KIND_ALL_TO_ALL_DONE = 8,
  THUNK_KIND_ALL_TO_ALL_START = 9,
  THUNK_KIND_BUFFERS_DEBUG_CHECKSUM = 10,
  THUNK_KIND_BUFFERS_DEBUG_FLOAT_CHECK = 11,
  THUNK_KIND_COLLECTIVE_BROADCAST = 12,
  THUNK_KIND_COLLECTIVE_BROADCAST_DONE = 13,
  THUNK_KIND_COLLECTIVE_BROADCAST_START = 14,
  THUNK_KIND_COLLECTIVE_KERNEL = 15,
  THUNK_KIND_COLLECTIVE_METADATA = 16,
  THUNK_KIND_COLLECTIVE_PERMUTE = 17,
  THUNK_KIND_COLLECTIVE_PERMUTE_DONE = 18,
  THUNK_KIND_COLLECTIVE_PERMUTE_START = 19,
  THUNK_KIND_COMMAND_BUFFER = 20,
  THUNK_KIND_CONDITIONAL = 21,
  THUNK_KIND_CONVOLUTION = 22,
  THUNK_KIND_CONVOLUTION_REORDER = 23,
  THUNK_KIND_COPY = 24,
  THUNK_KIND_COPY_DONE = 25,
  THUNK_KIND_CU_DNN = 26,
  THUNK_KIND_CUB_SORT = 27,
  THUNK_KIND_CUBLAS_LT_MATMUL = 28,
  THUNK_KIND_CUSTOM_CALL = 29,
  THUNK_KIND_CUSTOM_KERNEL = 30,
  THUNK_KIND_DYNAMIC_SLICE = 31,
  THUNK_KIND_FFT = 32,
  THUNK_KIND_GEMM = 33,
  THUNK_KIND_GROUP_DONE = 34,
  THUNK_KIND_GROUP_START = 35,
  THUNK_KIND_HOST_EXECUTE_DONE = 36,
  THUNK_KIND_HOST_EXECUTE_START = 37,
  THUNK_KIND_HOST_RECV = 38,
  THUNK_KIND_HOST_RECV_DONE = 39,
  THUNK_KIND_HOST_SEND = 40,
  THUNK_KIND_HOST_SEND_DONE = 41,
  THUNK_KIND_INFEED = 42,
  THUNK_KIND_KERNEL = 43,
  THUNK_KIND_MEMSET32_BIT_VALUE = 44,
  THUNK_KIND_MEMZERO = 45,
  THUNK_KIND_NORM = 46,
  THUNK_KIND_NVSHMEM_ALL_REDUCE_DONE = 47,
  THUNK_KIND_NVSHMEM_ALL_REDUCE_START = 48,
  THUNK_KIND_NVSHMEM_COLLECTIVE_PERMUTE = 49,
  THUNK_KIND_NVSHMEM_COLLECTIVE_PERMUTE_DONE = 50,
  THUNK_KIND_NVSHMEM_COLLECTIVE_PERMUTE_START = 51,
  THUNK_KIND_NVSHMEM_RECV = 52,
  THUNK_KIND_NVSHMEM_RECV_DONE = 53,
  THUNK_KIND_NVSHMEM_SEND = 54,
  THUNK_KIND_NVSHMEM_SEND_DONE = 55,
  THUNK_KIND_OUTFEED = 56,
  THUNK_KIND_PARTITION_ID = 57,
  THUNK_KIND_RAGGED_ALL_TO_ALL = 58,
  THUNK_KIND_RAGGED_ALL_TO_ALL_DONE = 59,
  THUNK_KIND_RAGGED_ALL_TO_ALL_START = 60,
  THUNK_KIND_RECV = 61,
  THUNK_KIND_RECV_DONE = 62,
  THUNK_KIND_REDUCE_SCATTER = 63,
  THUNK_KIND_REDUCE_SCATTER_DONE = 64,
  THUNK_KIND_REDUCE_SCATTER_START = 65,
  THUNK_KIND_REPLICA_ID = 66,
  THUNK_KIND_SELECT_K = 67,
  THUNK_KIND_SEND = 68,
  THUNK_KIND_SEND_DONE = 69,
  THUNK_KIND_SEQUENTIAL = 70,
  THUNK_KIND_TRIANGULAR_SOLVE = 71,
  THUNK_KIND_WAIT_FOR_STREAMS = 72,
  THUNK_KIND_WHILE = 73,
  ThunkKindProto_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ThunkKindProto_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ThunkKindProto_internal_data_[];
inline constexpr ThunkKindProto ThunkKindProto_MIN =
    static_cast<ThunkKindProto>(0);
inline constexpr ThunkKindProto ThunkKindProto_MAX =
    static_cast<ThunkKindProto>(73);
inline bool ThunkKindProto_IsValid(int value) {
  return 0 <= value && value <= 73;
}
inline constexpr int ThunkKindProto_ARRAYSIZE = 73 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ThunkKindProto_descriptor();
template <typename T>
const ::std::string& ThunkKindProto_Name(T value) {
  static_assert(::std::is_same<T, ThunkKindProto>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ThunkKindProto_Name().");
  return ThunkKindProto_Name(static_cast<ThunkKindProto>(value));
}
template <>
inline const ::std::string& ThunkKindProto_Name(ThunkKindProto value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ThunkKindProto_descriptor, 0, 73>(
      static_cast<int>(value));
}
inline bool ThunkKindProto_Parse(
    ::absl::string_view name, ThunkKindProto* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ThunkKindProto>(ThunkKindProto_descriptor(), name,
                                           value);
}
enum ReductionKindProto : int {
  REDUCTION_KIND_UNSPECIFIED = 0,
  REDUCTION_KIND_SUM = 1,
  REDUCTION_KIND_PRODUCT = 2,
  REDUCTION_KIND_MIN = 3,
  REDUCTION_KIND_MAX = 4,
  ReductionKindProto_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ReductionKindProto_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

PROTOBUF_EXPORT extern const uint32_t ReductionKindProto_internal_data_[];
inline constexpr ReductionKindProto ReductionKindProto_MIN =
    static_cast<ReductionKindProto>(0);
inline constexpr ReductionKindProto ReductionKindProto_MAX =
    static_cast<ReductionKindProto>(4);
inline bool ReductionKindProto_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int ReductionKindProto_ARRAYSIZE = 4 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ReductionKindProto_descriptor();
template <typename T>
const ::std::string& ReductionKindProto_Name(T value) {
  static_assert(::std::is_same<T, ReductionKindProto>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ReductionKindProto_Name().");
  return ReductionKindProto_Name(static_cast<ReductionKindProto>(value));
}
template <>
inline const ::std::string& ReductionKindProto_Name(ReductionKindProto value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ReductionKindProto_descriptor, 0, 4>(
      static_cast<int>(value));
}
inline bool ReductionKindProto_Parse(
    ::absl::string_view name, ReductionKindProto* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ReductionKindProto>(ReductionKindProto_descriptor(), name,
                                           value);
}

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


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

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

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

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

  inline WaitForStreamsThunkProto(const WaitForStreamsThunkProto& from) : WaitForStreamsThunkProto(nullptr, from) {}
  inline WaitForStreamsThunkProto(WaitForStreamsThunkProto&& from) noexcept
      : WaitForStreamsThunkProto(nullptr, ::std::move(from)) {}
  inline WaitForStreamsThunkProto& operator=(const WaitForStreamsThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline WaitForStreamsThunkProto& operator=(WaitForStreamsThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WaitForStreamsThunkProto& default_instance() {
    return *reinterpret_cast<const WaitForStreamsThunkProto*>(
        &_WaitForStreamsThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(WaitForStreamsThunkProto& a, WaitForStreamsThunkProto& b) { a.Swap(&b); }
  inline void Swap(WaitForStreamsThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(WaitForStreamsThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kStreamIdFieldNumber = 1,
    kWaitForStreamIdFieldNumber = 2,
  };
  // int64 stream_id = 1;
  void clear_stream_id() ;
  ::int64_t stream_id() const;
  void set_stream_id(::int64_t value);

  private:
  ::int64_t _internal_stream_id() const;
  void _internal_set_stream_id(::int64_t value);

  public:
  // int64 wait_for_stream_id = 2;
  void clear_wait_for_stream_id() ;
  ::int64_t wait_for_stream_id() const;
  void set_wait_for_stream_id(::int64_t value);

  private:
  ::int64_t _internal_wait_for_stream_id() const;
  void _internal_set_wait_for_stream_id(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const WaitForStreamsThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t stream_id_;
    ::int64_t wait_for_stream_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ThunkInfoProto(const ThunkInfoProto& from) : ThunkInfoProto(nullptr, from) {}
  inline ThunkInfoProto(ThunkInfoProto&& from) noexcept
      : ThunkInfoProto(nullptr, ::std::move(from)) {}
  inline ThunkInfoProto& operator=(const ThunkInfoProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ThunkInfoProto& operator=(ThunkInfoProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ThunkInfoProto& default_instance() {
    return *reinterpret_cast<const ThunkInfoProto*>(
        &_ThunkInfoProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(ThunkInfoProto& a, ThunkInfoProto& b) { a.Swap(&b); }
  inline void Swap(ThunkInfoProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ThunkInfoProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kProfileAnnotationFieldNumber = 1,
    kExecutionStreamIdFieldNumber = 2,
    kThunkIdFieldNumber = 3,
  };
  // string profile_annotation = 1;
  void clear_profile_annotation() ;
  const ::std::string& profile_annotation() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_profile_annotation(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_profile_annotation();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_profile_annotation();
  void set_allocated_profile_annotation(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_profile_annotation() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_profile_annotation(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_profile_annotation();

  public:
  // int64 execution_stream_id = 2;
  void clear_execution_stream_id() ;
  ::int64_t execution_stream_id() const;
  void set_execution_stream_id(::int64_t value);

  private:
  ::int64_t _internal_execution_stream_id() const;
  void _internal_set_execution_stream_id(::int64_t value);

  public:
  // int64 thunk_id = 3;
  void clear_thunk_id() ;
  ::int64_t thunk_id() const;
  void set_thunk_id(::int64_t value);

  private:
  ::int64_t _internal_thunk_id() const;
  void _internal_set_thunk_id(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ThunkInfoProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr profile_annotation_;
    ::int64_t execution_stream_id_;
    ::int64_t thunk_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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


  static constexpr auto InternalGenerateClassData_();

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

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

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

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

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

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

  inline HostSendDoneThunkProto(const HostSendDoneThunkProto& from) : HostSendDoneThunkProto(nullptr, from) {}
  inline HostSendDoneThunkProto(HostSendDoneThunkProto&& from) noexcept
      : HostSendDoneThunkProto(nullptr, ::std::move(from)) {}
  inline HostSendDoneThunkProto& operator=(const HostSendDoneThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostSendDoneThunkProto& operator=(HostSendDoneThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostSendDoneThunkProto& default_instance() {
    return *reinterpret_cast<const HostSendDoneThunkProto*>(
        &_HostSendDoneThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(HostSendDoneThunkProto& a, HostSendDoneThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostSendDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostSendDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kChannelIdFieldNumber = 1,
    kDeviceConstraintFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 3,
  };
  // int64 channel_id = 1;
  void clear_channel_id() ;
  ::int64_t channel_id() const;
  void set_channel_id(::int64_t value);

  private:
  ::int64_t _internal_channel_id() const;
  void _internal_set_channel_id(::int64_t value);

  public:
  // optional int64 device_constraint = 2;
  bool has_device_constraint() const;
  void clear_device_constraint() ;
  ::int64_t device_constraint() const;
  void set_device_constraint(::int64_t value);

  private:
  ::int64_t _internal_device_constraint() const;
  void _internal_set_device_constraint(::int64_t value);

  public:
  // uint64 async_events_unique_id = 3;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostSendDoneThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t channel_id_;
    ::int64_t device_constraint_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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


  static constexpr auto InternalGenerateClassData_();

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

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

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

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

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

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

  inline HostRecvDoneThunkProto(const HostRecvDoneThunkProto& from) : HostRecvDoneThunkProto(nullptr, from) {}
  inline HostRecvDoneThunkProto(HostRecvDoneThunkProto&& from) noexcept
      : HostRecvDoneThunkProto(nullptr, ::std::move(from)) {}
  inline HostRecvDoneThunkProto& operator=(const HostRecvDoneThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostRecvDoneThunkProto& operator=(HostRecvDoneThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostRecvDoneThunkProto& default_instance() {
    return *reinterpret_cast<const HostRecvDoneThunkProto*>(
        &_HostRecvDoneThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(HostRecvDoneThunkProto& a, HostRecvDoneThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostRecvDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostRecvDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kChannelIdFieldNumber = 1,
    kDeviceConstraintFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 3,
  };
  // int64 channel_id = 1;
  void clear_channel_id() ;
  ::int64_t channel_id() const;
  void set_channel_id(::int64_t value);

  private:
  ::int64_t _internal_channel_id() const;
  void _internal_set_channel_id(::int64_t value);

  public:
  // optional int64 device_constraint = 2;
  bool has_device_constraint() const;
  void clear_device_constraint() ;
  ::int64_t device_constraint() const;
  void set_device_constraint(::int64_t value);

  private:
  ::int64_t _internal_device_constraint() const;
  void _internal_set_device_constraint(::int64_t value);

  public:
  // uint64 async_events_unique_id = 3;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostRecvDoneThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t channel_id_;
    ::int64_t device_constraint_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline HostExecuteDoneThunkProto(const HostExecuteDoneThunkProto& from) : HostExecuteDoneThunkProto(nullptr, from) {}
  inline HostExecuteDoneThunkProto(HostExecuteDoneThunkProto&& from) noexcept
      : HostExecuteDoneThunkProto(nullptr, ::std::move(from)) {}
  inline HostExecuteDoneThunkProto& operator=(const HostExecuteDoneThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostExecuteDoneThunkProto& operator=(HostExecuteDoneThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostExecuteDoneThunkProto& default_instance() {
    return *reinterpret_cast<const HostExecuteDoneThunkProto*>(
        &_HostExecuteDoneThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(HostExecuteDoneThunkProto& a, HostExecuteDoneThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostExecuteDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostExecuteDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kAsyncEventsUniqueIdFieldNumber = 1,
  };
  // uint64 async_events_unique_id = 1;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostExecuteDoneThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveThunkProto(const CollectiveThunkProto& from) : CollectiveThunkProto(nullptr, from) {}
  inline CollectiveThunkProto(CollectiveThunkProto&& from) noexcept
      : CollectiveThunkProto(nullptr, ::std::move(from)) {}
  inline CollectiveThunkProto& operator=(const CollectiveThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveThunkProto& operator=(CollectiveThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveThunkProto& default_instance() {
    return *reinterpret_cast<const CollectiveThunkProto*>(
        &_CollectiveThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 36;
  friend void swap(CollectiveThunkProto& a, CollectiveThunkProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kAsyncEventsUniqueIdFieldNumber = 3,
    kThunkKindFieldNumber = 1,
  };
  // uint64 async_events_unique_id = 3;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // .xla.gpu.ThunkKindProto thunk_kind = 1;
  void clear_thunk_kind() ;
  ::xla::gpu::ThunkKindProto thunk_kind() const;
  void set_thunk_kind(::xla::gpu::ThunkKindProto value);

  private:
  ::xla::gpu::ThunkKindProto _internal_thunk_kind() const;
  void _internal_set_thunk_kind(::xla::gpu::ThunkKindProto value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t async_events_unique_id_;
    int thunk_kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveDoneThunkProto(const CollectiveDoneThunkProto& from) : CollectiveDoneThunkProto(nullptr, from) {}
  inline CollectiveDoneThunkProto(CollectiveDoneThunkProto&& from) noexcept
      : CollectiveDoneThunkProto(nullptr, ::std::move(from)) {}
  inline CollectiveDoneThunkProto& operator=(const CollectiveDoneThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveDoneThunkProto& operator=(CollectiveDoneThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveDoneThunkProto& default_instance() {
    return *reinterpret_cast<const CollectiveDoneThunkProto*>(
        &_CollectiveDoneThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 46;
  friend void swap(CollectiveDoneThunkProto& a, CollectiveDoneThunkProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveDoneThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kAsyncEventsUniqueIdFieldNumber = 3,
    kThunkKindFieldNumber = 1,
  };
  // optional uint64 async_events_unique_id = 3;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // .xla.gpu.ThunkKindProto thunk_kind = 1;
  void clear_thunk_kind() ;
  ::xla::gpu::ThunkKindProto thunk_kind() const;
  void set_thunk_kind(::xla::gpu::ThunkKindProto value);

  private:
  ::xla::gpu::ThunkKindProto _internal_thunk_kind() const;
  void _internal_set_thunk_kind(::xla::gpu::ThunkKindProto value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveDoneThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t async_events_unique_id_;
    int thunk_kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ThunkMetadataProto(const ThunkMetadataProto& from) : ThunkMetadataProto(nullptr, from) {}
  inline ThunkMetadataProto(ThunkMetadataProto&& from) noexcept
      : ThunkMetadataProto(nullptr, ::std::move(from)) {}
  inline ThunkMetadataProto& operator=(const ThunkMetadataProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ThunkMetadataProto& operator=(ThunkMetadataProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ThunkMetadataProto& default_instance() {
    return *reinterpret_cast<const ThunkMetadataProto*>(
        &_ThunkMetadataProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ThunkMetadataProto& a, ThunkMetadataProto& b) { a.Swap(&b); }
  inline void Swap(ThunkMetadataProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ThunkMetadataProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kThunkKindFieldNumber = 2,
    kThunkInfoFieldNumber = 1,
  };
  // string thunk_kind = 2;
  void clear_thunk_kind() ;
  const ::std::string& thunk_kind() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_thunk_kind(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_thunk_kind();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_thunk_kind();
  void set_allocated_thunk_kind(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_thunk_kind() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_thunk_kind(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_thunk_kind();

  public:
  // .xla.gpu.ThunkInfoProto thunk_info = 1;
  bool has_thunk_info() const;
  void clear_thunk_info() ;
  const ::xla::gpu::ThunkInfoProto& thunk_info() const;
  [[nodiscard]] ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE release_thunk_info();
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL mutable_thunk_info();
  void set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE unsafe_arena_release_thunk_info();

  private:
  const ::xla::gpu::ThunkInfoProto& _internal_thunk_info() const;
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL _internal_mutable_thunk_info();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ThunkMetadataProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr thunk_kind_;
    ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE thunk_info_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline SelectKThunkProto(const SelectKThunkProto& from) : SelectKThunkProto(nullptr, from) {}
  inline SelectKThunkProto(SelectKThunkProto&& from) noexcept
      : SelectKThunkProto(nullptr, ::std::move(from)) {}
  inline SelectKThunkProto& operator=(const SelectKThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline SelectKThunkProto& operator=(SelectKThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SelectKThunkProto& default_instance() {
    return *reinterpret_cast<const SelectKThunkProto*>(
        &_SelectKThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 25;
  friend void swap(SelectKThunkProto& a, SelectKThunkProto& b) { a.Swap(&b); }
  inline void Swap(SelectKThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SelectKThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgsFieldNumber = 1,
    kBatchSizeFieldNumber = 3,
    kNumElementsFieldNumber = 4,
    kKFieldNumber = 5,
    kDtypeFieldNumber = 6,
  };
  // repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
  int args_size() const;
  private:
  int _internal_args_size() const;

  public:
  void clear_args() ;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_args(int index);
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL mutable_args();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& _internal_args() const;
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL _internal_mutable_args();
  public:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& args(int index) const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL add_args();
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& args() const;
  // uint32 batch_size = 3;
  void clear_batch_size() ;
  ::uint32_t batch_size() const;
  void set_batch_size(::uint32_t value);

  private:
  ::uint32_t _internal_batch_size() const;
  void _internal_set_batch_size(::uint32_t value);

  public:
  // uint32 num_elements = 4;
  void clear_num_elements() ;
  ::uint32_t num_elements() const;
  void set_num_elements(::uint32_t value);

  private:
  ::uint32_t _internal_num_elements() const;
  void _internal_set_num_elements(::uint32_t value);

  public:
  // uint32 k = 5;
  void clear_k() ;
  ::uint32_t k() const;
  void set_k(::uint32_t value);

  private:
  ::uint32_t _internal_k() const;
  void _internal_set_k(::uint32_t value);

  public:
  // .xla.PrimitiveType dtype = 6;
  void clear_dtype() ;
  ::xla::PrimitiveType dtype() const;
  void set_dtype(::xla::PrimitiveType value);

  private:
  ::xla::PrimitiveType _internal_dtype() const;
  void _internal_set_dtype(::xla::PrimitiveType value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SelectKThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::buffer_assignment::BufferAllocationSliceProto > args_;
    ::uint32_t batch_size_;
    ::uint32_t num_elements_;
    ::uint32_t k_;
    int dtype_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ReplicaIdThunkProto(const ReplicaIdThunkProto& from) : ReplicaIdThunkProto(nullptr, from) {}
  inline ReplicaIdThunkProto(ReplicaIdThunkProto&& from) noexcept
      : ReplicaIdThunkProto(nullptr, ::std::move(from)) {}
  inline ReplicaIdThunkProto& operator=(const ReplicaIdThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ReplicaIdThunkProto& operator=(ReplicaIdThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ReplicaIdThunkProto& default_instance() {
    return *reinterpret_cast<const ReplicaIdThunkProto*>(
        &_ReplicaIdThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(ReplicaIdThunkProto& a, ReplicaIdThunkProto& b) { a.Swap(&b); }
  inline void Swap(ReplicaIdThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ReplicaIdThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kDestBufferFieldNumber = 1,
  };
  // .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
  bool has_dest_buffer() const;
  void clear_dest_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dest_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dest_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dest_buffer();
  void set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dest_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dest_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dest_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ReplicaIdThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dest_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline PartitionIdThunkProto(const PartitionIdThunkProto& from) : PartitionIdThunkProto(nullptr, from) {}
  inline PartitionIdThunkProto(PartitionIdThunkProto&& from) noexcept
      : PartitionIdThunkProto(nullptr, ::std::move(from)) {}
  inline PartitionIdThunkProto& operator=(const PartitionIdThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline PartitionIdThunkProto& operator=(PartitionIdThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const PartitionIdThunkProto& default_instance() {
    return *reinterpret_cast<const PartitionIdThunkProto*>(
        &_PartitionIdThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(PartitionIdThunkProto& a, PartitionIdThunkProto& b) { a.Swap(&b); }
  inline void Swap(PartitionIdThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PartitionIdThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kDestBufferFieldNumber = 1,
  };
  // .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
  bool has_dest_buffer() const;
  void clear_dest_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dest_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dest_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dest_buffer();
  void set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dest_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dest_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dest_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const PartitionIdThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dest_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline Memset32BitValueThunkProto(const Memset32BitValueThunkProto& from) : Memset32BitValueThunkProto(nullptr, from) {}
  inline Memset32BitValueThunkProto(Memset32BitValueThunkProto&& from) noexcept
      : Memset32BitValueThunkProto(nullptr, ::std::move(from)) {}
  inline Memset32BitValueThunkProto& operator=(const Memset32BitValueThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline Memset32BitValueThunkProto& operator=(Memset32BitValueThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Memset32BitValueThunkProto& default_instance() {
    return *reinterpret_cast<const Memset32BitValueThunkProto*>(
        &_Memset32BitValueThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(Memset32BitValueThunkProto& a, Memset32BitValueThunkProto& b) { a.Swap(&b); }
  inline void Swap(Memset32BitValueThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Memset32BitValueThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kDestBufferFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
  bool has_dest_buffer() const;
  void clear_dest_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dest_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dest_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dest_buffer();
  void set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dest_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dest_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dest_buffer();

  public:
  // uint32 value = 2;
  void clear_value() ;
  ::uint32_t value() const;
  void set_value(::uint32_t value);

  private:
  ::uint32_t _internal_value() const;
  void _internal_set_value(::uint32_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Memset32BitValueThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dest_buffer_;
    ::uint32_t value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveConfigProto(const CollectiveConfigProto& from) : CollectiveConfigProto(nullptr, from) {}
  inline CollectiveConfigProto(CollectiveConfigProto&& from) noexcept
      : CollectiveConfigProto(nullptr, ::std::move(from)) {}
  inline CollectiveConfigProto& operator=(const CollectiveConfigProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveConfigProto& operator=(CollectiveConfigProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveConfigProto& default_instance() {
    return *reinterpret_cast<const CollectiveConfigProto*>(
        &_CollectiveConfigProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 35;
  friend void swap(CollectiveConfigProto& a, CollectiveConfigProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveConfigProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveConfigProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOperandElementTypeFieldNumber = 1,
    kReplicaGroupsFieldNumber = 2,
    kGroupModeFieldNumber = 3,
    kUseSymmetricBufferFieldNumber = 4,
  };
  // repeated .xla.PrimitiveType operand_element_type = 1;
  int operand_element_type_size() const;
  private:
  int _internal_operand_element_type_size() const;

  public:
  void clear_operand_element_type() ;
  public:
  ::xla::PrimitiveType operand_element_type(int index) const;
  void set_operand_element_type(int index, ::xla::PrimitiveType value);
  void add_operand_element_type(::xla::PrimitiveType value);
  const ::google::protobuf::RepeatedField<int>& operand_element_type() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_operand_element_type();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_operand_element_type() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_operand_element_type();

  public:
  // repeated .xla.ReplicaGroup replica_groups = 2;
  int replica_groups_size() const;
  private:
  int _internal_replica_groups_size() const;

  public:
  void clear_replica_groups() ;
  ::xla::ReplicaGroup* PROTOBUF_NONNULL mutable_replica_groups(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL mutable_replica_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& _internal_replica_groups() const;
  ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL _internal_mutable_replica_groups();
  public:
  const ::xla::ReplicaGroup& replica_groups(int index) const;
  ::xla::ReplicaGroup* PROTOBUF_NONNULL add_replica_groups();
  const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& replica_groups() const;
  // .xla.CollectiveOpGroupMode group_mode = 3;
  void clear_group_mode() ;
  ::xla::CollectiveOpGroupMode group_mode() const;
  void set_group_mode(::xla::CollectiveOpGroupMode value);

  private:
  ::xla::CollectiveOpGroupMode _internal_group_mode() const;
  void _internal_set_group_mode(::xla::CollectiveOpGroupMode value);

  public:
  // bool use_symmetric_buffer = 4;
  void clear_use_symmetric_buffer() ;
  bool use_symmetric_buffer() const;
  void set_use_symmetric_buffer(bool value);

  private:
  bool _internal_use_symmetric_buffer() const;
  void _internal_set_use_symmetric_buffer(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveConfigProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<int> operand_element_type_;
    ::google::protobuf::internal::CachedSize _operand_element_type_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ReplicaGroup > replica_groups_;
    int group_mode_;
    bool use_symmetric_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ThunkMetadataListProto(const ThunkMetadataListProto& from) : ThunkMetadataListProto(nullptr, from) {}
  inline ThunkMetadataListProto(ThunkMetadataListProto&& from) noexcept
      : ThunkMetadataListProto(nullptr, ::std::move(from)) {}
  inline ThunkMetadataListProto& operator=(const ThunkMetadataListProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ThunkMetadataListProto& operator=(ThunkMetadataListProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ThunkMetadataListProto& default_instance() {
    return *reinterpret_cast<const ThunkMetadataListProto*>(
        &_ThunkMetadataListProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ThunkMetadataListProto& a, ThunkMetadataListProto& b) { a.Swap(&b); }
  inline void Swap(ThunkMetadataListProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ThunkMetadataListProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kThunkMetadataFieldNumber = 1,
  };
  // repeated .xla.gpu.ThunkMetadataProto thunk_metadata = 1;
  int thunk_metadata_size() const;
  private:
  int _internal_thunk_metadata_size() const;

  public:
  void clear_thunk_metadata() ;
  ::xla::gpu::ThunkMetadataProto* PROTOBUF_NONNULL mutable_thunk_metadata(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>* PROTOBUF_NONNULL mutable_thunk_metadata();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>& _internal_thunk_metadata() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>* PROTOBUF_NONNULL _internal_mutable_thunk_metadata();
  public:
  const ::xla::gpu::ThunkMetadataProto& thunk_metadata(int index) const;
  ::xla::gpu::ThunkMetadataProto* PROTOBUF_NONNULL add_thunk_metadata();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>& thunk_metadata() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.ThunkMetadataListProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ThunkMetadataListProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::ThunkMetadataProto > thunk_metadata_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline HostSendThunkProto(const HostSendThunkProto& from) : HostSendThunkProto(nullptr, from) {}
  inline HostSendThunkProto(HostSendThunkProto&& from) noexcept
      : HostSendThunkProto(nullptr, ::std::move(from)) {}
  inline HostSendThunkProto& operator=(const HostSendThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostSendThunkProto& operator=(HostSendThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostSendThunkProto& default_instance() {
    return *reinterpret_cast<const HostSendThunkProto*>(
        &_HostSendThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(HostSendThunkProto& a, HostSendThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostSendThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostSendThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFrontendAttrsFieldNumber = 4,
    kShapeFieldNumber = 1,
    kBufferFieldNumber = 2,
    kChannelIdFieldNumber = 3,
    kDeviceConstraintFieldNumber = 5,
    kAsyncEventsUniqueIdFieldNumber = 6,
  };
  // map<string, string> frontend_attrs = 4;
  int frontend_attrs_size() const;
  private:
  int _internal_frontend_attrs_size() const;

  public:
  void clear_frontend_attrs() ;
  const ::google::protobuf::Map<std::string, std::string>& frontend_attrs() const;
  ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL mutable_frontend_attrs();

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

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

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

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto buffer = 2;
  bool has_buffer() const;
  void clear_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_buffer();
  void set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_buffer();

  public:
  // int64 channel_id = 3;
  void clear_channel_id() ;
  ::int64_t channel_id() const;
  void set_channel_id(::int64_t value);

  private:
  ::int64_t _internal_channel_id() const;
  void _internal_set_channel_id(::int64_t value);

  public:
  // optional int64 device_constraint = 5;
  bool has_device_constraint() const;
  void clear_device_constraint() ;
  ::int64_t device_constraint() const;
  void set_device_constraint(::int64_t value);

  private:
  ::int64_t _internal_device_constraint() const;
  void _internal_set_device_constraint(::int64_t value);

  public:
  // uint64 async_events_unique_id = 6;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostSendThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<HostSendThunkProto_FrontendAttrsEntry_DoNotUse, std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        frontend_attrs_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE shape_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE buffer_;
    ::int64_t channel_id_;
    ::int64_t device_constraint_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline HostRecvThunkProto(const HostRecvThunkProto& from) : HostRecvThunkProto(nullptr, from) {}
  inline HostRecvThunkProto(HostRecvThunkProto&& from) noexcept
      : HostRecvThunkProto(nullptr, ::std::move(from)) {}
  inline HostRecvThunkProto& operator=(const HostRecvThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostRecvThunkProto& operator=(HostRecvThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostRecvThunkProto& default_instance() {
    return *reinterpret_cast<const HostRecvThunkProto*>(
        &_HostRecvThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(HostRecvThunkProto& a, HostRecvThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostRecvThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostRecvThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFrontendAttrsFieldNumber = 4,
    kShapeFieldNumber = 1,
    kBufferFieldNumber = 2,
    kChannelIdFieldNumber = 3,
    kDeviceConstraintFieldNumber = 5,
    kAsyncEventsUniqueIdFieldNumber = 6,
  };
  // map<string, string> frontend_attrs = 4;
  int frontend_attrs_size() const;
  private:
  int _internal_frontend_attrs_size() const;

  public:
  void clear_frontend_attrs() ;
  const ::google::protobuf::Map<std::string, std::string>& frontend_attrs() const;
  ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL mutable_frontend_attrs();

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

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

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

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto buffer = 2;
  bool has_buffer() const;
  void clear_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_buffer();
  void set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_buffer();

  public:
  // int64 channel_id = 3;
  void clear_channel_id() ;
  ::int64_t channel_id() const;
  void set_channel_id(::int64_t value);

  private:
  ::int64_t _internal_channel_id() const;
  void _internal_set_channel_id(::int64_t value);

  public:
  // optional int64 device_constraint = 5;
  bool has_device_constraint() const;
  void clear_device_constraint() ;
  ::int64_t device_constraint() const;
  void set_device_constraint(::int64_t value);

  private:
  ::int64_t _internal_device_constraint() const;
  void _internal_set_device_constraint(::int64_t value);

  public:
  // uint64 async_events_unique_id = 6;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostRecvThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<HostRecvThunkProto_FrontendAttrsEntry_DoNotUse, std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        frontend_attrs_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE shape_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE buffer_;
    ::int64_t channel_id_;
    ::int64_t device_constraint_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline GemmThunkProto(const GemmThunkProto& from) : GemmThunkProto(nullptr, from) {}
  inline GemmThunkProto(GemmThunkProto&& from) noexcept
      : GemmThunkProto(nullptr, ::std::move(from)) {}
  inline GemmThunkProto& operator=(const GemmThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline GemmThunkProto& operator=(GemmThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GemmThunkProto& default_instance() {
    return *reinterpret_cast<const GemmThunkProto*>(
        &_GemmThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(GemmThunkProto& a, GemmThunkProto& b) { a.Swap(&b); }
  inline void Swap(GemmThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GemmThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kGemmConfigFieldNumber = 1,
    kLhsBufferFieldNumber = 2,
    kRhsBufferFieldNumber = 3,
    kOutputBufferFieldNumber = 4,
    kWorkspaceFieldNumber = 5,
    kDeterministicFieldNumber = 6,
  };
  // .xla.GemmConfigProto gemm_config = 1;
  bool has_gemm_config() const;
  void clear_gemm_config() ;
  const ::xla::GemmConfigProto& gemm_config() const;
  [[nodiscard]] ::xla::GemmConfigProto* PROTOBUF_NULLABLE release_gemm_config();
  ::xla::GemmConfigProto* PROTOBUF_NONNULL mutable_gemm_config();
  void set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value);
  ::xla::GemmConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_gemm_config();

  private:
  const ::xla::GemmConfigProto& _internal_gemm_config() const;
  ::xla::GemmConfigProto* PROTOBUF_NONNULL _internal_mutable_gemm_config();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto lhs_buffer = 2;
  bool has_lhs_buffer() const;
  void clear_lhs_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& lhs_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_lhs_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_lhs_buffer();
  void set_allocated_lhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_lhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_lhs_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_lhs_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_lhs_buffer();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto rhs_buffer = 3;
  bool has_rhs_buffer() const;
  void clear_rhs_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& rhs_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_rhs_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_rhs_buffer();
  void set_allocated_rhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_rhs_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_rhs_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_rhs_buffer();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto output_buffer = 4;
  bool has_output_buffer() const;
  void clear_output_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& output_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_output_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_output_buffer();
  void set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_output_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_output_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_output_buffer();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto workspace = 5;
  bool has_workspace() const;
  void clear_workspace() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& workspace() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_workspace();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_workspace();
  void set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_workspace();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_workspace() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_workspace();

  public:
  // bool deterministic = 6;
  void clear_deterministic() ;
  bool deterministic() const;
  void set_deterministic(bool value);

  private:
  bool _internal_deterministic() const;
  void _internal_set_deterministic(bool value);

  public:
  // @@protoc_insertion_point(class_scope:xla.gpu.GemmThunkProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   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* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const GemmThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::GemmConfigProto* PROTOBUF_NULLABLE gemm_config_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE lhs_buffer_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE rhs_buffer_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE output_buffer_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE workspace_;
    bool deterministic_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline FftThunkProto(const FftThunkProto& from) : FftThunkProto(nullptr, from) {}
  inline FftThunkProto(FftThunkProto&& from) noexcept
      : FftThunkProto(nullptr, ::std::move(from)) {}
  inline FftThunkProto& operator=(const FftThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline FftThunkProto& operator=(FftThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FftThunkProto& default_instance() {
    return *reinterpret_cast<const FftThunkProto*>(
        &_FftThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 31;
  friend void swap(FftThunkProto& a, FftThunkProto& b) { a.Swap(&b); }
  inline void Swap(FftThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FftThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFftLengthFieldNumber = 2,
    kInputBufferFieldNumber = 3,
    kOutputBufferFieldNumber = 4,
    kInputShapeFieldNumber = 5,
    kOutputShapeFieldNumber = 6,
    kFftTypeFieldNumber = 1,
  };
  // repeated int64 fft_length = 2;
  int fft_length_size() const;
  private:
  int _internal_fft_length_size() const;

  public:
  void clear_fft_length() ;
  ::int64_t fft_length(int index) const;
  void set_fft_length(int index, ::int64_t value);
  void add_fft_length(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& fft_length() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_fft_length();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_fft_length() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_fft_length();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto input_buffer = 3;
  bool has_input_buffer() const;
  void clear_input_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& input_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_input_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_input_buffer();
  void set_allocated_input_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_input_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_input_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_input_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_input_buffer();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto output_buffer = 4;
  bool has_output_buffer() const;
  void clear_output_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& output_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_output_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_output_buffer();
  void set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_output_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_output_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_output_buffer();

  public:
  // .xla.ShapeProto input_shape = 5;
  bool has_input_shape() const;
  void clear_input_shape() ;
  const ::xla::ShapeProto& input_shape() const;
  [[nodiscard]] ::xla::ShapeProto* PROTOBUF_NULLABLE release_input_shape();
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_input_shape();
  void set_allocated_input_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_input_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_input_shape();

  private:
  const ::xla::ShapeProto& _internal_input_shape() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _internal_mutable_input_shape();

  public:
  // .xla.ShapeProto output_shape = 6;
  bool has_output_shape() const;
  void clear_output_shape() ;
  const ::xla::ShapeProto& output_shape() const;
  [[nodiscard]] ::xla::ShapeProto* PROTOBUF_NULLABLE release_output_shape();
  ::xla::ShapeProto* PROTOBUF_NONNULL mutable_output_shape();
  void set_allocated_output_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_output_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value);
  ::xla::ShapeProto* PROTOBUF_NULLABLE unsafe_arena_release_output_shape();

  private:
  const ::xla::ShapeProto& _internal_output_shape() const;
  ::xla::ShapeProto* PROTOBUF_NONNULL _internal_mutable_output_shape();

  public:
  // .xla.FftType fft_type = 1;
  void clear_fft_type() ;
  ::xla::FftType fft_type() const;
  void set_fft_type(::xla::FftType value);

  private:
  ::xla::FftType _internal_fft_type() const;
  void _internal_set_fft_type(::xla::FftType value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FftThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> fft_length_;
    ::google::protobuf::internal::CachedSize _fft_length_cached_byte_size_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE input_buffer_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE output_buffer_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE input_shape_;
    ::xla::ShapeProto* PROTOBUF_NULLABLE output_shape_;
    int fft_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CublasLtMatmulThunkProto(const CublasLtMatmulThunkProto& from) : CublasLtMatmulThunkProto(nullptr, from) {}
  inline CublasLtMatmulThunkProto(CublasLtMatmulThunkProto&& from) noexcept
      : CublasLtMatmulThunkProto(nullptr, ::std::move(from)) {}
  inline CublasLtMatmulThunkProto& operator=(const CublasLtMatmulThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CublasLtMatmulThunkProto& operator=(CublasLtMatmulThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CublasLtMatmulThunkProto& default_instance() {
    return *reinterpret_cast<const CublasLtMatmulThunkProto*>(
        &_CublasLtMatmulThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 26;
  friend void swap(CublasLtMatmulThunkProto& a, CublasLtMatmulThunkProto& b) { a.Swap(&b); }
  inline void Swap(CublasLtMatmulThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CublasLtMatmulThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kCanonicalHloFieldNumber = 4,
    kGemmConfigFieldNumber = 1,
    kAFieldNumber = 5,
    kBFieldNumber = 6,
    kCFieldNumber = 7,
    kDFieldNumber = 8,
    kBiasFieldNumber = 9,
    kAuxFieldNumber = 10,
    kAScaleFieldNumber = 11,
    kBScaleFieldNumber = 12,
    kCScaleFieldNumber = 13,
    kDScaleFieldNumber = 14,
    kDAmaxFieldNumber = 15,
    kWorkspaceFieldNumber = 16,
    kAlgorithmIdxFieldNumber = 3,
    kAutotuneWorkspaceSizeFieldNumber = 17,
    kEpilogueFieldNumber = 2,
  };
  // string canonical_hlo = 4;
  void clear_canonical_hlo() ;
  const ::std::string& canonical_hlo() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_canonical_hlo(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_canonical_hlo();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_canonical_hlo();
  void set_allocated_canonical_hlo(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_canonical_hlo() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_canonical_hlo(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_canonical_hlo();

  public:
  // .xla.GemmConfigProto gemm_config = 1;
  bool has_gemm_config() const;
  void clear_gemm_config() ;
  const ::xla::GemmConfigProto& gemm_config() const;
  [[nodiscard]] ::xla::GemmConfigProto* PROTOBUF_NULLABLE release_gemm_config();
  ::xla::GemmConfigProto* PROTOBUF_NONNULL mutable_gemm_config();
  void set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value);
  ::xla::GemmConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_gemm_config();

  private:
  const ::xla::GemmConfigProto& _internal_gemm_config() const;
  ::xla::GemmConfigProto* PROTOBUF_NONNULL _internal_mutable_gemm_config();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto a = 5;
  bool has_a() const;
  void clear_a() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& a() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_a();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_a();
  void set_allocated_a(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_a(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_a();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_a() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_a();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto b = 6;
  bool has_b() const;
  void clear_b() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& b() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_b();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_b();
  void set_allocated_b(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_b(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_b();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_b() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_b();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto c = 7;
  bool has_c() const;
  void clear_c() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& c() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_c();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_c();
  void set_allocated_c(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_c(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_c();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_c() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_c();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto d = 8;
  bool has_d() const;
  void clear_d() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& d() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_d();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_d();
  void set_allocated_d(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_d(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_d();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_d() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_d();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto bias = 9;
  bool has_bias() const;
  void clear_bias() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& bias() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_bias();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_bias();
  void set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_bias();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_bias() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_bias();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto aux = 10;
  bool has_aux() const;
  void clear_aux() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& aux() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_aux();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_aux();
  void set_allocated_aux(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_aux(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_aux();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_aux() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_aux();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto a_scale = 11;
  bool has_a_scale() const;
  void clear_a_scale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& a_scale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_a_scale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_a_scale();
  void set_allocated_a_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_a_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_a_scale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_a_scale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_a_scale();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto b_scale = 12;
  bool has_b_scale() const;
  void clear_b_scale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& b_scale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_b_scale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_b_scale();
  void set_allocated_b_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_b_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_b_scale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_b_scale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_b_scale();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto c_scale = 13;
  bool has_c_scale() const;
  void clear_c_scale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& c_scale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_c_scale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_c_scale();
  void set_allocated_c_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_c_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_c_scale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_c_scale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_c_scale();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto d_scale = 14;
  bool has_d_scale() const;
  void clear_d_scale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& d_scale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_d_scale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_d_scale();
  void set_allocated_d_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_d_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_d_scale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_d_scale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_d_scale();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto d_amax = 15;
  bool has_d_amax() const;
  void clear_d_amax() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& d_amax() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_d_amax();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_d_amax();
  void set_allocated_d_amax(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_d_amax(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_d_amax();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_d_amax() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_d_amax();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto workspace = 16;
  bool has_workspace() const;
  void clear_workspace() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& workspace() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_workspace();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_workspace();
  void set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_workspace();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_workspace() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_workspace();

  public:
  // int64 algorithm_idx = 3;
  void clear_algorithm_idx() ;
  ::int64_t algorithm_idx() const;
  void set_algorithm_idx(::int64_t value);

  private:
  ::int64_t _internal_algorithm_idx() const;
  void _internal_set_algorithm_idx(::int64_t value);

  public:
  // int64 autotune_workspace_size = 17;
  void clear_autotune_workspace_size() ;
  ::int64_t autotune_workspace_size() const;
  void set_autotune_workspace_size(::int64_t value);

  private:
  ::int64_t _internal_autotune_workspace_size() const;
  void _internal_set_autotune_workspace_size(::int64_t value);

  public:
  // .xla.BlasLtEpilogueProto epilogue = 2;
  void clear_epilogue() ;
  ::xla::BlasLtEpilogueProto epilogue() const;
  void set_epilogue(::xla::BlasLtEpilogueProto value);

  private:
  ::xla::BlasLtEpilogueProto _internal_epilogue() const;
  void _internal_set_epilogue(::xla::BlasLtEpilogueProto value);

  public:
  // @@protoc_insertion_point(class_scope:xla.gpu.CublasLtMatmulThunkProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<5, 17,
                                   13, 70,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CublasLtMatmulThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr canonical_hlo_;
    ::xla::GemmConfigProto* PROTOBUF_NULLABLE gemm_config_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE a_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE b_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE c_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE d_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE bias_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE aux_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE a_scale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE b_scale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE c_scale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE d_scale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE d_amax_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE workspace_;
    ::int64_t algorithm_idx_;
    ::int64_t autotune_workspace_size_;
    int epilogue_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline TriangularSolveThunkProto(const TriangularSolveThunkProto& from) : TriangularSolveThunkProto(nullptr, from) {}
  inline TriangularSolveThunkProto(TriangularSolveThunkProto&& from) noexcept
      : TriangularSolveThunkProto(nullptr, ::std::move(from)) {}
  inline TriangularSolveThunkProto& operator=(const TriangularSolveThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TriangularSolveThunkProto& operator=(TriangularSolveThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TriangularSolveThunkProto& default_instance() {
    return *reinterpret_cast<const TriangularSolveThunkProto*>(
        &_TriangularSolveThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(TriangularSolveThunkProto& a, TriangularSolveThunkProto& b) { a.Swap(&b); }
  inline void Swap(TriangularSolveThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TriangularSolveThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOptionsFieldNumber = 1,
    kABufferFieldNumber = 2,
    kBBufferFieldNumber = 3,
    kTempBufferFieldNumber = 4,
  };
  // .xla.TriangularSolveOptions options = 1;
  bool has_options() const;
  void clear_options() ;
  const ::xla::TriangularSolveOptions& options() const;
  [[nodiscard]] ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE release_options();
  ::xla::TriangularSolveOptions* PROTOBUF_NONNULL mutable_options();
  void set_allocated_options(::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_options(::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value);
  ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE unsafe_arena_release_options();

  private:
  const ::xla::TriangularSolveOptions& _internal_options() const;
  ::xla::TriangularSolveOptions* PROTOBUF_NONNULL _internal_mutable_options();

  public:
  // .xla.ShapedSliceProto a_buffer = 2;
  bool has_a_buffer() const;
  void clear_a_buffer() ;
  const ::xla::ShapedSliceProto& a_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_a_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_a_buffer();
  void set_allocated_a_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_a_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_a_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_a_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_a_buffer();

  public:
  // .xla.ShapedSliceProto b_buffer = 3;
  bool has_b_buffer() const;
  void clear_b_buffer() ;
  const ::xla::ShapedSliceProto& b_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_b_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_b_buffer();
  void set_allocated_b_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_b_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_b_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_b_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_b_buffer();

  public:
  // .xla.ShapedSliceProto temp_buffer = 4;
  bool has_temp_buffer() const;
  void clear_temp_buffer() ;
  const ::xla::ShapedSliceProto& temp_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_temp_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_temp_buffer();
  void set_allocated_temp_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_temp_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_temp_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_temp_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_temp_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TriangularSolveThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE options_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE a_buffer_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE b_buffer_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE temp_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline OutfeedThunkProto(const OutfeedThunkProto& from) : OutfeedThunkProto(nullptr, from) {}
  inline OutfeedThunkProto(OutfeedThunkProto&& from) noexcept
      : OutfeedThunkProto(nullptr, ::std::move(from)) {}
  inline OutfeedThunkProto& operator=(const OutfeedThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OutfeedThunkProto& operator=(OutfeedThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OutfeedThunkProto& default_instance() {
    return *reinterpret_cast<const OutfeedThunkProto*>(
        &_OutfeedThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(OutfeedThunkProto& a, OutfeedThunkProto& b) { a.Swap(&b); }
  inline void Swap(OutfeedThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OutfeedThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kSourceSlicesFieldNumber = 1,
  };
  // repeated .xla.ShapedSliceProto source_slices = 1;
  int source_slices_size() const;
  private:
  int _internal_source_slices_size() const;

  public:
  void clear_source_slices() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_source_slices(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_source_slices();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_source_slices() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_source_slices();
  public:
  const ::xla::ShapedSliceProto& source_slices(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_source_slices();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& source_slices() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.OutfeedThunkProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OutfeedThunkProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > source_slices_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline MemzeroThunkProto(const MemzeroThunkProto& from) : MemzeroThunkProto(nullptr, from) {}
  inline MemzeroThunkProto(MemzeroThunkProto&& from) noexcept
      : MemzeroThunkProto(nullptr, ::std::move(from)) {}
  inline MemzeroThunkProto& operator=(const MemzeroThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline MemzeroThunkProto& operator=(MemzeroThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const MemzeroThunkProto& default_instance() {
    return *reinterpret_cast<const MemzeroThunkProto*>(
        &_MemzeroThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(MemzeroThunkProto& a, MemzeroThunkProto& b) { a.Swap(&b); }
  inline void Swap(MemzeroThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MemzeroThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kDestBufferFieldNumber = 1,
  };
  // .xla.ShapedSliceProto dest_buffer = 1;
  bool has_dest_buffer() const;
  void clear_dest_buffer() ;
  const ::xla::ShapedSliceProto& dest_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_dest_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_dest_buffer();
  void set_allocated_dest_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dest_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dest_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_dest_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_dest_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MemzeroThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE dest_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline KernelThunkProto(const KernelThunkProto& from) : KernelThunkProto(nullptr, from) {}
  inline KernelThunkProto(KernelThunkProto&& from) noexcept
      : KernelThunkProto(nullptr, ::std::move(from)) {}
  inline KernelThunkProto& operator=(const KernelThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline KernelThunkProto& operator=(KernelThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const KernelThunkProto& default_instance() {
    return *reinterpret_cast<const KernelThunkProto*>(
        &_KernelThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(KernelThunkProto& a, KernelThunkProto& b) { a.Swap(&b); }
  inline void Swap(KernelThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(KernelThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgsFieldNumber = 1,
    kWrittenFieldNumber = 2,
    kArgsShapeFieldNumber = 8,
    kKernelNameFieldNumber = 3,
    kLaunchDimensionsFieldNumber = 4,
    kClusterDimFieldNumber = 5,
    kTmaMetadataFieldNumber = 7,
    kShmemBytesFieldNumber = 6,
  };
  // repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
  int args_size() const;
  private:
  int _internal_args_size() const;

  public:
  void clear_args() ;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_args(int index);
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL mutable_args();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& _internal_args() const;
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL _internal_mutable_args();
  public:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& args(int index) const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL add_args();
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& args() const;
  // repeated bool written = 2;
  int written_size() const;
  private:
  int _internal_written_size() const;

  public:
  void clear_written() ;
  bool written(int index) const;
  void set_written(int index, bool value);
  void add_written(bool value);
  const ::google::protobuf::RepeatedField<bool>& written() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_written();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_written() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_written();

  public:
  // repeated .xla.ShapeProto args_shape = 8;
  int args_shape_size() const;
  private:
  int _internal_args_shape_size() const;

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

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& _internal_args_shape() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL _internal_mutable_args_shape();
  public:
  const ::xla::ShapeProto& args_shape(int index) const;
  ::xla::ShapeProto* PROTOBUF_NONNULL add_args_shape();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& args_shape() const;
  // string kernel_name = 3;
  void clear_kernel_name() ;
  const ::std::string& kernel_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_kernel_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_kernel_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_kernel_name();
  void set_allocated_kernel_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_kernel_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_kernel_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_kernel_name();

  public:
  // .xla.gpu.LaunchDimensionsProto launch_dimensions = 4;
  bool has_launch_dimensions() const;
  void clear_launch_dimensions() ;
  const ::xla::gpu::LaunchDimensionsProto& launch_dimensions() const;
  [[nodiscard]] ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE release_launch_dimensions();
  ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NONNULL mutable_launch_dimensions();
  void set_allocated_launch_dimensions(::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_launch_dimensions(::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE unsafe_arena_release_launch_dimensions();

  private:
  const ::xla::gpu::LaunchDimensionsProto& _internal_launch_dimensions() const;
  ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NONNULL _internal_mutable_launch_dimensions();

  public:
  // optional .stream_executor.ClusterDimProto cluster_dim = 5;
  bool has_cluster_dim() const;
  void clear_cluster_dim() ;
  const ::stream_executor::ClusterDimProto& cluster_dim() const;
  [[nodiscard]] ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE release_cluster_dim();
  ::stream_executor::ClusterDimProto* PROTOBUF_NONNULL mutable_cluster_dim();
  void set_allocated_cluster_dim(::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cluster_dim(::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE value);
  ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE unsafe_arena_release_cluster_dim();

  private:
  const ::stream_executor::ClusterDimProto& _internal_cluster_dim() const;
  ::stream_executor::ClusterDimProto* PROTOBUF_NONNULL _internal_mutable_cluster_dim();

  public:
  // optional .stream_executor.gpu.TmaMetadataProto tma_metadata = 7;
  bool has_tma_metadata() const;
  void clear_tma_metadata() ;
  const ::stream_executor::gpu::TmaMetadataProto& tma_metadata() const;
  [[nodiscard]] ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE release_tma_metadata();
  ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NONNULL mutable_tma_metadata();
  void set_allocated_tma_metadata(::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_tma_metadata(::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE value);
  ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE unsafe_arena_release_tma_metadata();

  private:
  const ::stream_executor::gpu::TmaMetadataProto& _internal_tma_metadata() const;
  ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NONNULL _internal_mutable_tma_metadata();

  public:
  // int64 shmem_bytes = 6;
  void clear_shmem_bytes() ;
  ::int64_t shmem_bytes() const;
  void set_shmem_bytes(::int64_t value);

  private:
  ::int64_t _internal_shmem_bytes() const;
  void _internal_set_shmem_bytes(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const KernelThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::buffer_assignment::BufferAllocationSliceProto > args_;
    ::google::protobuf::RepeatedField<bool> written_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapeProto > args_shape_;
    ::google::protobuf::internal::ArenaStringPtr kernel_name_;
    ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE launch_dimensions_;
    ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE cluster_dim_;
    ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE tma_metadata_;
    ::int64_t shmem_bytes_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline InfeedThunkProto(const InfeedThunkProto& from) : InfeedThunkProto(nullptr, from) {}
  inline InfeedThunkProto(InfeedThunkProto&& from) noexcept
      : InfeedThunkProto(nullptr, ::std::move(from)) {}
  inline InfeedThunkProto& operator=(const InfeedThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline InfeedThunkProto& operator=(InfeedThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const InfeedThunkProto& default_instance() {
    return *reinterpret_cast<const InfeedThunkProto*>(
        &_InfeedThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(InfeedThunkProto& a, InfeedThunkProto& b) { a.Swap(&b); }
  inline void Swap(InfeedThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(InfeedThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kDestSlicesFieldNumber = 1,
  };
  // repeated .xla.ShapedSliceProto dest_slices = 1;
  int dest_slices_size() const;
  private:
  int _internal_dest_slices_size() const;

  public:
  void clear_dest_slices() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_dest_slices(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_dest_slices();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_dest_slices() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_dest_slices();
  public:
  const ::xla::ShapedSliceProto& dest_slices(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_dest_slices();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& dest_slices() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.InfeedThunkProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const InfeedThunkProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > dest_slices_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CudnnThunkProto(const CudnnThunkProto& from) : CudnnThunkProto(nullptr, from) {}
  inline CudnnThunkProto(CudnnThunkProto&& from) noexcept
      : CudnnThunkProto(nullptr, ::std::move(from)) {}
  inline CudnnThunkProto& operator=(const CudnnThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CudnnThunkProto& operator=(CudnnThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CudnnThunkProto& default_instance() {
    return *reinterpret_cast<const CudnnThunkProto*>(
        &_CudnnThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(CudnnThunkProto& a, CudnnThunkProto& b) { a.Swap(&b); }
  inline void Swap(CudnnThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CudnnThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgsFieldNumber = 2,
    kOutputArgsFieldNumber = 4,
    kFingerprintFieldNumber = 1,
    kSdpaDropoutSeedFieldNumber = 3,
  };
  // repeated .xla.ShapedSliceProto args = 2;
  int args_size() const;
  private:
  int _internal_args_size() const;

  public:
  void clear_args() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_args(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_args();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_args() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_args();
  public:
  const ::xla::ShapedSliceProto& args(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_args();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& args() const;
  // repeated bool output_args = 4;
  int output_args_size() const;
  private:
  int _internal_output_args_size() const;

  public:
  void clear_output_args() ;
  bool output_args(int index) const;
  void set_output_args(int index, bool value);
  void add_output_args(bool value);
  const ::google::protobuf::RepeatedField<bool>& output_args() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_output_args();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_output_args() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_output_args();

  public:
  // string fingerprint = 1;
  void clear_fingerprint() ;
  const ::std::string& fingerprint() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_fingerprint(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_fingerprint();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_fingerprint();
  void set_allocated_fingerprint(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_fingerprint() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_fingerprint(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_fingerprint();

  public:
  // optional int64 sdpa_dropout_seed = 3;
  bool has_sdpa_dropout_seed() const;
  void clear_sdpa_dropout_seed() ;
  ::int64_t sdpa_dropout_seed() const;
  void set_sdpa_dropout_seed(::int64_t value);

  private:
  ::int64_t _internal_sdpa_dropout_seed() const;
  void _internal_set_sdpa_dropout_seed(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CudnnThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > args_;
    ::google::protobuf::RepeatedField<bool> output_args_;
    ::google::protobuf::internal::ArenaStringPtr fingerprint_;
    ::int64_t sdpa_dropout_seed_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CubSortThunkProto(const CubSortThunkProto& from) : CubSortThunkProto(nullptr, from) {}
  inline CubSortThunkProto(CubSortThunkProto&& from) noexcept
      : CubSortThunkProto(nullptr, ::std::move(from)) {}
  inline CubSortThunkProto& operator=(const CubSortThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CubSortThunkProto& operator=(CubSortThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CubSortThunkProto& default_instance() {
    return *reinterpret_cast<const CubSortThunkProto*>(
        &_CubSortThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 27;
  friend void swap(CubSortThunkProto& a, CubSortThunkProto& b) { a.Swap(&b); }
  inline void Swap(CubSortThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CubSortThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOperandsFieldNumber = 1,
    kResultsFieldNumber = 2,
    kScratchFieldNumber = 3,
    kBatchSizeFieldNumber = 5,
    kDescendingFieldNumber = 4,
  };
  // repeated .xla.ShapedSliceProto operands = 1;
  int operands_size() const;
  private:
  int _internal_operands_size() const;

  public:
  void clear_operands() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_operands(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_operands();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_operands() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_operands();
  public:
  const ::xla::ShapedSliceProto& operands(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_operands();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& operands() const;
  // repeated .xla.ShapedSliceProto results = 2;
  int results_size() const;
  private:
  int _internal_results_size() const;

  public:
  void clear_results() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_results(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_results();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_results() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_results();
  public:
  const ::xla::ShapedSliceProto& results(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_results();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& results() const;
  // .xla.buffer_assignment.BufferAllocationSliceProto scratch = 3;
  bool has_scratch() const;
  void clear_scratch() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& scratch() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_scratch();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_scratch();
  void set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_scratch();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_scratch() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_scratch();

  public:
  // int64 batch_size = 5;
  void clear_batch_size() ;
  ::int64_t batch_size() const;
  void set_batch_size(::int64_t value);

  private:
  ::int64_t _internal_batch_size() const;
  void _internal_set_batch_size(::int64_t value);

  public:
  // bool descending = 4;
  void clear_descending() ;
  bool descending() const;
  void set_descending(bool value);

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

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CubSortThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > operands_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > results_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE scratch_;
    ::int64_t batch_size_;
    bool descending_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveBufferProto(const CollectiveBufferProto& from) : CollectiveBufferProto(nullptr, from) {}
  inline CollectiveBufferProto(CollectiveBufferProto&& from) noexcept
      : CollectiveBufferProto(nullptr, ::std::move(from)) {}
  inline CollectiveBufferProto& operator=(const CollectiveBufferProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveBufferProto& operator=(CollectiveBufferProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveBufferProto& default_instance() {
    return *reinterpret_cast<const CollectiveBufferProto*>(
        &_CollectiveBufferProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 34;
  friend void swap(CollectiveBufferProto& a, CollectiveBufferProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveBufferProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveBufferProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kSourceBufferFieldNumber = 2,
    kDestinationBufferFieldNumber = 3,
    kElementCountFieldNumber = 1,
    kSourceMemorySpaceFieldNumber = 4,
    kDestinationMemorySpaceFieldNumber = 5,
  };
  // .xla.ShapedSliceProto source_buffer = 2;
  bool has_source_buffer() const;
  void clear_source_buffer() ;
  const ::xla::ShapedSliceProto& source_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_source_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_source_buffer();
  void set_allocated_source_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_source_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_source_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_source_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_source_buffer();

  public:
  // .xla.ShapedSliceProto destination_buffer = 3;
  bool has_destination_buffer() const;
  void clear_destination_buffer() ;
  const ::xla::ShapedSliceProto& destination_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_destination_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_destination_buffer();
  void set_allocated_destination_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_destination_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_destination_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_destination_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_destination_buffer();

  public:
  // int64 element_count = 1;
  void clear_element_count() ;
  ::int64_t element_count() const;
  void set_element_count(::int64_t value);

  private:
  ::int64_t _internal_element_count() const;
  void _internal_set_element_count(::int64_t value);

  public:
  // int64 source_memory_space = 4;
  void clear_source_memory_space() ;
  ::int64_t source_memory_space() const;
  void set_source_memory_space(::int64_t value);

  private:
  ::int64_t _internal_source_memory_space() const;
  void _internal_set_source_memory_space(::int64_t value);

  public:
  // int64 destination_memory_space = 5;
  void clear_destination_memory_space() ;
  ::int64_t destination_memory_space() const;
  void set_destination_memory_space(::int64_t value);

  private:
  ::int64_t _internal_destination_memory_space() const;
  void _internal_set_destination_memory_space(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveBufferProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE source_buffer_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE destination_buffer_;
    ::int64_t element_count_;
    ::int64_t source_memory_space_;
    ::int64_t destination_memory_space_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline SendThunkProto(const SendThunkProto& from) : SendThunkProto(nullptr, from) {}
  inline SendThunkProto(SendThunkProto&& from) noexcept
      : SendThunkProto(nullptr, ::std::move(from)) {}
  inline SendThunkProto& operator=(const SendThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline SendThunkProto& operator=(SendThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SendThunkProto& default_instance() {
    return *reinterpret_cast<const SendThunkProto*>(
        &_SendThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 43;
  friend void swap(SendThunkProto& a, SendThunkProto& b) { a.Swap(&b); }
  inline void Swap(SendThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SendThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kSourceTargetPairsFieldNumber = 4,
    kInstructionNameFieldNumber = 6,
    kBufferFieldNumber = 2,
    kCollectiveConfigFieldNumber = 3,
    kAsyncEventsUniqueIdFieldNumber = 1,
  };
  // repeated .xla.SourceTarget source_target_pairs = 4;
  int source_target_pairs_size() const;
  private:
  int _internal_source_target_pairs_size() const;

  public:
  void clear_source_target_pairs() ;
  ::xla::SourceTarget* PROTOBUF_NONNULL mutable_source_target_pairs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL mutable_source_target_pairs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& _internal_source_target_pairs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL _internal_mutable_source_target_pairs();
  public:
  const ::xla::SourceTarget& source_target_pairs(int index) const;
  ::xla::SourceTarget* PROTOBUF_NONNULL add_source_target_pairs();
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& source_target_pairs() const;
  // string instruction_name = 6;
  void clear_instruction_name() ;
  const ::std::string& instruction_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_instruction_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_instruction_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_instruction_name();
  void set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // .xla.gpu.CollectiveBufferProto buffer = 2;
  bool has_buffer() const;
  void clear_buffer() ;
  const ::xla::gpu::CollectiveBufferProto& buffer() const;
  [[nodiscard]] ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE release_buffer();
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffer();
  void set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer();

  private:
  const ::xla::gpu::CollectiveBufferProto& _internal_buffer() const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL _internal_mutable_buffer();

  public:
  // .xla.gpu.CollectiveConfigProto collective_config = 3;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // uint64 async_events_unique_id = 1;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SendThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::SourceTarget > source_target_pairs_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE buffer_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ReduceScatterStartThunkProto(const ReduceScatterStartThunkProto& from) : ReduceScatterStartThunkProto(nullptr, from) {}
  inline ReduceScatterStartThunkProto(ReduceScatterStartThunkProto&& from) noexcept
      : ReduceScatterStartThunkProto(nullptr, ::std::move(from)) {}
  inline ReduceScatterStartThunkProto& operator=(const ReduceScatterStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ReduceScatterStartThunkProto& operator=(ReduceScatterStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ReduceScatterStartThunkProto& default_instance() {
    return *reinterpret_cast<const ReduceScatterStartThunkProto*>(
        &_ReduceScatterStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 39;
  friend void swap(ReduceScatterStartThunkProto& a, ReduceScatterStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(ReduceScatterStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ReduceScatterStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 3,
    kCollectiveConfigFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 1,
    kReductionKindFieldNumber = 4,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 3;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 2;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // .xla.gpu.ReductionKindProto reduction_kind = 4;
  void clear_reduction_kind() ;
  ::xla::gpu::ReductionKindProto reduction_kind() const;
  void set_reduction_kind(::xla::gpu::ReductionKindProto value);

  private:
  ::xla::gpu::ReductionKindProto _internal_reduction_kind() const;
  void _internal_set_reduction_kind(::xla::gpu::ReductionKindProto value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ReduceScatterStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    int reduction_kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline RecvThunkProto(const RecvThunkProto& from) : RecvThunkProto(nullptr, from) {}
  inline RecvThunkProto(RecvThunkProto&& from) noexcept
      : RecvThunkProto(nullptr, ::std::move(from)) {}
  inline RecvThunkProto& operator=(const RecvThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline RecvThunkProto& operator=(RecvThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RecvThunkProto& default_instance() {
    return *reinterpret_cast<const RecvThunkProto*>(
        &_RecvThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 44;
  friend void swap(RecvThunkProto& a, RecvThunkProto& b) { a.Swap(&b); }
  inline void Swap(RecvThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RecvThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kSourceTargetPairsFieldNumber = 4,
    kInstructionNameFieldNumber = 6,
    kBufferFieldNumber = 2,
    kCollectiveConfigFieldNumber = 3,
    kAsyncEventsUniqueIdFieldNumber = 1,
  };
  // repeated .xla.SourceTarget source_target_pairs = 4;
  int source_target_pairs_size() const;
  private:
  int _internal_source_target_pairs_size() const;

  public:
  void clear_source_target_pairs() ;
  ::xla::SourceTarget* PROTOBUF_NONNULL mutable_source_target_pairs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL mutable_source_target_pairs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& _internal_source_target_pairs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL _internal_mutable_source_target_pairs();
  public:
  const ::xla::SourceTarget& source_target_pairs(int index) const;
  ::xla::SourceTarget* PROTOBUF_NONNULL add_source_target_pairs();
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& source_target_pairs() const;
  // string instruction_name = 6;
  void clear_instruction_name() ;
  const ::std::string& instruction_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_instruction_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_instruction_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_instruction_name();
  void set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value);

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

  public:
  // .xla.gpu.CollectiveBufferProto buffer = 2;
  bool has_buffer() const;
  void clear_buffer() ;
  const ::xla::gpu::CollectiveBufferProto& buffer() const;
  [[nodiscard]] ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE release_buffer();
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffer();
  void set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE unsafe_arena_release_buffer();

  private:
  const ::xla::gpu::CollectiveBufferProto& _internal_buffer() const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL _internal_mutable_buffer();

  public:
  // .xla.gpu.CollectiveConfigProto collective_config = 3;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // uint64 async_events_unique_id = 1;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RecvThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::SourceTarget > source_target_pairs_;
    ::google::protobuf::internal::ArenaStringPtr instruction_name_;
    ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE buffer_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline RaggedAllToAllStartThunkProto(const RaggedAllToAllStartThunkProto& from) : RaggedAllToAllStartThunkProto(nullptr, from) {}
  inline RaggedAllToAllStartThunkProto(RaggedAllToAllStartThunkProto&& from) noexcept
      : RaggedAllToAllStartThunkProto(nullptr, ::std::move(from)) {}
  inline RaggedAllToAllStartThunkProto& operator=(const RaggedAllToAllStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline RaggedAllToAllStartThunkProto& operator=(RaggedAllToAllStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RaggedAllToAllStartThunkProto& default_instance() {
    return *reinterpret_cast<const RaggedAllToAllStartThunkProto*>(
        &_RaggedAllToAllStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 41;
  friend void swap(RaggedAllToAllStartThunkProto& a, RaggedAllToAllStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 3,
    kCollectiveConfigFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 1,
    kNumTotalUpdatesFieldNumber = 4,
    kNumInputRowsFieldNumber = 5,
    kNumRowElementsFieldNumber = 6,
    kOneShotKernelEnabledFieldNumber = 7,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 3;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 2;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // int64 num_total_updates = 4;
  void clear_num_total_updates() ;
  ::int64_t num_total_updates() const;
  void set_num_total_updates(::int64_t value);

  private:
  ::int64_t _internal_num_total_updates() const;
  void _internal_set_num_total_updates(::int64_t value);

  public:
  // int64 num_input_rows = 5;
  void clear_num_input_rows() ;
  ::int64_t num_input_rows() const;
  void set_num_input_rows(::int64_t value);

  private:
  ::int64_t _internal_num_input_rows() const;
  void _internal_set_num_input_rows(::int64_t value);

  public:
  // int64 num_row_elements = 6;
  void clear_num_row_elements() ;
  ::int64_t num_row_elements() const;
  void set_num_row_elements(::int64_t value);

  private:
  ::int64_t _internal_num_row_elements() const;
  void _internal_set_num_row_elements(::int64_t value);

  public:
  // bool one_shot_kernel_enabled = 7;
  void clear_one_shot_kernel_enabled() ;
  bool one_shot_kernel_enabled() const;
  void set_one_shot_kernel_enabled(bool value);

  private:
  bool _internal_one_shot_kernel_enabled() const;
  void _internal_set_one_shot_kernel_enabled(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RaggedAllToAllStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    ::int64_t num_total_updates_;
    ::int64_t num_input_rows_;
    ::int64_t num_row_elements_;
    bool one_shot_kernel_enabled_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline NormThunkProto(const NormThunkProto& from) : NormThunkProto(nullptr, from) {}
  inline NormThunkProto(NormThunkProto&& from) noexcept
      : NormThunkProto(nullptr, ::std::move(from)) {}
  inline NormThunkProto& operator=(const NormThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline NormThunkProto& operator=(NormThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const NormThunkProto& default_instance() {
    return *reinterpret_cast<const NormThunkProto*>(
        &_NormThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 28;
  friend void swap(NormThunkProto& a, NormThunkProto& b) { a.Swap(&b); }
  inline void Swap(NormThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(NormThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kNormDescriptorFieldNumber = 1,
    kXFieldNumber = 2,
    kScaleFieldNumber = 3,
    kYOrDxFieldNumber = 4,
    kBiasFieldNumber = 5,
    kExpectationFieldNumber = 6,
    kNormFactorFieldNumber = 7,
    kDyFieldNumber = 8,
    kDscaleFieldNumber = 9,
    kDbiasFieldNumber = 10,
    kScratchFieldNumber = 11,
  };
  // .xla.gpu.GpuNormDescriptorProto norm_descriptor = 1;
  bool has_norm_descriptor() const;
  void clear_norm_descriptor() ;
  const ::xla::gpu::GpuNormDescriptorProto& norm_descriptor() const;
  [[nodiscard]] ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE release_norm_descriptor();
  ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NONNULL mutable_norm_descriptor();
  void set_allocated_norm_descriptor(::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_norm_descriptor(::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE unsafe_arena_release_norm_descriptor();

  private:
  const ::xla::gpu::GpuNormDescriptorProto& _internal_norm_descriptor() const;
  ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NONNULL _internal_mutable_norm_descriptor();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto x = 2;
  bool has_x() const;
  void clear_x() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& x() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_x();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_x();
  void set_allocated_x(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_x(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_x();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_x() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_x();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto scale = 3;
  bool has_scale() const;
  void clear_scale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& scale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_scale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_scale();
  void set_allocated_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_scale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_scale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_scale();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto y_or_dx = 4;
  bool has_y_or_dx() const;
  void clear_y_or_dx() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& y_or_dx() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_y_or_dx();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_y_or_dx();
  void set_allocated_y_or_dx(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_y_or_dx(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_y_or_dx();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_y_or_dx() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_y_or_dx();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto bias = 5;
  bool has_bias() const;
  void clear_bias() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& bias() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_bias();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_bias();
  void set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_bias();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_bias() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_bias();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto expectation = 6;
  bool has_expectation() const;
  void clear_expectation() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& expectation() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_expectation();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_expectation();
  void set_allocated_expectation(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_expectation(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_expectation();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_expectation() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_expectation();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto norm_factor = 7;
  bool has_norm_factor() const;
  void clear_norm_factor() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& norm_factor() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_norm_factor();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_norm_factor();
  void set_allocated_norm_factor(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_norm_factor(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_norm_factor();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_norm_factor() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_norm_factor();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto dy = 8;
  bool has_dy() const;
  void clear_dy() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dy() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dy();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dy();
  void set_allocated_dy(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dy(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dy();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dy() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dy();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto dscale = 9;
  bool has_dscale() const;
  void clear_dscale() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dscale() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dscale();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dscale();
  void set_allocated_dscale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dscale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dscale();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dscale() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dscale();

  public:
  // optional .xla.buffer_assignment.BufferAllocationSliceProto dbias = 10;
  bool has_dbias() const;
  void clear_dbias() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& dbias() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_dbias();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_dbias();
  void set_allocated_dbias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dbias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_dbias();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_dbias() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_dbias();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto scratch = 11;
  bool has_scratch() const;
  void clear_scratch() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& scratch() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_scratch();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_scratch();
  void set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_scratch();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_scratch() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_scratch();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const NormThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE norm_descriptor_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE x_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE scale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE y_or_dx_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE bias_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE expectation_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE norm_factor_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dy_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dscale_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE dbias_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE scratch_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CustomCallThunkProto(const CustomCallThunkProto& from) : CustomCallThunkProto(nullptr, from) {}
  inline CustomCallThunkProto(CustomCallThunkProto&& from) noexcept
      : CustomCallThunkProto(nullptr, ::std::move(from)) {}
  inline CustomCallThunkProto& operator=(const CustomCallThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CustomCallThunkProto& operator=(CustomCallThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CustomCallThunkProto& default_instance() {
    return *reinterpret_cast<const CustomCallThunkProto*>(
        &_CustomCallThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 32;
  friend void swap(CustomCallThunkProto& a, CustomCallThunkProto& b) { a.Swap(&b); }
  inline void Swap(CustomCallThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CustomCallThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOperandsFieldNumber = 2,
    kResultsFieldNumber = 3,
    kTargetNameFieldNumber = 1,
    kOpaqueFieldNumber = 4,
    kCalledComputationFieldNumber = 7,
    kAttributesFieldNumber = 6,
    kExecutionStateFieldNumber = 8,
    kApiVersionFieldNumber = 5,
  };
  // repeated .xla.NullableShapedSliceProto operands = 2;
  int operands_size() const;
  private:
  int _internal_operands_size() const;

  public:
  void clear_operands() ;
  ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL mutable_operands(int index);
  ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL mutable_operands();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& _internal_operands() const;
  ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_operands();
  public:
  const ::xla::NullableShapedSliceProto& operands(int index) const;
  ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL add_operands();
  const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& operands() const;
  // repeated .xla.NullableShapedSliceProto results = 3;
  int results_size() const;
  private:
  int _internal_results_size() const;

  public:
  void clear_results() ;
  ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL mutable_results(int index);
  ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL mutable_results();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& _internal_results() const;
  ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_results();
  public:
  const ::xla::NullableShapedSliceProto& results(int index) const;
  ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL add_results();
  const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& results() const;
  // string target_name = 1;
  void clear_target_name() ;
  const ::std::string& target_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_target_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_target_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_target_name();
  void set_allocated_target_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_target_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_target_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_target_name();

  public:
  // bytes opaque = 4;
  void clear_opaque() ;
  const ::std::string& opaque() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_opaque(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_opaque();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_opaque();
  void set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_opaque() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_opaque(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_opaque();

  public:
  // optional string called_computation = 7;
  bool has_called_computation() const;
  void clear_called_computation() ;
  const ::std::string& called_computation() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_called_computation(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_called_computation();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_called_computation();
  void set_allocated_called_computation(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_called_computation() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_called_computation(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_called_computation();

  public:
  // .xla.ffi.AttributesMapProto attributes = 6;
  bool has_attributes() const;
  void clear_attributes() ;
  const ::xla::ffi::AttributesMapProto& attributes() const;
  [[nodiscard]] ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE release_attributes();
  ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL mutable_attributes();
  void set_allocated_attributes(::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_attributes(::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE unsafe_arena_release_attributes();

  private:
  const ::xla::ffi::AttributesMapProto& _internal_attributes() const;
  ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL _internal_mutable_attributes();

  public:
  // optional .xla.ffi.ExecutionStateProto execution_state = 8;
  bool has_execution_state() const;
  void clear_execution_state() ;
  const ::xla::ffi::ExecutionStateProto& execution_state() const;
  [[nodiscard]] ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE release_execution_state();
  ::xla::ffi::ExecutionStateProto* PROTOBUF_NONNULL mutable_execution_state();
  void set_allocated_execution_state(::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_execution_state(::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE unsafe_arena_release_execution_state();

  private:
  const ::xla::ffi::ExecutionStateProto& _internal_execution_state() const;
  ::xla::ffi::ExecutionStateProto* PROTOBUF_NONNULL _internal_mutable_execution_state();

  public:
  // .xla.CustomCallApiVersion api_version = 5;
  void clear_api_version() ;
  ::xla::CustomCallApiVersion api_version() const;
  void set_api_version(::xla::CustomCallApiVersion value);

  private:
  ::xla::CustomCallApiVersion _internal_api_version() const;
  void _internal_set_api_version(::xla::CustomCallApiVersion value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CustomCallThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::NullableShapedSliceProto > operands_;
    ::google::protobuf::RepeatedPtrField< ::xla::NullableShapedSliceProto > results_;
    ::google::protobuf::internal::ArenaStringPtr target_name_;
    ::google::protobuf::internal::ArenaStringPtr opaque_;
    ::google::protobuf::internal::ArenaStringPtr called_computation_;
    ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE attributes_;
    ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE execution_state_;
    int api_version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ConvolutionThunkProto(const ConvolutionThunkProto& from) : ConvolutionThunkProto(nullptr, from) {}
  inline ConvolutionThunkProto(ConvolutionThunkProto&& from) noexcept
      : ConvolutionThunkProto(nullptr, ::std::move(from)) {}
  inline ConvolutionThunkProto& operator=(const ConvolutionThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConvolutionThunkProto& operator=(ConvolutionThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ConvolutionThunkProto& default_instance() {
    return *reinterpret_cast<const ConvolutionThunkProto*>(
        &_ConvolutionThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 29;
  friend void swap(ConvolutionThunkProto& a, ConvolutionThunkProto& b) { a.Swap(&b); }
  inline void Swap(ConvolutionThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConvolutionThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kOperandBuffersFieldNumber = 2,
    kResultBuffersFieldNumber = 3,
    kConvDescriptorFieldNumber = 1,
    kScratchBufferFieldNumber = 4,
  };
  // repeated .xla.ShapedSliceProto operand_buffers = 2;
  int operand_buffers_size() const;
  private:
  int _internal_operand_buffers_size() const;

  public:
  void clear_operand_buffers() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_operand_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_operand_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_operand_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_operand_buffers();
  public:
  const ::xla::ShapedSliceProto& operand_buffers(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_operand_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& operand_buffers() const;
  // repeated .xla.ShapedSliceProto result_buffers = 3;
  int result_buffers_size() const;
  private:
  int _internal_result_buffers_size() const;

  public:
  void clear_result_buffers() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_result_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_result_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_result_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_result_buffers();
  public:
  const ::xla::ShapedSliceProto& result_buffers(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_result_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& result_buffers() const;
  // .xla.gpu.GpuConvDescriptorProto conv_descriptor = 1;
  bool has_conv_descriptor() const;
  void clear_conv_descriptor() ;
  const ::xla::gpu::GpuConvDescriptorProto& conv_descriptor() const;
  [[nodiscard]] ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE release_conv_descriptor();
  ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NONNULL mutable_conv_descriptor();
  void set_allocated_conv_descriptor(::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_conv_descriptor(::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE unsafe_arena_release_conv_descriptor();

  private:
  const ::xla::gpu::GpuConvDescriptorProto& _internal_conv_descriptor() const;
  ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NONNULL _internal_mutable_conv_descriptor();

  public:
  // .xla.buffer_assignment.BufferAllocationSliceProto scratch_buffer = 4;
  bool has_scratch_buffer() const;
  void clear_scratch_buffer() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& scratch_buffer() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_scratch_buffer();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_scratch_buffer();
  void set_allocated_scratch_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scratch_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_scratch_buffer();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_scratch_buffer() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_scratch_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ConvolutionThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > operand_buffers_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > result_buffers_;
    ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE conv_descriptor_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE scratch_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ConvolutionReorderThunkProto(const ConvolutionReorderThunkProto& from) : ConvolutionReorderThunkProto(nullptr, from) {}
  inline ConvolutionReorderThunkProto(ConvolutionReorderThunkProto&& from) noexcept
      : ConvolutionReorderThunkProto(nullptr, ::std::move(from)) {}
  inline ConvolutionReorderThunkProto& operator=(const ConvolutionReorderThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConvolutionReorderThunkProto& operator=(ConvolutionReorderThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ConvolutionReorderThunkProto& default_instance() {
    return *reinterpret_cast<const ConvolutionReorderThunkProto*>(
        &_ConvolutionReorderThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 30;
  friend void swap(ConvolutionReorderThunkProto& a, ConvolutionReorderThunkProto& b) { a.Swap(&b); }
  inline void Swap(ConvolutionReorderThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConvolutionReorderThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFilterInputFieldNumber = 1,
    kFilterOutputFieldNumber = 2,
    kBiasesFieldNumber = 3,
  };
  // .xla.ShapedSliceProto filter_input = 1;
  bool has_filter_input() const;
  void clear_filter_input() ;
  const ::xla::ShapedSliceProto& filter_input() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_filter_input();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_filter_input();
  void set_allocated_filter_input(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_filter_input(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_filter_input();

  private:
  const ::xla::ShapedSliceProto& _internal_filter_input() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_filter_input();

  public:
  // .xla.ShapedSliceProto filter_output = 2;
  bool has_filter_output() const;
  void clear_filter_output() ;
  const ::xla::ShapedSliceProto& filter_output() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_filter_output();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_filter_output();
  void set_allocated_filter_output(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_filter_output(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_filter_output();

  private:
  const ::xla::ShapedSliceProto& _internal_filter_output() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_filter_output();

  public:
  // optional .xla.gpu.ConvolutionReorderBiasBuffers biases = 3;
  bool has_biases() const;
  void clear_biases() ;
  const ::xla::gpu::ConvolutionReorderBiasBuffers& biases() const;
  [[nodiscard]] ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE release_biases();
  ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NONNULL mutable_biases();
  void set_allocated_biases(::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_biases(::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE value);
  ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE unsafe_arena_release_biases();

  private:
  const ::xla::gpu::ConvolutionReorderBiasBuffers& _internal_biases() const;
  ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NONNULL _internal_mutable_biases();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ConvolutionReorderThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE filter_input_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE filter_output_;
    ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE biases_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectivePermuteStartThunkProto(const CollectivePermuteStartThunkProto& from) : CollectivePermuteStartThunkProto(nullptr, from) {}
  inline CollectivePermuteStartThunkProto(CollectivePermuteStartThunkProto&& from) noexcept
      : CollectivePermuteStartThunkProto(nullptr, ::std::move(from)) {}
  inline CollectivePermuteStartThunkProto& operator=(const CollectivePermuteStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectivePermuteStartThunkProto& operator=(CollectivePermuteStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectivePermuteStartThunkProto& default_instance() {
    return *reinterpret_cast<const CollectivePermuteStartThunkProto*>(
        &_CollectivePermuteStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 42;
  friend void swap(CollectivePermuteStartThunkProto& a, CollectivePermuteStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(CollectivePermuteStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectivePermuteStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 2,
    kSourceTargetPairsFieldNumber = 4,
    kCollectiveConfigFieldNumber = 3,
    kAsyncEventsUniqueIdFieldNumber = 1,
    kP2PMemcpyEnabledFieldNumber = 6,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 2;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // repeated .xla.SourceTarget source_target_pairs = 4;
  int source_target_pairs_size() const;
  private:
  int _internal_source_target_pairs_size() const;

  public:
  void clear_source_target_pairs() ;
  ::xla::SourceTarget* PROTOBUF_NONNULL mutable_source_target_pairs(int index);
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL mutable_source_target_pairs();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& _internal_source_target_pairs() const;
  ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL _internal_mutable_source_target_pairs();
  public:
  const ::xla::SourceTarget& source_target_pairs(int index) const;
  ::xla::SourceTarget* PROTOBUF_NONNULL add_source_target_pairs();
  const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& source_target_pairs() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 3;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // bool p2p_memcpy_enabled = 6;
  void clear_p2p_memcpy_enabled() ;
  bool p2p_memcpy_enabled() const;
  void set_p2p_memcpy_enabled(bool value);

  private:
  bool _internal_p2p_memcpy_enabled() const;
  void _internal_set_p2p_memcpy_enabled(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectivePermuteStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::google::protobuf::RepeatedPtrField< ::xla::SourceTarget > source_target_pairs_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    bool p2p_memcpy_enabled_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveBroadcastStartThunkProto(const CollectiveBroadcastStartThunkProto& from) : CollectiveBroadcastStartThunkProto(nullptr, from) {}
  inline CollectiveBroadcastStartThunkProto(CollectiveBroadcastStartThunkProto&& from) noexcept
      : CollectiveBroadcastStartThunkProto(nullptr, ::std::move(from)) {}
  inline CollectiveBroadcastStartThunkProto& operator=(const CollectiveBroadcastStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveBroadcastStartThunkProto& operator=(CollectiveBroadcastStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveBroadcastStartThunkProto& default_instance() {
    return *reinterpret_cast<const CollectiveBroadcastStartThunkProto*>(
        &_CollectiveBroadcastStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 45;
  friend void swap(CollectiveBroadcastStartThunkProto& a, CollectiveBroadcastStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 2,
    kCollectiveConfigFieldNumber = 3,
    kAsyncEventsUniqueIdFieldNumber = 1,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 2;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 3;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveBroadcastStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline AllToAllStartThunkProto(const AllToAllStartThunkProto& from) : AllToAllStartThunkProto(nullptr, from) {}
  inline AllToAllStartThunkProto(AllToAllStartThunkProto&& from) noexcept
      : AllToAllStartThunkProto(nullptr, ::std::move(from)) {}
  inline AllToAllStartThunkProto& operator=(const AllToAllStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline AllToAllStartThunkProto& operator=(AllToAllStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AllToAllStartThunkProto& default_instance() {
    return *reinterpret_cast<const AllToAllStartThunkProto*>(
        &_AllToAllStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 40;
  friend void swap(AllToAllStartThunkProto& a, AllToAllStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(AllToAllStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AllToAllStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 3,
    kCollectiveConfigFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 1,
    kHasSplitDimensionFieldNumber = 4,
    kP2PMemcpyEnabledFieldNumber = 5,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 3;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 2;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // bool has_split_dimension = 4;
  void clear_has_split_dimension() ;
  bool has_split_dimension() const;
  void set_has_split_dimension(bool value);

  private:
  bool _internal_has_split_dimension() const;
  void _internal_set_has_split_dimension(bool value);

  public:
  // bool p2p_memcpy_enabled = 5;
  void clear_p2p_memcpy_enabled() ;
  bool p2p_memcpy_enabled() const;
  void set_p2p_memcpy_enabled(bool value);

  private:
  bool _internal_p2p_memcpy_enabled() const;
  void _internal_set_p2p_memcpy_enabled(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AllToAllStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    bool has_split_dimension_;
    bool p2p_memcpy_enabled_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline AllReduceStartThunkProto(const AllReduceStartThunkProto& from) : AllReduceStartThunkProto(nullptr, from) {}
  inline AllReduceStartThunkProto(AllReduceStartThunkProto&& from) noexcept
      : AllReduceStartThunkProto(nullptr, ::std::move(from)) {}
  inline AllReduceStartThunkProto& operator=(const AllReduceStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline AllReduceStartThunkProto& operator=(AllReduceStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AllReduceStartThunkProto& default_instance() {
    return *reinterpret_cast<const AllReduceStartThunkProto*>(
        &_AllReduceStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 38;
  friend void swap(AllReduceStartThunkProto& a, AllReduceStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(AllReduceStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AllReduceStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 3,
    kKernelNameFieldNumber = 7,
    kCollectiveConfigFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 1,
    kReductionKindFieldNumber = 4,
    kShmemBytesFieldNumber = 6,
    kIsMultimemEnabledFieldNumber = 5,
    kCollectiveKernelEnabledFieldNumber = 8,
    kIsAsyncFieldNumber = 9,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 3;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // string kernel_name = 7;
  void clear_kernel_name() ;
  const ::std::string& kernel_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_kernel_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_kernel_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_kernel_name();
  void set_allocated_kernel_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_kernel_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_kernel_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_kernel_name();

  public:
  // .xla.gpu.CollectiveConfigProto collective_config = 2;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // .xla.gpu.ReductionKindProto reduction_kind = 4;
  void clear_reduction_kind() ;
  ::xla::gpu::ReductionKindProto reduction_kind() const;
  void set_reduction_kind(::xla::gpu::ReductionKindProto value);

  private:
  ::xla::gpu::ReductionKindProto _internal_reduction_kind() const;
  void _internal_set_reduction_kind(::xla::gpu::ReductionKindProto value);

  public:
  // int32 shmem_bytes = 6;
  void clear_shmem_bytes() ;
  ::int32_t shmem_bytes() const;
  void set_shmem_bytes(::int32_t value);

  private:
  ::int32_t _internal_shmem_bytes() const;
  void _internal_set_shmem_bytes(::int32_t value);

  public:
  // bool is_multimem_enabled = 5;
  void clear_is_multimem_enabled() ;
  bool is_multimem_enabled() const;
  void set_is_multimem_enabled(bool value);

  private:
  bool _internal_is_multimem_enabled() const;
  void _internal_set_is_multimem_enabled(bool value);

  public:
  // bool collective_kernel_enabled = 8;
  void clear_collective_kernel_enabled() ;
  bool collective_kernel_enabled() const;
  void set_collective_kernel_enabled(bool value);

  private:
  bool _internal_collective_kernel_enabled() const;
  void _internal_set_collective_kernel_enabled(bool value);

  public:
  // bool is_async = 9;
  void clear_is_async() ;
  bool is_async() const;
  void set_is_async(bool value);

  private:
  bool _internal_is_async() const;
  void _internal_set_is_async(bool value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AllReduceStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::google::protobuf::internal::ArenaStringPtr kernel_name_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    int reduction_kind_;
    ::int32_t shmem_bytes_;
    bool is_multimem_enabled_;
    bool collective_kernel_enabled_;
    bool is_async_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline AllGatherStartThunkProto(const AllGatherStartThunkProto& from) : AllGatherStartThunkProto(nullptr, from) {}
  inline AllGatherStartThunkProto(AllGatherStartThunkProto&& from) noexcept
      : AllGatherStartThunkProto(nullptr, ::std::move(from)) {}
  inline AllGatherStartThunkProto& operator=(const AllGatherStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline AllGatherStartThunkProto& operator=(AllGatherStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AllGatherStartThunkProto& default_instance() {
    return *reinterpret_cast<const AllGatherStartThunkProto*>(
        &_AllGatherStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 37;
  friend void swap(AllGatherStartThunkProto& a, AllGatherStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(AllGatherStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AllGatherStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBuffersFieldNumber = 3,
    kCollectiveConfigFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 1,
  };
  // repeated .xla.gpu.CollectiveBufferProto buffers = 3;
  int buffers_size() const;
  private:
  int _internal_buffers_size() const;

  public:
  void clear_buffers() ;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL mutable_buffers(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL mutable_buffers();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& _internal_buffers() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL _internal_mutable_buffers();
  public:
  const ::xla::gpu::CollectiveBufferProto& buffers(int index) const;
  ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL add_buffers();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& buffers() const;
  // .xla.gpu.CollectiveConfigProto collective_config = 2;
  bool has_collective_config() const;
  void clear_collective_config() ;
  const ::xla::gpu::CollectiveConfigProto& collective_config() const;
  [[nodiscard]] ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE release_collective_config();
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL mutable_collective_config();
  void set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_config();

  private:
  const ::xla::gpu::CollectiveConfigProto& _internal_collective_config() const;
  ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL _internal_mutable_collective_config();

  public:
  // optional uint64 async_events_unique_id = 1;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AllGatherStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::CollectiveBufferProto > buffers_;
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE collective_config_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CustomKernelThunkProto(const CustomKernelThunkProto& from) : CustomKernelThunkProto(nullptr, from) {}
  inline CustomKernelThunkProto(CustomKernelThunkProto&& from) noexcept
      : CustomKernelThunkProto(nullptr, ::std::move(from)) {}
  inline CustomKernelThunkProto& operator=(const CustomKernelThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CustomKernelThunkProto& operator=(CustomKernelThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CustomKernelThunkProto& default_instance() {
    return *reinterpret_cast<const CustomKernelThunkProto*>(
        &_CustomKernelThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 33;
  friend void swap(CustomKernelThunkProto& a, CustomKernelThunkProto& b) { a.Swap(&b); }
  inline void Swap(CustomKernelThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CustomKernelThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgsFieldNumber = 1,
    kWrittenFieldNumber = 2,
    kCustomKernelFieldNumber = 3,
  };
  // repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
  int args_size() const;
  private:
  int _internal_args_size() const;

  public:
  void clear_args() ;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_args(int index);
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL mutable_args();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& _internal_args() const;
  ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL _internal_mutable_args();
  public:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& args(int index) const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL add_args();
  const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& args() const;
  // repeated bool written = 2;
  int written_size() const;
  private:
  int _internal_written_size() const;

  public:
  void clear_written() ;
  bool written(int index) const;
  void set_written(int index, bool value);
  void add_written(bool value);
  const ::google::protobuf::RepeatedField<bool>& written() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_written();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_written() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_written();

  public:
  // .xla.gpu.CustomKernelProto custom_kernel = 3;
  bool has_custom_kernel() const;
  void clear_custom_kernel() ;
  const ::xla::gpu::CustomKernelProto& custom_kernel() const;
  [[nodiscard]] ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE release_custom_kernel();
  ::xla::gpu::CustomKernelProto* PROTOBUF_NONNULL mutable_custom_kernel();
  void set_allocated_custom_kernel(::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_kernel(::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE unsafe_arena_release_custom_kernel();

  private:
  const ::xla::gpu::CustomKernelProto& _internal_custom_kernel() const;
  ::xla::gpu::CustomKernelProto* PROTOBUF_NONNULL _internal_mutable_custom_kernel();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CustomKernelThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::buffer_assignment::BufferAllocationSliceProto > args_;
    ::google::protobuf::RepeatedField<bool> written_;
    ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE custom_kernel_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline HostExecuteStartThunkProto(const HostExecuteStartThunkProto& from) : HostExecuteStartThunkProto(nullptr, from) {}
  inline HostExecuteStartThunkProto(HostExecuteStartThunkProto&& from) noexcept
      : HostExecuteStartThunkProto(nullptr, ::std::move(from)) {}
  inline HostExecuteStartThunkProto& operator=(const HostExecuteStartThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline HostExecuteStartThunkProto& operator=(HostExecuteStartThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HostExecuteStartThunkProto& default_instance() {
    return *reinterpret_cast<const HostExecuteStartThunkProto*>(
        &_HostExecuteStartThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(HostExecuteStartThunkProto& a, HostExecuteStartThunkProto& b) { a.Swap(&b); }
  inline void Swap(HostExecuteStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HostExecuteStartThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgsFieldNumber = 2,
    kResultsFieldNumber = 3,
    kExecutableProtoFieldNumber = 1,
    kAsyncEventsUniqueIdFieldNumber = 4,
  };
  // repeated .xla.ShapedSliceProto args = 2;
  int args_size() const;
  private:
  int _internal_args_size() const;

  public:
  void clear_args() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_args(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_args();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_args() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_args();
  public:
  const ::xla::ShapedSliceProto& args(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_args();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& args() const;
  // repeated .xla.ShapedSliceProto results = 3;
  int results_size() const;
  private:
  int _internal_results_size() const;

  public:
  void clear_results() ;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_results(int index);
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL mutable_results();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& _internal_results() const;
  ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL _internal_mutable_results();
  public:
  const ::xla::ShapedSliceProto& results(int index) const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL add_results();
  const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& results() const;
  // .xla.HostOffloadingExecutableProto executable_proto = 1;
  bool has_executable_proto() const;
  void clear_executable_proto() ;
  const ::xla::HostOffloadingExecutableProto& executable_proto() const;
  [[nodiscard]] ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE release_executable_proto();
  ::xla::HostOffloadingExecutableProto* PROTOBUF_NONNULL mutable_executable_proto();
  void set_allocated_executable_proto(::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_executable_proto(::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE value);
  ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE unsafe_arena_release_executable_proto();

  private:
  const ::xla::HostOffloadingExecutableProto& _internal_executable_proto() const;
  ::xla::HostOffloadingExecutableProto* PROTOBUF_NONNULL _internal_mutable_executable_proto();

  public:
  // uint64 async_events_unique_id = 4;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HostExecuteStartThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > args_;
    ::google::protobuf::RepeatedPtrField< ::xla::ShapedSliceProto > results_;
    ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE executable_proto_;
    ::uint64_t async_events_unique_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline CollectiveGroupThunkProto(const CollectiveGroupThunkProto& from) : CollectiveGroupThunkProto(nullptr, from) {}
  inline CollectiveGroupThunkProto(CollectiveGroupThunkProto&& from) noexcept
      : CollectiveGroupThunkProto(nullptr, ::std::move(from)) {}
  inline CollectiveGroupThunkProto& operator=(const CollectiveGroupThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline CollectiveGroupThunkProto& operator=(CollectiveGroupThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CollectiveGroupThunkProto& default_instance() {
    return *reinterpret_cast<const CollectiveGroupThunkProto*>(
        &_CollectiveGroupThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 47;
  friend void swap(CollectiveGroupThunkProto& a, CollectiveGroupThunkProto& b) { a.Swap(&b); }
  inline void Swap(CollectiveGroupThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CollectiveGroupThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kThunksFieldNumber = 2,
    kAsyncEventsUniqueIdFieldNumber = 4,
    kThunkKindFieldNumber = 1,
  };
  // repeated .xla.gpu.ThunkProto thunks = 2;
  int thunks_size() const;
  private:
  int _internal_thunks_size() const;

  public:
  void clear_thunks() ;
  ::xla::gpu::ThunkProto* PROTOBUF_NONNULL mutable_thunks(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL mutable_thunks();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& _internal_thunks() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL _internal_mutable_thunks();
  public:
  const ::xla::gpu::ThunkProto& thunks(int index) const;
  ::xla::gpu::ThunkProto* PROTOBUF_NONNULL add_thunks();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& thunks() const;
  // optional uint64 async_events_unique_id = 4;
  bool has_async_events_unique_id() const;
  void clear_async_events_unique_id() ;
  ::uint64_t async_events_unique_id() const;
  void set_async_events_unique_id(::uint64_t value);

  private:
  ::uint64_t _internal_async_events_unique_id() const;
  void _internal_set_async_events_unique_id(::uint64_t value);

  public:
  // .xla.gpu.ThunkKindProto thunk_kind = 1;
  void clear_thunk_kind() ;
  ::xla::gpu::ThunkKindProto thunk_kind() const;
  void set_thunk_kind(::xla::gpu::ThunkKindProto value);

  private:
  ::xla::gpu::ThunkKindProto _internal_thunk_kind() const;
  void _internal_set_thunk_kind(::xla::gpu::ThunkKindProto value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CollectiveGroupThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::ThunkProto > thunks_;
    ::uint64_t async_events_unique_id_;
    int thunk_kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ConditionalThunkProto(const ConditionalThunkProto& from) : ConditionalThunkProto(nullptr, from) {}
  inline ConditionalThunkProto(ConditionalThunkProto&& from) noexcept
      : ConditionalThunkProto(nullptr, ::std::move(from)) {}
  inline ConditionalThunkProto& operator=(const ConditionalThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConditionalThunkProto& operator=(ConditionalThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ConditionalThunkProto& default_instance() {
    return *reinterpret_cast<const ConditionalThunkProto*>(
        &_ConditionalThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ConditionalThunkProto& a, ConditionalThunkProto& b) { a.Swap(&b); }
  inline void Swap(ConditionalThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConditionalThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBranchThunksFieldNumber = 2,
    kBranchIndexBufferFieldNumber = 1,
  };
  // repeated .xla.gpu.SequentialThunkProto branch_thunks = 2;
  int branch_thunks_size() const;
  private:
  int _internal_branch_thunks_size() const;

  public:
  void clear_branch_thunks() ;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL mutable_branch_thunks(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>* PROTOBUF_NONNULL mutable_branch_thunks();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>& _internal_branch_thunks() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>* PROTOBUF_NONNULL _internal_mutable_branch_thunks();
  public:
  const ::xla::gpu::SequentialThunkProto& branch_thunks(int index) const;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL add_branch_thunks();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>& branch_thunks() const;
  // .xla.ShapedSliceProto branch_index_buffer = 1;
  bool has_branch_index_buffer() const;
  void clear_branch_index_buffer() ;
  const ::xla::ShapedSliceProto& branch_index_buffer() const;
  [[nodiscard]] ::xla::ShapedSliceProto* PROTOBUF_NULLABLE release_branch_index_buffer();
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL mutable_branch_index_buffer();
  void set_allocated_branch_index_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_branch_index_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value);
  ::xla::ShapedSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_branch_index_buffer();

  private:
  const ::xla::ShapedSliceProto& _internal_branch_index_buffer() const;
  ::xla::ShapedSliceProto* PROTOBUF_NONNULL _internal_mutable_branch_index_buffer();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ConditionalThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::SequentialThunkProto > branch_thunks_;
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE branch_index_buffer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline DynamicSliceThunkProto(const DynamicSliceThunkProto& from) : DynamicSliceThunkProto(nullptr, from) {}
  inline DynamicSliceThunkProto(DynamicSliceThunkProto&& from) noexcept
      : DynamicSliceThunkProto(nullptr, ::std::move(from)) {}
  inline DynamicSliceThunkProto& operator=(const DynamicSliceThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline DynamicSliceThunkProto& operator=(DynamicSliceThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const DynamicSliceThunkProto& default_instance() {
    return *reinterpret_cast<const DynamicSliceThunkProto*>(
        &_DynamicSliceThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(DynamicSliceThunkProto& a, DynamicSliceThunkProto& b) { a.Swap(&b); }
  inline void Swap(DynamicSliceThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DynamicSliceThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kArgumentsFieldNumber = 2,
    kOffsetsFieldNumber = 3,
    kOrigShapesFieldNumber = 4,
    kSlicedShapesFieldNumber = 5,
    kOffsetPrimitiveTypesFieldNumber = 6,
    kFakeAllocationsFieldNumber = 8,
    kEmbeddedThunkFieldNumber = 1,
    kOffsetAsFunctionOfIndvarModulesMetadataFieldNumber = 7,
  };
  // repeated .xla.gpu.OptionalBufferAllocationSliceProto arguments = 2;
  int arguments_size() const;
  private:
  int _internal_arguments_size() const;

  public:
  void clear_arguments() ;
  ::xla::gpu::OptionalBufferAllocationSliceProto* PROTOBUF_NONNULL mutable_arguments(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>* PROTOBUF_NONNULL mutable_arguments();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>& _internal_arguments() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>* PROTOBUF_NONNULL _internal_mutable_arguments();
  public:
  const ::xla::gpu::OptionalBufferAllocationSliceProto& arguments(int index) const;
  ::xla::gpu::OptionalBufferAllocationSliceProto* PROTOBUF_NONNULL add_arguments();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>& arguments() const;
  // repeated .xla.gpu.OptionalDynamicSliceOffsetsProto offsets = 3;
  int offsets_size() const;
  private:
  int _internal_offsets_size() const;

  public:
  void clear_offsets() ;
  ::xla::gpu::OptionalDynamicSliceOffsetsProto* PROTOBUF_NONNULL mutable_offsets(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>* PROTOBUF_NONNULL mutable_offsets();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>& _internal_offsets() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>* PROTOBUF_NONNULL _internal_mutable_offsets();
  public:
  const ::xla::gpu::OptionalDynamicSliceOffsetsProto& offsets(int index) const;
  ::xla::gpu::OptionalDynamicSliceOffsetsProto* PROTOBUF_NONNULL add_offsets();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>& offsets() const;
  // repeated .xla.gpu.OptionalShapeProto orig_shapes = 4;
  int orig_shapes_size() const;
  private:
  int _internal_orig_shapes_size() const;

  public:
  void clear_orig_shapes() ;
  ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL mutable_orig_shapes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL mutable_orig_shapes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& _internal_orig_shapes() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL _internal_mutable_orig_shapes();
  public:
  const ::xla::gpu::OptionalShapeProto& orig_shapes(int index) const;
  ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL add_orig_shapes();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& orig_shapes() const;
  // repeated .xla.gpu.OptionalShapeProto sliced_shapes = 5;
  int sliced_shapes_size() const;
  private:
  int _internal_sliced_shapes_size() const;

  public:
  void clear_sliced_shapes() ;
  ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL mutable_sliced_shapes(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL mutable_sliced_shapes();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& _internal_sliced_shapes() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL _internal_mutable_sliced_shapes();
  public:
  const ::xla::gpu::OptionalShapeProto& sliced_shapes(int index) const;
  ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL add_sliced_shapes();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& sliced_shapes() const;
  // repeated .xla.gpu.OptionalPrimitiveType offset_primitive_types = 6;
  int offset_primitive_types_size() const;
  private:
  int _internal_offset_primitive_types_size() const;

  public:
  void clear_offset_primitive_types() ;
  ::xla::gpu::OptionalPrimitiveType* PROTOBUF_NONNULL mutable_offset_primitive_types(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>* PROTOBUF_NONNULL mutable_offset_primitive_types();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>& _internal_offset_primitive_types() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>* PROTOBUF_NONNULL _internal_mutable_offset_primitive_types();
  public:
  const ::xla::gpu::OptionalPrimitiveType& offset_primitive_types(int index) const;
  ::xla::gpu::OptionalPrimitiveType* PROTOBUF_NONNULL add_offset_primitive_types();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>& offset_primitive_types() const;
  // repeated .xla.BufferAllocationProto fake_allocations = 8;
  int fake_allocations_size() const;
  private:
  int _internal_fake_allocations_size() const;

  public:
  void clear_fake_allocations() ;
  ::xla::BufferAllocationProto* PROTOBUF_NONNULL mutable_fake_allocations(int index);
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL mutable_fake_allocations();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& _internal_fake_allocations() const;
  ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL _internal_mutable_fake_allocations();
  public:
  const ::xla::BufferAllocationProto& fake_allocations(int index) const;
  ::xla::BufferAllocationProto* PROTOBUF_NONNULL add_fake_allocations();
  const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& fake_allocations() const;
  // .xla.gpu.SequentialThunkProto embedded_thunk = 1;
  bool has_embedded_thunk() const;
  void clear_embedded_thunk() ;
  const ::xla::gpu::SequentialThunkProto& embedded_thunk() const;
  [[nodiscard]] ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE release_embedded_thunk();
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL mutable_embedded_thunk();
  void set_allocated_embedded_thunk(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_embedded_thunk(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_embedded_thunk();

  private:
  const ::xla::gpu::SequentialThunkProto& _internal_embedded_thunk() const;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL _internal_mutable_embedded_thunk();

  public:
  // optional .xla.gpu.OffsetAsFunctionOfIndvarModulesMetadataProto offset_as_function_of_indvar_modules_metadata = 7;
  bool has_offset_as_function_of_indvar_modules_metadata() const;
  void clear_offset_as_function_of_indvar_modules_metadata() ;
  const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto& offset_as_function_of_indvar_modules_metadata() const;
  [[nodiscard]] ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE release_offset_as_function_of_indvar_modules_metadata();
  ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NONNULL mutable_offset_as_function_of_indvar_modules_metadata();
  void set_allocated_offset_as_function_of_indvar_modules_metadata(::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_offset_as_function_of_indvar_modules_metadata(::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE unsafe_arena_release_offset_as_function_of_indvar_modules_metadata();

  private:
  const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto& _internal_offset_as_function_of_indvar_modules_metadata() const;
  ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NONNULL _internal_mutable_offset_as_function_of_indvar_modules_metadata();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DynamicSliceThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::OptionalBufferAllocationSliceProto > arguments_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::OptionalDynamicSliceOffsetsProto > offsets_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::OptionalShapeProto > orig_shapes_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::OptionalShapeProto > sliced_shapes_;
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::OptionalPrimitiveType > offset_primitive_types_;
    ::google::protobuf::RepeatedPtrField< ::xla::BufferAllocationProto > fake_allocations_;
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE embedded_thunk_;
    ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE offset_as_function_of_indvar_modules_metadata_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline SequentialThunkProto(const SequentialThunkProto& from) : SequentialThunkProto(nullptr, from) {}
  inline SequentialThunkProto(SequentialThunkProto&& from) noexcept
      : SequentialThunkProto(nullptr, ::std::move(from)) {}
  inline SequentialThunkProto& operator=(const SequentialThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline SequentialThunkProto& operator=(SequentialThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SequentialThunkProto& default_instance() {
    return *reinterpret_cast<const SequentialThunkProto*>(
        &_SequentialThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 49;
  friend void swap(SequentialThunkProto& a, SequentialThunkProto& b) { a.Swap(&b); }
  inline void Swap(SequentialThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SequentialThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kThunksFieldNumber = 1,
  };
  // repeated .xla.gpu.ThunkProto thunks = 1;
  int thunks_size() const;
  private:
  int _internal_thunks_size() const;

  public:
  void clear_thunks() ;
  ::xla::gpu::ThunkProto* PROTOBUF_NONNULL mutable_thunks(int index);
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL mutable_thunks();

  private:
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& _internal_thunks() const;
  ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL _internal_mutable_thunks();
  public:
  const ::xla::gpu::ThunkProto& thunks(int index) const;
  ::xla::gpu::ThunkProto* PROTOBUF_NONNULL add_thunks();
  const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& thunks() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.SequentialThunkProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SequentialThunkProto& from_msg);
    ::google::protobuf::RepeatedPtrField< ::xla::gpu::ThunkProto > thunks_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline ThunkProto(const ThunkProto& from) : ThunkProto(nullptr, from) {}
  inline ThunkProto(ThunkProto&& from) noexcept
      : ThunkProto(nullptr, ::std::move(from)) {}
  inline ThunkProto& operator=(const ThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ThunkProto& operator=(ThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ThunkProto& default_instance() {
    return *reinterpret_cast<const ThunkProto*>(
        &_ThunkProto_default_instance_);
  }
  enum ImplCase {
    kSequentialThunk = 2,
    kCopyThunk = 3,
    kDeviceToHostCopyThunk = 4,
    kHostToDeviceCopyThunk = 5,
    kConditionalThunk = 6,
    kWhileThunk = 7,
    kKernelThunk = 8,
    kGemmThunk = 9,
    kWaitForStreamsThunk = 10,
    kTriangularSolveThunk = 11,
    kReplicaIdThunk = 12,
    kDeviceToDeviceCopyThunk = 13,
    kPartitionIdThunk = 14,
    kCudnnThunk = 15,
    kHostExecuteStartThunk = 16,
    kHostExecuteDoneThunk = 17,
    kDynamicSliceThunk = 18,
    kMemzeroThunk = 19,
    kSelectKThunk = 20,
    kInfeedThunk = 21,
    kCublasLtMatmulThunk = 22,
    kOutfeedThunk = 23,
    kNormThunk = 24,
    kConvolutionThunk = 25,
    kConvolutionReorderThunk = 26,
    kFftThunk = 27,
    kMemset32BitValueThunk = 28,
    kCustomCallThunk = 30,
    kCubSortThunk = 31,
    kHostSendThunk = 32,
    kHostSendDoneThunk = 33,
    kHostRecvThunk = 34,
    kHostRecvDoneThunk = 35,
    kCustomKernelThunk = 36,
    kCollectiveDoneThunk = 37,
    kAllGatherStartThunk = 38,
    kAllReduceStartThunk = 39,
    kReduceScatterStartThunk = 40,
    kAllToAllStartThunk = 41,
    kRaggedAllToAllStartThunk = 42,
    kCollectivePermuteStartThunk = 43,
    kSendThunk = 44,
    kRecvThunk = 45,
    kCollectiveBroadcastStartThunk = 46,
    kCollectiveGroupThunk = 47,
    kDynamicMemcpyThunk = 48,
    IMPL_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 48;
  friend void swap(ThunkProto& a, ThunkProto& b) { a.Swap(&b); }
  inline void Swap(ThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kThunkInfoFieldNumber = 1,
    kSequentialThunkFieldNumber = 2,
    kCopyThunkFieldNumber = 3,
    kDeviceToHostCopyThunkFieldNumber = 4,
    kHostToDeviceCopyThunkFieldNumber = 5,
    kConditionalThunkFieldNumber = 6,
    kWhileThunkFieldNumber = 7,
    kKernelThunkFieldNumber = 8,
    kGemmThunkFieldNumber = 9,
    kWaitForStreamsThunkFieldNumber = 10,
    kTriangularSolveThunkFieldNumber = 11,
    kReplicaIdThunkFieldNumber = 12,
    kDeviceToDeviceCopyThunkFieldNumber = 13,
    kPartitionIdThunkFieldNumber = 14,
    kCudnnThunkFieldNumber = 15,
    kHostExecuteStartThunkFieldNumber = 16,
    kHostExecuteDoneThunkFieldNumber = 17,
    kDynamicSliceThunkFieldNumber = 18,
    kMemzeroThunkFieldNumber = 19,
    kSelectKThunkFieldNumber = 20,
    kInfeedThunkFieldNumber = 21,
    kCublasLtMatmulThunkFieldNumber = 22,
    kOutfeedThunkFieldNumber = 23,
    kNormThunkFieldNumber = 24,
    kConvolutionThunkFieldNumber = 25,
    kConvolutionReorderThunkFieldNumber = 26,
    kFftThunkFieldNumber = 27,
    kMemset32BitValueThunkFieldNumber = 28,
    kCustomCallThunkFieldNumber = 30,
    kCubSortThunkFieldNumber = 31,
    kHostSendThunkFieldNumber = 32,
    kHostSendDoneThunkFieldNumber = 33,
    kHostRecvThunkFieldNumber = 34,
    kHostRecvDoneThunkFieldNumber = 35,
    kCustomKernelThunkFieldNumber = 36,
    kCollectiveDoneThunkFieldNumber = 37,
    kAllGatherStartThunkFieldNumber = 38,
    kAllReduceStartThunkFieldNumber = 39,
    kReduceScatterStartThunkFieldNumber = 40,
    kAllToAllStartThunkFieldNumber = 41,
    kRaggedAllToAllStartThunkFieldNumber = 42,
    kCollectivePermuteStartThunkFieldNumber = 43,
    kSendThunkFieldNumber = 44,
    kRecvThunkFieldNumber = 45,
    kCollectiveBroadcastStartThunkFieldNumber = 46,
    kCollectiveGroupThunkFieldNumber = 47,
    kDynamicMemcpyThunkFieldNumber = 48,
  };
  // .xla.gpu.ThunkInfoProto thunk_info = 1;
  bool has_thunk_info() const;
  void clear_thunk_info() ;
  const ::xla::gpu::ThunkInfoProto& thunk_info() const;
  [[nodiscard]] ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE release_thunk_info();
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL mutable_thunk_info();
  void set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE unsafe_arena_release_thunk_info();

  private:
  const ::xla::gpu::ThunkInfoProto& _internal_thunk_info() const;
  ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL _internal_mutable_thunk_info();

  public:
  // .xla.gpu.SequentialThunkProto sequential_thunk = 2;
  bool has_sequential_thunk() const;
  private:
  bool _internal_has_sequential_thunk() const;

  public:
  void clear_sequential_thunk() ;
  const ::xla::gpu::SequentialThunkProto& sequential_thunk() const;
  [[nodiscard]] ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE release_sequential_thunk();
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL mutable_sequential_thunk();
  void set_allocated_sequential_thunk(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sequential_thunk(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_sequential_thunk();

  private:
  const ::xla::gpu::SequentialThunkProto& _internal_sequential_thunk() const;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL _internal_mutable_sequential_thunk();

  public:
  // .xla.gpu.CopyThunkProto copy_thunk = 3;
  bool has_copy_thunk() const;
  private:
  bool _internal_has_copy_thunk() const;

  public:
  void clear_copy_thunk() ;
  const ::xla::gpu::CopyThunkProto& copy_thunk() const;
  [[nodiscard]] ::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE release_copy_thunk();
  ::xla::gpu::CopyThunkProto* PROTOBUF_NONNULL mutable_copy_thunk();
  void set_allocated_copy_thunk(::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_copy_thunk(::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_copy_thunk();

  private:
  const ::xla::gpu::CopyThunkProto& _internal_copy_thunk() const;
  ::xla::gpu::CopyThunkProto* PROTOBUF_NONNULL _internal_mutable_copy_thunk();

  public:
  // .xla.gpu.DeviceToHostCopyThunkProto device_to_host_copy_thunk = 4;
  bool has_device_to_host_copy_thunk() const;
  private:
  bool _internal_has_device_to_host_copy_thunk() const;

  public:
  void clear_device_to_host_copy_thunk() ;
  const ::xla::gpu::DeviceToHostCopyThunkProto& device_to_host_copy_thunk() const;
  [[nodiscard]] ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE release_device_to_host_copy_thunk();
  ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NONNULL mutable_device_to_host_copy_thunk();
  void set_allocated_device_to_host_copy_thunk(::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_device_to_host_copy_thunk(::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_device_to_host_copy_thunk();

  private:
  const ::xla::gpu::DeviceToHostCopyThunkProto& _internal_device_to_host_copy_thunk() const;
  ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NONNULL _internal_mutable_device_to_host_copy_thunk();

  public:
  // .xla.gpu.HostToDeviceCopyThunkProto host_to_device_copy_thunk = 5;
  bool has_host_to_device_copy_thunk() const;
  private:
  bool _internal_has_host_to_device_copy_thunk() const;

  public:
  void clear_host_to_device_copy_thunk() ;
  const ::xla::gpu::HostToDeviceCopyThunkProto& host_to_device_copy_thunk() const;
  [[nodiscard]] ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE release_host_to_device_copy_thunk();
  ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NONNULL mutable_host_to_device_copy_thunk();
  void set_allocated_host_to_device_copy_thunk(::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_to_device_copy_thunk(::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_to_device_copy_thunk();

  private:
  const ::xla::gpu::HostToDeviceCopyThunkProto& _internal_host_to_device_copy_thunk() const;
  ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NONNULL _internal_mutable_host_to_device_copy_thunk();

  public:
  // .xla.gpu.ConditionalThunkProto conditional_thunk = 6;
  bool has_conditional_thunk() const;
  private:
  bool _internal_has_conditional_thunk() const;

  public:
  void clear_conditional_thunk() ;
  const ::xla::gpu::ConditionalThunkProto& conditional_thunk() const;
  [[nodiscard]] ::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE release_conditional_thunk();
  ::xla::gpu::ConditionalThunkProto* PROTOBUF_NONNULL mutable_conditional_thunk();
  void set_allocated_conditional_thunk(::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_conditional_thunk(::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_conditional_thunk();

  private:
  const ::xla::gpu::ConditionalThunkProto& _internal_conditional_thunk() const;
  ::xla::gpu::ConditionalThunkProto* PROTOBUF_NONNULL _internal_mutable_conditional_thunk();

  public:
  // .xla.gpu.WhileThunkProto while_thunk = 7;
  bool has_while_thunk() const;
  private:
  bool _internal_has_while_thunk() const;

  public:
  void clear_while_thunk() ;
  const ::xla::gpu::WhileThunkProto& while_thunk() const;
  [[nodiscard]] ::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE release_while_thunk();
  ::xla::gpu::WhileThunkProto* PROTOBUF_NONNULL mutable_while_thunk();
  void set_allocated_while_thunk(::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_while_thunk(::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_while_thunk();

  private:
  const ::xla::gpu::WhileThunkProto& _internal_while_thunk() const;
  ::xla::gpu::WhileThunkProto* PROTOBUF_NONNULL _internal_mutable_while_thunk();

  public:
  // .xla.gpu.KernelThunkProto kernel_thunk = 8;
  bool has_kernel_thunk() const;
  private:
  bool _internal_has_kernel_thunk() const;

  public:
  void clear_kernel_thunk() ;
  const ::xla::gpu::KernelThunkProto& kernel_thunk() const;
  [[nodiscard]] ::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE release_kernel_thunk();
  ::xla::gpu::KernelThunkProto* PROTOBUF_NONNULL mutable_kernel_thunk();
  void set_allocated_kernel_thunk(::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_kernel_thunk(::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_kernel_thunk();

  private:
  const ::xla::gpu::KernelThunkProto& _internal_kernel_thunk() const;
  ::xla::gpu::KernelThunkProto* PROTOBUF_NONNULL _internal_mutable_kernel_thunk();

  public:
  // .xla.gpu.GemmThunkProto gemm_thunk = 9;
  bool has_gemm_thunk() const;
  private:
  bool _internal_has_gemm_thunk() const;

  public:
  void clear_gemm_thunk() ;
  const ::xla::gpu::GemmThunkProto& gemm_thunk() const;
  [[nodiscard]] ::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE release_gemm_thunk();
  ::xla::gpu::GemmThunkProto* PROTOBUF_NONNULL mutable_gemm_thunk();
  void set_allocated_gemm_thunk(::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_gemm_thunk(::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_gemm_thunk();

  private:
  const ::xla::gpu::GemmThunkProto& _internal_gemm_thunk() const;
  ::xla::gpu::GemmThunkProto* PROTOBUF_NONNULL _internal_mutable_gemm_thunk();

  public:
  // .xla.gpu.WaitForStreamsThunkProto wait_for_streams_thunk = 10;
  bool has_wait_for_streams_thunk() const;
  private:
  bool _internal_has_wait_for_streams_thunk() const;

  public:
  void clear_wait_for_streams_thunk() ;
  const ::xla::gpu::WaitForStreamsThunkProto& wait_for_streams_thunk() const;
  [[nodiscard]] ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE release_wait_for_streams_thunk();
  ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NONNULL mutable_wait_for_streams_thunk();
  void set_allocated_wait_for_streams_thunk(::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_wait_for_streams_thunk(::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_wait_for_streams_thunk();

  private:
  const ::xla::gpu::WaitForStreamsThunkProto& _internal_wait_for_streams_thunk() const;
  ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NONNULL _internal_mutable_wait_for_streams_thunk();

  public:
  // .xla.gpu.TriangularSolveThunkProto triangular_solve_thunk = 11;
  bool has_triangular_solve_thunk() const;
  private:
  bool _internal_has_triangular_solve_thunk() const;

  public:
  void clear_triangular_solve_thunk() ;
  const ::xla::gpu::TriangularSolveThunkProto& triangular_solve_thunk() const;
  [[nodiscard]] ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE release_triangular_solve_thunk();
  ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NONNULL mutable_triangular_solve_thunk();
  void set_allocated_triangular_solve_thunk(::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_triangular_solve_thunk(::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_triangular_solve_thunk();

  private:
  const ::xla::gpu::TriangularSolveThunkProto& _internal_triangular_solve_thunk() const;
  ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NONNULL _internal_mutable_triangular_solve_thunk();

  public:
  // .xla.gpu.ReplicaIdThunkProto replica_id_thunk = 12;
  bool has_replica_id_thunk() const;
  private:
  bool _internal_has_replica_id_thunk() const;

  public:
  void clear_replica_id_thunk() ;
  const ::xla::gpu::ReplicaIdThunkProto& replica_id_thunk() const;
  [[nodiscard]] ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE release_replica_id_thunk();
  ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NONNULL mutable_replica_id_thunk();
  void set_allocated_replica_id_thunk(::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_replica_id_thunk(::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_replica_id_thunk();

  private:
  const ::xla::gpu::ReplicaIdThunkProto& _internal_replica_id_thunk() const;
  ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NONNULL _internal_mutable_replica_id_thunk();

  public:
  // .xla.gpu.DeviceToDeviceCopyThunkProto device_to_device_copy_thunk = 13;
  bool has_device_to_device_copy_thunk() const;
  private:
  bool _internal_has_device_to_device_copy_thunk() const;

  public:
  void clear_device_to_device_copy_thunk() ;
  const ::xla::gpu::DeviceToDeviceCopyThunkProto& device_to_device_copy_thunk() const;
  [[nodiscard]] ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE release_device_to_device_copy_thunk();
  ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NONNULL mutable_device_to_device_copy_thunk();
  void set_allocated_device_to_device_copy_thunk(::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_device_to_device_copy_thunk(::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_device_to_device_copy_thunk();

  private:
  const ::xla::gpu::DeviceToDeviceCopyThunkProto& _internal_device_to_device_copy_thunk() const;
  ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NONNULL _internal_mutable_device_to_device_copy_thunk();

  public:
  // .xla.gpu.PartitionIdThunkProto partition_id_thunk = 14;
  bool has_partition_id_thunk() const;
  private:
  bool _internal_has_partition_id_thunk() const;

  public:
  void clear_partition_id_thunk() ;
  const ::xla::gpu::PartitionIdThunkProto& partition_id_thunk() const;
  [[nodiscard]] ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE release_partition_id_thunk();
  ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NONNULL mutable_partition_id_thunk();
  void set_allocated_partition_id_thunk(::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_partition_id_thunk(::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_partition_id_thunk();

  private:
  const ::xla::gpu::PartitionIdThunkProto& _internal_partition_id_thunk() const;
  ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NONNULL _internal_mutable_partition_id_thunk();

  public:
  // .xla.gpu.CudnnThunkProto cudnn_thunk = 15;
  bool has_cudnn_thunk() const;
  private:
  bool _internal_has_cudnn_thunk() const;

  public:
  void clear_cudnn_thunk() ;
  const ::xla::gpu::CudnnThunkProto& cudnn_thunk() const;
  [[nodiscard]] ::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE release_cudnn_thunk();
  ::xla::gpu::CudnnThunkProto* PROTOBUF_NONNULL mutable_cudnn_thunk();
  void set_allocated_cudnn_thunk(::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cudnn_thunk(::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_cudnn_thunk();

  private:
  const ::xla::gpu::CudnnThunkProto& _internal_cudnn_thunk() const;
  ::xla::gpu::CudnnThunkProto* PROTOBUF_NONNULL _internal_mutable_cudnn_thunk();

  public:
  // .xla.gpu.HostExecuteStartThunkProto host_execute_start_thunk = 16;
  bool has_host_execute_start_thunk() const;
  private:
  bool _internal_has_host_execute_start_thunk() const;

  public:
  void clear_host_execute_start_thunk() ;
  const ::xla::gpu::HostExecuteStartThunkProto& host_execute_start_thunk() const;
  [[nodiscard]] ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE release_host_execute_start_thunk();
  ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NONNULL mutable_host_execute_start_thunk();
  void set_allocated_host_execute_start_thunk(::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_execute_start_thunk(::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_execute_start_thunk();

  private:
  const ::xla::gpu::HostExecuteStartThunkProto& _internal_host_execute_start_thunk() const;
  ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NONNULL _internal_mutable_host_execute_start_thunk();

  public:
  // .xla.gpu.HostExecuteDoneThunkProto host_execute_done_thunk = 17;
  bool has_host_execute_done_thunk() const;
  private:
  bool _internal_has_host_execute_done_thunk() const;

  public:
  void clear_host_execute_done_thunk() ;
  const ::xla::gpu::HostExecuteDoneThunkProto& host_execute_done_thunk() const;
  [[nodiscard]] ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE release_host_execute_done_thunk();
  ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NONNULL mutable_host_execute_done_thunk();
  void set_allocated_host_execute_done_thunk(::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_execute_done_thunk(::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_execute_done_thunk();

  private:
  const ::xla::gpu::HostExecuteDoneThunkProto& _internal_host_execute_done_thunk() const;
  ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NONNULL _internal_mutable_host_execute_done_thunk();

  public:
  // .xla.gpu.DynamicSliceThunkProto dynamic_slice_thunk = 18;
  bool has_dynamic_slice_thunk() const;
  private:
  bool _internal_has_dynamic_slice_thunk() const;

  public:
  void clear_dynamic_slice_thunk() ;
  const ::xla::gpu::DynamicSliceThunkProto& dynamic_slice_thunk() const;
  [[nodiscard]] ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE release_dynamic_slice_thunk();
  ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NONNULL mutable_dynamic_slice_thunk();
  void set_allocated_dynamic_slice_thunk(::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dynamic_slice_thunk(::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_dynamic_slice_thunk();

  private:
  const ::xla::gpu::DynamicSliceThunkProto& _internal_dynamic_slice_thunk() const;
  ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NONNULL _internal_mutable_dynamic_slice_thunk();

  public:
  // .xla.gpu.MemzeroThunkProto memzero_thunk = 19;
  bool has_memzero_thunk() const;
  private:
  bool _internal_has_memzero_thunk() const;

  public:
  void clear_memzero_thunk() ;
  const ::xla::gpu::MemzeroThunkProto& memzero_thunk() const;
  [[nodiscard]] ::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE release_memzero_thunk();
  ::xla::gpu::MemzeroThunkProto* PROTOBUF_NONNULL mutable_memzero_thunk();
  void set_allocated_memzero_thunk(::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_memzero_thunk(::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_memzero_thunk();

  private:
  const ::xla::gpu::MemzeroThunkProto& _internal_memzero_thunk() const;
  ::xla::gpu::MemzeroThunkProto* PROTOBUF_NONNULL _internal_mutable_memzero_thunk();

  public:
  // .xla.gpu.SelectKThunkProto select_k_thunk = 20;
  bool has_select_k_thunk() const;
  private:
  bool _internal_has_select_k_thunk() const;

  public:
  void clear_select_k_thunk() ;
  const ::xla::gpu::SelectKThunkProto& select_k_thunk() const;
  [[nodiscard]] ::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE release_select_k_thunk();
  ::xla::gpu::SelectKThunkProto* PROTOBUF_NONNULL mutable_select_k_thunk();
  void set_allocated_select_k_thunk(::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_select_k_thunk(::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_select_k_thunk();

  private:
  const ::xla::gpu::SelectKThunkProto& _internal_select_k_thunk() const;
  ::xla::gpu::SelectKThunkProto* PROTOBUF_NONNULL _internal_mutable_select_k_thunk();

  public:
  // .xla.gpu.InfeedThunkProto infeed_thunk = 21;
  bool has_infeed_thunk() const;
  private:
  bool _internal_has_infeed_thunk() const;

  public:
  void clear_infeed_thunk() ;
  const ::xla::gpu::InfeedThunkProto& infeed_thunk() const;
  [[nodiscard]] ::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE release_infeed_thunk();
  ::xla::gpu::InfeedThunkProto* PROTOBUF_NONNULL mutable_infeed_thunk();
  void set_allocated_infeed_thunk(::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_infeed_thunk(::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_infeed_thunk();

  private:
  const ::xla::gpu::InfeedThunkProto& _internal_infeed_thunk() const;
  ::xla::gpu::InfeedThunkProto* PROTOBUF_NONNULL _internal_mutable_infeed_thunk();

  public:
  // .xla.gpu.CublasLtMatmulThunkProto cublas_lt_matmul_thunk = 22;
  bool has_cublas_lt_matmul_thunk() const;
  private:
  bool _internal_has_cublas_lt_matmul_thunk() const;

  public:
  void clear_cublas_lt_matmul_thunk() ;
  const ::xla::gpu::CublasLtMatmulThunkProto& cublas_lt_matmul_thunk() const;
  [[nodiscard]] ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE release_cublas_lt_matmul_thunk();
  ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NONNULL mutable_cublas_lt_matmul_thunk();
  void set_allocated_cublas_lt_matmul_thunk(::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cublas_lt_matmul_thunk(::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_cublas_lt_matmul_thunk();

  private:
  const ::xla::gpu::CublasLtMatmulThunkProto& _internal_cublas_lt_matmul_thunk() const;
  ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NONNULL _internal_mutable_cublas_lt_matmul_thunk();

  public:
  // .xla.gpu.OutfeedThunkProto outfeed_thunk = 23;
  bool has_outfeed_thunk() const;
  private:
  bool _internal_has_outfeed_thunk() const;

  public:
  void clear_outfeed_thunk() ;
  const ::xla::gpu::OutfeedThunkProto& outfeed_thunk() const;
  [[nodiscard]] ::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE release_outfeed_thunk();
  ::xla::gpu::OutfeedThunkProto* PROTOBUF_NONNULL mutable_outfeed_thunk();
  void set_allocated_outfeed_thunk(::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_outfeed_thunk(::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_outfeed_thunk();

  private:
  const ::xla::gpu::OutfeedThunkProto& _internal_outfeed_thunk() const;
  ::xla::gpu::OutfeedThunkProto* PROTOBUF_NONNULL _internal_mutable_outfeed_thunk();

  public:
  // .xla.gpu.NormThunkProto norm_thunk = 24;
  bool has_norm_thunk() const;
  private:
  bool _internal_has_norm_thunk() const;

  public:
  void clear_norm_thunk() ;
  const ::xla::gpu::NormThunkProto& norm_thunk() const;
  [[nodiscard]] ::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE release_norm_thunk();
  ::xla::gpu::NormThunkProto* PROTOBUF_NONNULL mutable_norm_thunk();
  void set_allocated_norm_thunk(::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_norm_thunk(::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_norm_thunk();

  private:
  const ::xla::gpu::NormThunkProto& _internal_norm_thunk() const;
  ::xla::gpu::NormThunkProto* PROTOBUF_NONNULL _internal_mutable_norm_thunk();

  public:
  // .xla.gpu.ConvolutionThunkProto convolution_thunk = 25;
  bool has_convolution_thunk() const;
  private:
  bool _internal_has_convolution_thunk() const;

  public:
  void clear_convolution_thunk() ;
  const ::xla::gpu::ConvolutionThunkProto& convolution_thunk() const;
  [[nodiscard]] ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE release_convolution_thunk();
  ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NONNULL mutable_convolution_thunk();
  void set_allocated_convolution_thunk(::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_convolution_thunk(::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_convolution_thunk();

  private:
  const ::xla::gpu::ConvolutionThunkProto& _internal_convolution_thunk() const;
  ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NONNULL _internal_mutable_convolution_thunk();

  public:
  // .xla.gpu.ConvolutionReorderThunkProto convolution_reorder_thunk = 26;
  bool has_convolution_reorder_thunk() const;
  private:
  bool _internal_has_convolution_reorder_thunk() const;

  public:
  void clear_convolution_reorder_thunk() ;
  const ::xla::gpu::ConvolutionReorderThunkProto& convolution_reorder_thunk() const;
  [[nodiscard]] ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE release_convolution_reorder_thunk();
  ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NONNULL mutable_convolution_reorder_thunk();
  void set_allocated_convolution_reorder_thunk(::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_convolution_reorder_thunk(::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_convolution_reorder_thunk();

  private:
  const ::xla::gpu::ConvolutionReorderThunkProto& _internal_convolution_reorder_thunk() const;
  ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NONNULL _internal_mutable_convolution_reorder_thunk();

  public:
  // .xla.gpu.FftThunkProto fft_thunk = 27;
  bool has_fft_thunk() const;
  private:
  bool _internal_has_fft_thunk() const;

  public:
  void clear_fft_thunk() ;
  const ::xla::gpu::FftThunkProto& fft_thunk() const;
  [[nodiscard]] ::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE release_fft_thunk();
  ::xla::gpu::FftThunkProto* PROTOBUF_NONNULL mutable_fft_thunk();
  void set_allocated_fft_thunk(::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fft_thunk(::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_fft_thunk();

  private:
  const ::xla::gpu::FftThunkProto& _internal_fft_thunk() const;
  ::xla::gpu::FftThunkProto* PROTOBUF_NONNULL _internal_mutable_fft_thunk();

  public:
  // .xla.gpu.Memset32BitValueThunkProto memset32bit_value_thunk = 28;
  bool has_memset32bit_value_thunk() const;
  private:
  bool _internal_has_memset32bit_value_thunk() const;

  public:
  void clear_memset32bit_value_thunk() ;
  const ::xla::gpu::Memset32BitValueThunkProto& memset32bit_value_thunk() const;
  [[nodiscard]] ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE release_memset32bit_value_thunk();
  ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NONNULL mutable_memset32bit_value_thunk();
  void set_allocated_memset32bit_value_thunk(::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_memset32bit_value_thunk(::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_memset32bit_value_thunk();

  private:
  const ::xla::gpu::Memset32BitValueThunkProto& _internal_memset32bit_value_thunk() const;
  ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NONNULL _internal_mutable_memset32bit_value_thunk();

  public:
  // .xla.gpu.CustomCallThunkProto custom_call_thunk = 30;
  bool has_custom_call_thunk() const;
  private:
  bool _internal_has_custom_call_thunk() const;

  public:
  void clear_custom_call_thunk() ;
  const ::xla::gpu::CustomCallThunkProto& custom_call_thunk() const;
  [[nodiscard]] ::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE release_custom_call_thunk();
  ::xla::gpu::CustomCallThunkProto* PROTOBUF_NONNULL mutable_custom_call_thunk();
  void set_allocated_custom_call_thunk(::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_call_thunk(::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_custom_call_thunk();

  private:
  const ::xla::gpu::CustomCallThunkProto& _internal_custom_call_thunk() const;
  ::xla::gpu::CustomCallThunkProto* PROTOBUF_NONNULL _internal_mutable_custom_call_thunk();

  public:
  // .xla.gpu.CubSortThunkProto cub_sort_thunk = 31;
  bool has_cub_sort_thunk() const;
  private:
  bool _internal_has_cub_sort_thunk() const;

  public:
  void clear_cub_sort_thunk() ;
  const ::xla::gpu::CubSortThunkProto& cub_sort_thunk() const;
  [[nodiscard]] ::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE release_cub_sort_thunk();
  ::xla::gpu::CubSortThunkProto* PROTOBUF_NONNULL mutable_cub_sort_thunk();
  void set_allocated_cub_sort_thunk(::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_cub_sort_thunk(::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_cub_sort_thunk();

  private:
  const ::xla::gpu::CubSortThunkProto& _internal_cub_sort_thunk() const;
  ::xla::gpu::CubSortThunkProto* PROTOBUF_NONNULL _internal_mutable_cub_sort_thunk();

  public:
  // .xla.gpu.HostSendThunkProto host_send_thunk = 32;
  bool has_host_send_thunk() const;
  private:
  bool _internal_has_host_send_thunk() const;

  public:
  void clear_host_send_thunk() ;
  const ::xla::gpu::HostSendThunkProto& host_send_thunk() const;
  [[nodiscard]] ::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE release_host_send_thunk();
  ::xla::gpu::HostSendThunkProto* PROTOBUF_NONNULL mutable_host_send_thunk();
  void set_allocated_host_send_thunk(::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_send_thunk(::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_send_thunk();

  private:
  const ::xla::gpu::HostSendThunkProto& _internal_host_send_thunk() const;
  ::xla::gpu::HostSendThunkProto* PROTOBUF_NONNULL _internal_mutable_host_send_thunk();

  public:
  // .xla.gpu.HostSendDoneThunkProto host_send_done_thunk = 33;
  bool has_host_send_done_thunk() const;
  private:
  bool _internal_has_host_send_done_thunk() const;

  public:
  void clear_host_send_done_thunk() ;
  const ::xla::gpu::HostSendDoneThunkProto& host_send_done_thunk() const;
  [[nodiscard]] ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE release_host_send_done_thunk();
  ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NONNULL mutable_host_send_done_thunk();
  void set_allocated_host_send_done_thunk(::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_send_done_thunk(::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_send_done_thunk();

  private:
  const ::xla::gpu::HostSendDoneThunkProto& _internal_host_send_done_thunk() const;
  ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NONNULL _internal_mutable_host_send_done_thunk();

  public:
  // .xla.gpu.HostRecvThunkProto host_recv_thunk = 34;
  bool has_host_recv_thunk() const;
  private:
  bool _internal_has_host_recv_thunk() const;

  public:
  void clear_host_recv_thunk() ;
  const ::xla::gpu::HostRecvThunkProto& host_recv_thunk() const;
  [[nodiscard]] ::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE release_host_recv_thunk();
  ::xla::gpu::HostRecvThunkProto* PROTOBUF_NONNULL mutable_host_recv_thunk();
  void set_allocated_host_recv_thunk(::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_recv_thunk(::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_recv_thunk();

  private:
  const ::xla::gpu::HostRecvThunkProto& _internal_host_recv_thunk() const;
  ::xla::gpu::HostRecvThunkProto* PROTOBUF_NONNULL _internal_mutable_host_recv_thunk();

  public:
  // .xla.gpu.HostRecvDoneThunkProto host_recv_done_thunk = 35;
  bool has_host_recv_done_thunk() const;
  private:
  bool _internal_has_host_recv_done_thunk() const;

  public:
  void clear_host_recv_done_thunk() ;
  const ::xla::gpu::HostRecvDoneThunkProto& host_recv_done_thunk() const;
  [[nodiscard]] ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE release_host_recv_done_thunk();
  ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NONNULL mutable_host_recv_done_thunk();
  void set_allocated_host_recv_done_thunk(::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_host_recv_done_thunk(::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_host_recv_done_thunk();

  private:
  const ::xla::gpu::HostRecvDoneThunkProto& _internal_host_recv_done_thunk() const;
  ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NONNULL _internal_mutable_host_recv_done_thunk();

  public:
  // .xla.gpu.CustomKernelThunkProto custom_kernel_thunk = 36;
  bool has_custom_kernel_thunk() const;
  private:
  bool _internal_has_custom_kernel_thunk() const;

  public:
  void clear_custom_kernel_thunk() ;
  const ::xla::gpu::CustomKernelThunkProto& custom_kernel_thunk() const;
  [[nodiscard]] ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE release_custom_kernel_thunk();
  ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NONNULL mutable_custom_kernel_thunk();
  void set_allocated_custom_kernel_thunk(::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_kernel_thunk(::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_custom_kernel_thunk();

  private:
  const ::xla::gpu::CustomKernelThunkProto& _internal_custom_kernel_thunk() const;
  ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NONNULL _internal_mutable_custom_kernel_thunk();

  public:
  // .xla.gpu.CollectiveDoneThunkProto collective_done_thunk = 37;
  bool has_collective_done_thunk() const;
  private:
  bool _internal_has_collective_done_thunk() const;

  public:
  void clear_collective_done_thunk() ;
  const ::xla::gpu::CollectiveDoneThunkProto& collective_done_thunk() const;
  [[nodiscard]] ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE release_collective_done_thunk();
  ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NONNULL mutable_collective_done_thunk();
  void set_allocated_collective_done_thunk(::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_done_thunk(::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_done_thunk();

  private:
  const ::xla::gpu::CollectiveDoneThunkProto& _internal_collective_done_thunk() const;
  ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NONNULL _internal_mutable_collective_done_thunk();

  public:
  // .xla.gpu.AllGatherStartThunkProto all_gather_start_thunk = 38;
  bool has_all_gather_start_thunk() const;
  private:
  bool _internal_has_all_gather_start_thunk() const;

  public:
  void clear_all_gather_start_thunk() ;
  const ::xla::gpu::AllGatherStartThunkProto& all_gather_start_thunk() const;
  [[nodiscard]] ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE release_all_gather_start_thunk();
  ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NONNULL mutable_all_gather_start_thunk();
  void set_allocated_all_gather_start_thunk(::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_all_gather_start_thunk(::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_all_gather_start_thunk();

  private:
  const ::xla::gpu::AllGatherStartThunkProto& _internal_all_gather_start_thunk() const;
  ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NONNULL _internal_mutable_all_gather_start_thunk();

  public:
  // .xla.gpu.AllReduceStartThunkProto all_reduce_start_thunk = 39;
  bool has_all_reduce_start_thunk() const;
  private:
  bool _internal_has_all_reduce_start_thunk() const;

  public:
  void clear_all_reduce_start_thunk() ;
  const ::xla::gpu::AllReduceStartThunkProto& all_reduce_start_thunk() const;
  [[nodiscard]] ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE release_all_reduce_start_thunk();
  ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NONNULL mutable_all_reduce_start_thunk();
  void set_allocated_all_reduce_start_thunk(::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_all_reduce_start_thunk(::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_all_reduce_start_thunk();

  private:
  const ::xla::gpu::AllReduceStartThunkProto& _internal_all_reduce_start_thunk() const;
  ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NONNULL _internal_mutable_all_reduce_start_thunk();

  public:
  // .xla.gpu.ReduceScatterStartThunkProto reduce_scatter_start_thunk = 40;
  bool has_reduce_scatter_start_thunk() const;
  private:
  bool _internal_has_reduce_scatter_start_thunk() const;

  public:
  void clear_reduce_scatter_start_thunk() ;
  const ::xla::gpu::ReduceScatterStartThunkProto& reduce_scatter_start_thunk() const;
  [[nodiscard]] ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE release_reduce_scatter_start_thunk();
  ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NONNULL mutable_reduce_scatter_start_thunk();
  void set_allocated_reduce_scatter_start_thunk(::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_reduce_scatter_start_thunk(::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_reduce_scatter_start_thunk();

  private:
  const ::xla::gpu::ReduceScatterStartThunkProto& _internal_reduce_scatter_start_thunk() const;
  ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NONNULL _internal_mutable_reduce_scatter_start_thunk();

  public:
  // .xla.gpu.AllToAllStartThunkProto all_to_all_start_thunk = 41;
  bool has_all_to_all_start_thunk() const;
  private:
  bool _internal_has_all_to_all_start_thunk() const;

  public:
  void clear_all_to_all_start_thunk() ;
  const ::xla::gpu::AllToAllStartThunkProto& all_to_all_start_thunk() const;
  [[nodiscard]] ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE release_all_to_all_start_thunk();
  ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NONNULL mutable_all_to_all_start_thunk();
  void set_allocated_all_to_all_start_thunk(::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_all_to_all_start_thunk(::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_all_to_all_start_thunk();

  private:
  const ::xla::gpu::AllToAllStartThunkProto& _internal_all_to_all_start_thunk() const;
  ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NONNULL _internal_mutable_all_to_all_start_thunk();

  public:
  // .xla.gpu.RaggedAllToAllStartThunkProto ragged_all_to_all_start_thunk = 42;
  bool has_ragged_all_to_all_start_thunk() const;
  private:
  bool _internal_has_ragged_all_to_all_start_thunk() const;

  public:
  void clear_ragged_all_to_all_start_thunk() ;
  const ::xla::gpu::RaggedAllToAllStartThunkProto& ragged_all_to_all_start_thunk() const;
  [[nodiscard]] ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE release_ragged_all_to_all_start_thunk();
  ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL mutable_ragged_all_to_all_start_thunk();
  void set_allocated_ragged_all_to_all_start_thunk(::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_ragged_all_to_all_start_thunk(::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_ragged_all_to_all_start_thunk();

  private:
  const ::xla::gpu::RaggedAllToAllStartThunkProto& _internal_ragged_all_to_all_start_thunk() const;
  ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL _internal_mutable_ragged_all_to_all_start_thunk();

  public:
  // .xla.gpu.CollectivePermuteStartThunkProto collective_permute_start_thunk = 43;
  bool has_collective_permute_start_thunk() const;
  private:
  bool _internal_has_collective_permute_start_thunk() const;

  public:
  void clear_collective_permute_start_thunk() ;
  const ::xla::gpu::CollectivePermuteStartThunkProto& collective_permute_start_thunk() const;
  [[nodiscard]] ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE release_collective_permute_start_thunk();
  ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NONNULL mutable_collective_permute_start_thunk();
  void set_allocated_collective_permute_start_thunk(::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_permute_start_thunk(::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_permute_start_thunk();

  private:
  const ::xla::gpu::CollectivePermuteStartThunkProto& _internal_collective_permute_start_thunk() const;
  ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NONNULL _internal_mutable_collective_permute_start_thunk();

  public:
  // .xla.gpu.SendThunkProto send_thunk = 44;
  bool has_send_thunk() const;
  private:
  bool _internal_has_send_thunk() const;

  public:
  void clear_send_thunk() ;
  const ::xla::gpu::SendThunkProto& send_thunk() const;
  [[nodiscard]] ::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE release_send_thunk();
  ::xla::gpu::SendThunkProto* PROTOBUF_NONNULL mutable_send_thunk();
  void set_allocated_send_thunk(::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_send_thunk(::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_send_thunk();

  private:
  const ::xla::gpu::SendThunkProto& _internal_send_thunk() const;
  ::xla::gpu::SendThunkProto* PROTOBUF_NONNULL _internal_mutable_send_thunk();

  public:
  // .xla.gpu.RecvThunkProto recv_thunk = 45;
  bool has_recv_thunk() const;
  private:
  bool _internal_has_recv_thunk() const;

  public:
  void clear_recv_thunk() ;
  const ::xla::gpu::RecvThunkProto& recv_thunk() const;
  [[nodiscard]] ::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE release_recv_thunk();
  ::xla::gpu::RecvThunkProto* PROTOBUF_NONNULL mutable_recv_thunk();
  void set_allocated_recv_thunk(::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_recv_thunk(::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_recv_thunk();

  private:
  const ::xla::gpu::RecvThunkProto& _internal_recv_thunk() const;
  ::xla::gpu::RecvThunkProto* PROTOBUF_NONNULL _internal_mutable_recv_thunk();

  public:
  // .xla.gpu.CollectiveBroadcastStartThunkProto collective_broadcast_start_thunk = 46;
  bool has_collective_broadcast_start_thunk() const;
  private:
  bool _internal_has_collective_broadcast_start_thunk() const;

  public:
  void clear_collective_broadcast_start_thunk() ;
  const ::xla::gpu::CollectiveBroadcastStartThunkProto& collective_broadcast_start_thunk() const;
  [[nodiscard]] ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE release_collective_broadcast_start_thunk();
  ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL mutable_collective_broadcast_start_thunk();
  void set_allocated_collective_broadcast_start_thunk(::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_broadcast_start_thunk(::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_broadcast_start_thunk();

  private:
  const ::xla::gpu::CollectiveBroadcastStartThunkProto& _internal_collective_broadcast_start_thunk() const;
  ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL _internal_mutable_collective_broadcast_start_thunk();

  public:
  // .xla.gpu.CollectiveGroupThunkProto collective_group_thunk = 47;
  bool has_collective_group_thunk() const;
  private:
  bool _internal_has_collective_group_thunk() const;

  public:
  void clear_collective_group_thunk() ;
  const ::xla::gpu::CollectiveGroupThunkProto& collective_group_thunk() const;
  [[nodiscard]] ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE release_collective_group_thunk();
  ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NONNULL mutable_collective_group_thunk();
  void set_allocated_collective_group_thunk(::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collective_group_thunk(::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_collective_group_thunk();

  private:
  const ::xla::gpu::CollectiveGroupThunkProto& _internal_collective_group_thunk() const;
  ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NONNULL _internal_mutable_collective_group_thunk();

  public:
  // .xla.gpu.DynamicMemcpyThunkProto dynamic_memcpy_thunk = 48;
  bool has_dynamic_memcpy_thunk() const;
  private:
  bool _internal_has_dynamic_memcpy_thunk() const;

  public:
  void clear_dynamic_memcpy_thunk() ;
  const ::xla::gpu::DynamicMemcpyThunkProto& dynamic_memcpy_thunk() const;
  [[nodiscard]] ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE release_dynamic_memcpy_thunk();
  ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NONNULL mutable_dynamic_memcpy_thunk();
  void set_allocated_dynamic_memcpy_thunk(::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dynamic_memcpy_thunk(::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_dynamic_memcpy_thunk();

  private:
  const ::xla::gpu::DynamicMemcpyThunkProto& _internal_dynamic_memcpy_thunk() const;
  ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NONNULL _internal_mutable_dynamic_memcpy_thunk();

  public:
  void clear_impl();
  ImplCase impl_case() const;
  // @@protoc_insertion_point(class_scope:xla.gpu.ThunkProto)
 private:
  class _Internal;
  void set_has_sequential_thunk();
  void set_has_copy_thunk();
  void set_has_device_to_host_copy_thunk();
  void set_has_host_to_device_copy_thunk();
  void set_has_conditional_thunk();
  void set_has_while_thunk();
  void set_has_kernel_thunk();
  void set_has_gemm_thunk();
  void set_has_wait_for_streams_thunk();
  void set_has_triangular_solve_thunk();
  void set_has_replica_id_thunk();
  void set_has_device_to_device_copy_thunk();
  void set_has_partition_id_thunk();
  void set_has_cudnn_thunk();
  void set_has_host_execute_start_thunk();
  void set_has_host_execute_done_thunk();
  void set_has_dynamic_slice_thunk();
  void set_has_memzero_thunk();
  void set_has_select_k_thunk();
  void set_has_infeed_thunk();
  void set_has_cublas_lt_matmul_thunk();
  void set_has_outfeed_thunk();
  void set_has_norm_thunk();
  void set_has_convolution_thunk();
  void set_has_convolution_reorder_thunk();
  void set_has_fft_thunk();
  void set_has_memset32bit_value_thunk();
  void set_has_custom_call_thunk();
  void set_has_cub_sort_thunk();
  void set_has_host_send_thunk();
  void set_has_host_send_done_thunk();
  void set_has_host_recv_thunk();
  void set_has_host_recv_done_thunk();
  void set_has_custom_kernel_thunk();
  void set_has_collective_done_thunk();
  void set_has_all_gather_start_thunk();
  void set_has_all_reduce_start_thunk();
  void set_has_reduce_scatter_start_thunk();
  void set_has_all_to_all_start_thunk();
  void set_has_ragged_all_to_all_start_thunk();
  void set_has_collective_permute_start_thunk();
  void set_has_send_thunk();
  void set_has_recv_thunk();
  void set_has_collective_broadcast_start_thunk();
  void set_has_collective_group_thunk();
  void set_has_dynamic_memcpy_thunk();
  inline bool has_impl() const;
  inline void clear_has_impl();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 47,
                                   47, 0,
                                   7>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE thunk_info_;
    union ImplUnion {
      constexpr ImplUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE sequential_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE copy_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE device_to_host_copy_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_to_device_copy_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE conditional_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE while_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE kernel_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE gemm_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE wait_for_streams_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE triangular_solve_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE replica_id_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE device_to_device_copy_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE partition_id_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE cudnn_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_execute_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_execute_done_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE dynamic_slice_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE memzero_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE select_k_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE infeed_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE cublas_lt_matmul_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE outfeed_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE norm_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE convolution_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE convolution_reorder_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fft_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE memset32bit_value_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE custom_call_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE cub_sort_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_send_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_send_done_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_recv_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE host_recv_done_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE custom_kernel_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE collective_done_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE all_gather_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE all_reduce_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE reduce_scatter_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE all_to_all_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE ragged_all_to_all_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE collective_permute_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE send_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE recv_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE collective_broadcast_start_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE collective_group_thunk_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE dynamic_memcpy_thunk_;
    } impl_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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

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

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

  inline WhileThunkProto(const WhileThunkProto& from) : WhileThunkProto(nullptr, from) {}
  inline WhileThunkProto(WhileThunkProto&& from) noexcept
      : WhileThunkProto(nullptr, ::std::move(from)) {}
  inline WhileThunkProto& operator=(const WhileThunkProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline WhileThunkProto& operator=(WhileThunkProto&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

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

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WhileThunkProto& default_instance() {
    return *reinterpret_cast<const WhileThunkProto*>(
        &_WhileThunkProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(WhileThunkProto& a, WhileThunkProto& b) { a.Swap(&b); }
  inline void Swap(WhileThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(WhileThunkProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

 public:
  static constexpr auto InternalGenerateClassData_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kConditionResultBufferIndexFieldNumber = 1,
    kConditionThunkSequenceFieldNumber = 2,
    kBodyThunkSequenceFieldNumber = 3,
    kTripCountFieldNumber = 4,
  };
  // .xla.buffer_assignment.BufferAllocationSliceProto condition_result_buffer_index = 1;
  bool has_condition_result_buffer_index() const;
  void clear_condition_result_buffer_index() ;
  const ::xla::buffer_assignment::BufferAllocationSliceProto& condition_result_buffer_index() const;
  [[nodiscard]] ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE release_condition_result_buffer_index();
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL mutable_condition_result_buffer_index();
  void set_allocated_condition_result_buffer_index(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_condition_result_buffer_index(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value);
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE unsafe_arena_release_condition_result_buffer_index();

  private:
  const ::xla::buffer_assignment::BufferAllocationSliceProto& _internal_condition_result_buffer_index() const;
  ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL _internal_mutable_condition_result_buffer_index();

  public:
  // .xla.gpu.SequentialThunkProto condition_thunk_sequence = 2;
  bool has_condition_thunk_sequence() const;
  void clear_condition_thunk_sequence() ;
  const ::xla::gpu::SequentialThunkProto& condition_thunk_sequence() const;
  [[nodiscard]] ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE release_condition_thunk_sequence();
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL mutable_condition_thunk_sequence();
  void set_allocated_condition_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_condition_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_condition_thunk_sequence();

  private:
  const ::xla::gpu::SequentialThunkProto& _internal_condition_thunk_sequence() const;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL _internal_mutable_condition_thunk_sequence();

  public:
  // .xla.gpu.SequentialThunkProto body_thunk_sequence = 3;
  bool has_body_thunk_sequence() const;
  void clear_body_thunk_sequence() ;
  const ::xla::gpu::SequentialThunkProto& body_thunk_sequence() const;
  [[nodiscard]] ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE release_body_thunk_sequence();
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL mutable_body_thunk_sequence();
  void set_allocated_body_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_body_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value);
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE unsafe_arena_release_body_thunk_sequence();

  private:
  const ::xla::gpu::SequentialThunkProto& _internal_body_thunk_sequence() const;
  ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL _internal_mutable_body_thunk_sequence();

  public:
  // optional int64 trip_count = 4;
  bool has_trip_count() const;
  void clear_trip_count() ;
  ::int64_t trip_count() const;
  void set_trip_count(::int64_t value);

  private:
  ::int64_t _internal_trip_count() const;
  void _internal_set_trip_count(::int64_t value);

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const WhileThunkProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE condition_result_buffer_index_;
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE condition_thunk_sequence_;
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE body_thunk_sequence_;
    ::int64_t trip_count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto;
};

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

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




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


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

// ThunkInfoProto

// string profile_annotation = 1;
inline void ThunkInfoProto::clear_profile_annotation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.profile_annotation_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& ThunkInfoProto::profile_annotation() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkInfoProto.profile_annotation)
  return _internal_profile_annotation();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ThunkInfoProto::set_profile_annotation(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.profile_annotation_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.ThunkInfoProto.profile_annotation)
}
inline ::std::string* PROTOBUF_NONNULL ThunkInfoProto::mutable_profile_annotation()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_profile_annotation();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkInfoProto.profile_annotation)
  return _s;
}
inline const ::std::string& ThunkInfoProto::_internal_profile_annotation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.profile_annotation_.Get();
}
inline void ThunkInfoProto::_internal_set_profile_annotation(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.profile_annotation_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ThunkInfoProto::_internal_mutable_profile_annotation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.profile_annotation_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ThunkInfoProto::release_profile_annotation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkInfoProto.profile_annotation)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.profile_annotation_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.profile_annotation_.Set("", GetArena());
  }
  return released;
}
inline void ThunkInfoProto::set_allocated_profile_annotation(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.profile_annotation_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.profile_annotation_.IsDefault()) {
    _impl_.profile_annotation_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ThunkInfoProto.profile_annotation)
}

// int64 execution_stream_id = 2;
inline void ThunkInfoProto::clear_execution_stream_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_stream_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t ThunkInfoProto::execution_stream_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkInfoProto.execution_stream_id)
  return _internal_execution_stream_id();
}
inline void ThunkInfoProto::set_execution_stream_id(::int64_t value) {
  _internal_set_execution_stream_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.ThunkInfoProto.execution_stream_id)
}
inline ::int64_t ThunkInfoProto::_internal_execution_stream_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.execution_stream_id_;
}
inline void ThunkInfoProto::_internal_set_execution_stream_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.execution_stream_id_ = value;
}

// int64 thunk_id = 3;
inline void ThunkInfoProto::clear_thunk_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t ThunkInfoProto::thunk_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkInfoProto.thunk_id)
  return _internal_thunk_id();
}
inline void ThunkInfoProto::set_thunk_id(::int64_t value) {
  _internal_set_thunk_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.ThunkInfoProto.thunk_id)
}
inline ::int64_t ThunkInfoProto::_internal_thunk_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.thunk_id_;
}
inline void ThunkInfoProto::_internal_set_thunk_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_id_ = value;
}

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

// ThunkMetadataProto

// .xla.gpu.ThunkInfoProto thunk_info = 1;
inline bool ThunkMetadataProto::has_thunk_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.thunk_info_ != nullptr);
  return value;
}
inline void ThunkMetadataProto::clear_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.thunk_info_ != nullptr) _impl_.thunk_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::gpu::ThunkInfoProto& ThunkMetadataProto::_internal_thunk_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::ThunkInfoProto* p = _impl_.thunk_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::ThunkInfoProto&>(::xla::gpu::_ThunkInfoProto_default_instance_);
}
inline const ::xla::gpu::ThunkInfoProto& ThunkMetadataProto::thunk_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkMetadataProto.thunk_info)
  return _internal_thunk_info();
}
inline void ThunkMetadataProto::unsafe_arena_set_allocated_thunk_info(
    ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.thunk_info_);
  }
  _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkMetadataProto.thunk_info)
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE ThunkMetadataProto::release_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::ThunkInfoProto* temp = _impl_.thunk_info_;
  _impl_.thunk_info_ = nullptr;
  return temp;
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL ThunkMetadataProto::_internal_mutable_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.thunk_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ThunkInfoProto>(GetArena());
    _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(p);
  }
  return _impl_.thunk_info_;
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL ThunkMetadataProto::mutable_thunk_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::ThunkInfoProto* _msg = _internal_mutable_thunk_info();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkMetadataProto.thunk_info)
  return _msg;
}
inline void ThunkMetadataProto::set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.thunk_info_);
  }

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

  _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ThunkMetadataProto.thunk_info)
}

// string thunk_kind = 2;
inline void ThunkMetadataProto::clear_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& ThunkMetadataProto::thunk_kind() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkMetadataProto.thunk_kind)
  return _internal_thunk_kind();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ThunkMetadataProto::set_thunk_kind(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.thunk_kind_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.ThunkMetadataProto.thunk_kind)
}
inline ::std::string* PROTOBUF_NONNULL ThunkMetadataProto::mutable_thunk_kind()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_thunk_kind();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkMetadataProto.thunk_kind)
  return _s;
}
inline const ::std::string& ThunkMetadataProto::_internal_thunk_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.thunk_kind_.Get();
}
inline void ThunkMetadataProto::_internal_set_thunk_kind(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.thunk_kind_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ThunkMetadataProto::_internal_mutable_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.thunk_kind_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ThunkMetadataProto::release_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkMetadataProto.thunk_kind)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.thunk_kind_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.thunk_kind_.Set("", GetArena());
  }
  return released;
}
inline void ThunkMetadataProto::set_allocated_thunk_kind(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.thunk_kind_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.thunk_kind_.IsDefault()) {
    _impl_.thunk_kind_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ThunkMetadataProto.thunk_kind)
}

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

// ThunkMetadataListProto

// repeated .xla.gpu.ThunkMetadataProto thunk_metadata = 1;
inline int ThunkMetadataListProto::_internal_thunk_metadata_size() const {
  return _internal_thunk_metadata().size();
}
inline int ThunkMetadataListProto::thunk_metadata_size() const {
  return _internal_thunk_metadata_size();
}
inline void ThunkMetadataListProto::clear_thunk_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_metadata_.Clear();
}
inline ::xla::gpu::ThunkMetadataProto* PROTOBUF_NONNULL ThunkMetadataListProto::mutable_thunk_metadata(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkMetadataListProto.thunk_metadata)
  return _internal_mutable_thunk_metadata()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>* PROTOBUF_NONNULL ThunkMetadataListProto::mutable_thunk_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.ThunkMetadataListProto.thunk_metadata)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_thunk_metadata();
}
inline const ::xla::gpu::ThunkMetadataProto& ThunkMetadataListProto::thunk_metadata(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkMetadataListProto.thunk_metadata)
  return _internal_thunk_metadata().Get(index);
}
inline ::xla::gpu::ThunkMetadataProto* PROTOBUF_NONNULL ThunkMetadataListProto::add_thunk_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::ThunkMetadataProto* _add = _internal_mutable_thunk_metadata()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.ThunkMetadataListProto.thunk_metadata)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>& ThunkMetadataListProto::thunk_metadata() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.ThunkMetadataListProto.thunk_metadata)
  return _internal_thunk_metadata();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>&
ThunkMetadataListProto::_internal_thunk_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.thunk_metadata_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkMetadataProto>* PROTOBUF_NONNULL
ThunkMetadataListProto::_internal_mutable_thunk_metadata() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.thunk_metadata_;
}

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

// ConditionalThunkProto

// .xla.ShapedSliceProto branch_index_buffer = 1;
inline bool ConditionalThunkProto::has_branch_index_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.branch_index_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& ConditionalThunkProto::_internal_branch_index_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.branch_index_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& ConditionalThunkProto::branch_index_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConditionalThunkProto.branch_index_buffer)
  return _internal_branch_index_buffer();
}
inline void ConditionalThunkProto::unsafe_arena_set_allocated_branch_index_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.branch_index_buffer_);
  }
  _impl_.branch_index_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConditionalThunkProto.branch_index_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE ConditionalThunkProto::release_branch_index_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* released = _impl_.branch_index_buffer_;
  _impl_.branch_index_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE ConditionalThunkProto::unsafe_arena_release_branch_index_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ConditionalThunkProto.branch_index_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* temp = _impl_.branch_index_buffer_;
  _impl_.branch_index_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConditionalThunkProto::_internal_mutable_branch_index_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.branch_index_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.branch_index_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.branch_index_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConditionalThunkProto::mutable_branch_index_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_branch_index_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConditionalThunkProto.branch_index_buffer)
  return _msg;
}
inline void ConditionalThunkProto::set_allocated_branch_index_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.branch_index_buffer_);
  }

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

  _impl_.branch_index_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConditionalThunkProto.branch_index_buffer)
}

// repeated .xla.gpu.SequentialThunkProto branch_thunks = 2;
inline int ConditionalThunkProto::_internal_branch_thunks_size() const {
  return _internal_branch_thunks().size();
}
inline int ConditionalThunkProto::branch_thunks_size() const {
  return _internal_branch_thunks_size();
}
inline void ConditionalThunkProto::clear_branch_thunks() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.branch_thunks_.Clear();
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL ConditionalThunkProto::mutable_branch_thunks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConditionalThunkProto.branch_thunks)
  return _internal_mutable_branch_thunks()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>* PROTOBUF_NONNULL ConditionalThunkProto::mutable_branch_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.ConditionalThunkProto.branch_thunks)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_branch_thunks();
}
inline const ::xla::gpu::SequentialThunkProto& ConditionalThunkProto::branch_thunks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConditionalThunkProto.branch_thunks)
  return _internal_branch_thunks().Get(index);
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL ConditionalThunkProto::add_branch_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::SequentialThunkProto* _add = _internal_mutable_branch_thunks()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.ConditionalThunkProto.branch_thunks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>& ConditionalThunkProto::branch_thunks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.ConditionalThunkProto.branch_thunks)
  return _internal_branch_thunks();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>&
ConditionalThunkProto::_internal_branch_thunks() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.branch_thunks_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::SequentialThunkProto>* PROTOBUF_NONNULL
ConditionalThunkProto::_internal_mutable_branch_thunks() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.branch_thunks_;
}

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

// WhileThunkProto

// .xla.buffer_assignment.BufferAllocationSliceProto condition_result_buffer_index = 1;
inline bool WhileThunkProto::has_condition_result_buffer_index() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.condition_result_buffer_index_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& WhileThunkProto::_internal_condition_result_buffer_index() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.condition_result_buffer_index_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& WhileThunkProto::condition_result_buffer_index() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.WhileThunkProto.condition_result_buffer_index)
  return _internal_condition_result_buffer_index();
}
inline void WhileThunkProto::unsafe_arena_set_allocated_condition_result_buffer_index(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.condition_result_buffer_index_);
  }
  _impl_.condition_result_buffer_index_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.WhileThunkProto.condition_result_buffer_index)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE WhileThunkProto::release_condition_result_buffer_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.condition_result_buffer_index_;
  _impl_.condition_result_buffer_index_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE WhileThunkProto::unsafe_arena_release_condition_result_buffer_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.WhileThunkProto.condition_result_buffer_index)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.condition_result_buffer_index_;
  _impl_.condition_result_buffer_index_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL WhileThunkProto::_internal_mutable_condition_result_buffer_index() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.condition_result_buffer_index_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.condition_result_buffer_index_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.condition_result_buffer_index_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL WhileThunkProto::mutable_condition_result_buffer_index()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_condition_result_buffer_index();
  // @@protoc_insertion_point(field_mutable:xla.gpu.WhileThunkProto.condition_result_buffer_index)
  return _msg;
}
inline void WhileThunkProto::set_allocated_condition_result_buffer_index(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.condition_result_buffer_index_);
  }

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

  _impl_.condition_result_buffer_index_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.WhileThunkProto.condition_result_buffer_index)
}

// .xla.gpu.SequentialThunkProto condition_thunk_sequence = 2;
inline bool WhileThunkProto::has_condition_thunk_sequence() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.condition_thunk_sequence_ != nullptr);
  return value;
}
inline void WhileThunkProto::clear_condition_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.condition_thunk_sequence_ != nullptr) _impl_.condition_thunk_sequence_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::gpu::SequentialThunkProto& WhileThunkProto::_internal_condition_thunk_sequence() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::SequentialThunkProto* p = _impl_.condition_thunk_sequence_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::SequentialThunkProto&>(::xla::gpu::_SequentialThunkProto_default_instance_);
}
inline const ::xla::gpu::SequentialThunkProto& WhileThunkProto::condition_thunk_sequence() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.WhileThunkProto.condition_thunk_sequence)
  return _internal_condition_thunk_sequence();
}
inline void WhileThunkProto::unsafe_arena_set_allocated_condition_thunk_sequence(
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.condition_thunk_sequence_);
  }
  _impl_.condition_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.WhileThunkProto.condition_thunk_sequence)
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE WhileThunkProto::release_condition_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::SequentialThunkProto* temp = _impl_.condition_thunk_sequence_;
  _impl_.condition_thunk_sequence_ = nullptr;
  return temp;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL WhileThunkProto::_internal_mutable_condition_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.condition_thunk_sequence_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SequentialThunkProto>(GetArena());
    _impl_.condition_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(p);
  }
  return _impl_.condition_thunk_sequence_;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL WhileThunkProto::mutable_condition_thunk_sequence()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::SequentialThunkProto* _msg = _internal_mutable_condition_thunk_sequence();
  // @@protoc_insertion_point(field_mutable:xla.gpu.WhileThunkProto.condition_thunk_sequence)
  return _msg;
}
inline void WhileThunkProto::set_allocated_condition_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.condition_thunk_sequence_);
  }

  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_.condition_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.WhileThunkProto.condition_thunk_sequence)
}

// .xla.gpu.SequentialThunkProto body_thunk_sequence = 3;
inline bool WhileThunkProto::has_body_thunk_sequence() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.body_thunk_sequence_ != nullptr);
  return value;
}
inline void WhileThunkProto::clear_body_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.body_thunk_sequence_ != nullptr) _impl_.body_thunk_sequence_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::gpu::SequentialThunkProto& WhileThunkProto::_internal_body_thunk_sequence() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::SequentialThunkProto* p = _impl_.body_thunk_sequence_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::SequentialThunkProto&>(::xla::gpu::_SequentialThunkProto_default_instance_);
}
inline const ::xla::gpu::SequentialThunkProto& WhileThunkProto::body_thunk_sequence() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.WhileThunkProto.body_thunk_sequence)
  return _internal_body_thunk_sequence();
}
inline void WhileThunkProto::unsafe_arena_set_allocated_body_thunk_sequence(
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.body_thunk_sequence_);
  }
  _impl_.body_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.WhileThunkProto.body_thunk_sequence)
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE WhileThunkProto::release_body_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::SequentialThunkProto* temp = _impl_.body_thunk_sequence_;
  _impl_.body_thunk_sequence_ = nullptr;
  return temp;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL WhileThunkProto::_internal_mutable_body_thunk_sequence() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.body_thunk_sequence_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SequentialThunkProto>(GetArena());
    _impl_.body_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(p);
  }
  return _impl_.body_thunk_sequence_;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL WhileThunkProto::mutable_body_thunk_sequence()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::gpu::SequentialThunkProto* _msg = _internal_mutable_body_thunk_sequence();
  // @@protoc_insertion_point(field_mutable:xla.gpu.WhileThunkProto.body_thunk_sequence)
  return _msg;
}
inline void WhileThunkProto::set_allocated_body_thunk_sequence(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.body_thunk_sequence_);
  }

  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_.body_thunk_sequence_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.WhileThunkProto.body_thunk_sequence)
}

// optional int64 trip_count = 4;
inline bool WhileThunkProto::has_trip_count() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void WhileThunkProto::clear_trip_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.trip_count_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t WhileThunkProto::trip_count() const {
  // @@protoc_insertion_point(field_get:xla.gpu.WhileThunkProto.trip_count)
  return _internal_trip_count();
}
inline void WhileThunkProto::set_trip_count(::int64_t value) {
  _internal_set_trip_count(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.WhileThunkProto.trip_count)
}
inline ::int64_t WhileThunkProto::_internal_trip_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.trip_count_;
}
inline void WhileThunkProto::_internal_set_trip_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.trip_count_ = value;
}

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

// KernelThunkProto

// repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
inline int KernelThunkProto::_internal_args_size() const {
  return _internal_args().size();
}
inline int KernelThunkProto::args_size() const {
  return _internal_args_size();
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL KernelThunkProto::mutable_args(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.args)
  return _internal_mutable_args()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL KernelThunkProto::mutable_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.KernelThunkProto.args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args();
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& KernelThunkProto::args(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.args)
  return _internal_args().Get(index);
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL KernelThunkProto::add_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::buffer_assignment::BufferAllocationSliceProto* _add = _internal_mutable_args()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.KernelThunkProto.args)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& KernelThunkProto::args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.KernelThunkProto.args)
  return _internal_args();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>&
KernelThunkProto::_internal_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL
KernelThunkProto::_internal_mutable_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_;
}

// repeated .xla.ShapeProto args_shape = 8;
inline int KernelThunkProto::_internal_args_shape_size() const {
  return _internal_args_shape().size();
}
inline int KernelThunkProto::args_shape_size() const {
  return _internal_args_shape_size();
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL KernelThunkProto::mutable_args_shape(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.args_shape)
  return _internal_mutable_args_shape()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL KernelThunkProto::mutable_args_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.KernelThunkProto.args_shape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args_shape();
}
inline const ::xla::ShapeProto& KernelThunkProto::args_shape(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.args_shape)
  return _internal_args_shape().Get(index);
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL KernelThunkProto::add_args_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapeProto* _add = _internal_mutable_args_shape()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.KernelThunkProto.args_shape)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>& KernelThunkProto::args_shape() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.KernelThunkProto.args_shape)
  return _internal_args_shape();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>&
KernelThunkProto::_internal_args_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_shape_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapeProto>* PROTOBUF_NONNULL
KernelThunkProto::_internal_mutable_args_shape() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_shape_;
}

// repeated bool written = 2;
inline int KernelThunkProto::_internal_written_size() const {
  return _internal_written().size();
}
inline int KernelThunkProto::written_size() const {
  return _internal_written_size();
}
inline void KernelThunkProto::clear_written() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.written_.Clear();
}
inline bool KernelThunkProto::written(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.written)
  return _internal_written().Get(index);
}
inline void KernelThunkProto::set_written(int index, bool value) {
  _internal_mutable_written()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.gpu.KernelThunkProto.written)
}
inline void KernelThunkProto::add_written(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_written()->Add(value);
  // @@protoc_insertion_point(field_add:xla.gpu.KernelThunkProto.written)
}
inline const ::google::protobuf::RepeatedField<bool>& KernelThunkProto::written() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.KernelThunkProto.written)
  return _internal_written();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL KernelThunkProto::mutable_written()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.KernelThunkProto.written)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_written();
}
inline const ::google::protobuf::RepeatedField<bool>&
KernelThunkProto::_internal_written() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.written_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
KernelThunkProto::_internal_mutable_written() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.written_;
}

// string kernel_name = 3;
inline void KernelThunkProto::clear_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& KernelThunkProto::kernel_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.kernel_name)
  return _internal_kernel_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void KernelThunkProto::set_kernel_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.kernel_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.KernelThunkProto.kernel_name)
}
inline ::std::string* PROTOBUF_NONNULL KernelThunkProto::mutable_kernel_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_kernel_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.kernel_name)
  return _s;
}
inline const ::std::string& KernelThunkProto::_internal_kernel_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_name_.Get();
}
inline void KernelThunkProto::_internal_set_kernel_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.kernel_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL KernelThunkProto::_internal_mutable_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.kernel_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE KernelThunkProto::release_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.KernelThunkProto.kernel_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.kernel_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.kernel_name_.Set("", GetArena());
  }
  return released;
}
inline void KernelThunkProto::set_allocated_kernel_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.kernel_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.kernel_name_.IsDefault()) {
    _impl_.kernel_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.KernelThunkProto.kernel_name)
}

// .xla.gpu.LaunchDimensionsProto launch_dimensions = 4;
inline bool KernelThunkProto::has_launch_dimensions() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.launch_dimensions_ != nullptr);
  return value;
}
inline const ::xla::gpu::LaunchDimensionsProto& KernelThunkProto::_internal_launch_dimensions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::LaunchDimensionsProto* p = _impl_.launch_dimensions_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::LaunchDimensionsProto&>(::xla::gpu::_LaunchDimensionsProto_default_instance_);
}
inline const ::xla::gpu::LaunchDimensionsProto& KernelThunkProto::launch_dimensions() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.launch_dimensions)
  return _internal_launch_dimensions();
}
inline void KernelThunkProto::unsafe_arena_set_allocated_launch_dimensions(
    ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.launch_dimensions_);
  }
  _impl_.launch_dimensions_ = reinterpret_cast<::xla::gpu::LaunchDimensionsProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.KernelThunkProto.launch_dimensions)
}
inline ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE KernelThunkProto::release_launch_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::LaunchDimensionsProto* temp = _impl_.launch_dimensions_;
  _impl_.launch_dimensions_ = nullptr;
  return temp;
}
inline ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NONNULL KernelThunkProto::_internal_mutable_launch_dimensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.launch_dimensions_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::LaunchDimensionsProto>(GetArena());
    _impl_.launch_dimensions_ = reinterpret_cast<::xla::gpu::LaunchDimensionsProto*>(p);
  }
  return _impl_.launch_dimensions_;
}
inline ::xla::gpu::LaunchDimensionsProto* PROTOBUF_NONNULL KernelThunkProto::mutable_launch_dimensions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::LaunchDimensionsProto* _msg = _internal_mutable_launch_dimensions();
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.launch_dimensions)
  return _msg;
}
inline void KernelThunkProto::set_allocated_launch_dimensions(::xla::gpu::LaunchDimensionsProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.launch_dimensions_);
  }

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

  _impl_.launch_dimensions_ = reinterpret_cast<::xla::gpu::LaunchDimensionsProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.KernelThunkProto.launch_dimensions)
}

// optional .stream_executor.ClusterDimProto cluster_dim = 5;
inline bool KernelThunkProto::has_cluster_dim() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.cluster_dim_ != nullptr);
  return value;
}
inline const ::stream_executor::ClusterDimProto& KernelThunkProto::_internal_cluster_dim() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::stream_executor::ClusterDimProto* p = _impl_.cluster_dim_;
  return p != nullptr ? *p : reinterpret_cast<const ::stream_executor::ClusterDimProto&>(::stream_executor::_ClusterDimProto_default_instance_);
}
inline const ::stream_executor::ClusterDimProto& KernelThunkProto::cluster_dim() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.cluster_dim)
  return _internal_cluster_dim();
}
inline void KernelThunkProto::unsafe_arena_set_allocated_cluster_dim(
    ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cluster_dim_);
  }
  _impl_.cluster_dim_ = reinterpret_cast<::stream_executor::ClusterDimProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.KernelThunkProto.cluster_dim)
}
inline ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE KernelThunkProto::release_cluster_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::stream_executor::ClusterDimProto* released = _impl_.cluster_dim_;
  _impl_.cluster_dim_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE KernelThunkProto::unsafe_arena_release_cluster_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.KernelThunkProto.cluster_dim)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::stream_executor::ClusterDimProto* temp = _impl_.cluster_dim_;
  _impl_.cluster_dim_ = nullptr;
  return temp;
}
inline ::stream_executor::ClusterDimProto* PROTOBUF_NONNULL KernelThunkProto::_internal_mutable_cluster_dim() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cluster_dim_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::stream_executor::ClusterDimProto>(GetArena());
    _impl_.cluster_dim_ = reinterpret_cast<::stream_executor::ClusterDimProto*>(p);
  }
  return _impl_.cluster_dim_;
}
inline ::stream_executor::ClusterDimProto* PROTOBUF_NONNULL KernelThunkProto::mutable_cluster_dim()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::stream_executor::ClusterDimProto* _msg = _internal_mutable_cluster_dim();
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.cluster_dim)
  return _msg;
}
inline void KernelThunkProto::set_allocated_cluster_dim(::stream_executor::ClusterDimProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cluster_dim_);
  }

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

  _impl_.cluster_dim_ = reinterpret_cast<::stream_executor::ClusterDimProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.KernelThunkProto.cluster_dim)
}

// int64 shmem_bytes = 6;
inline void KernelThunkProto::clear_shmem_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shmem_bytes_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t KernelThunkProto::shmem_bytes() const {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.shmem_bytes)
  return _internal_shmem_bytes();
}
inline void KernelThunkProto::set_shmem_bytes(::int64_t value) {
  _internal_set_shmem_bytes(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.KernelThunkProto.shmem_bytes)
}
inline ::int64_t KernelThunkProto::_internal_shmem_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shmem_bytes_;
}
inline void KernelThunkProto::_internal_set_shmem_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shmem_bytes_ = value;
}

// optional .stream_executor.gpu.TmaMetadataProto tma_metadata = 7;
inline bool KernelThunkProto::has_tma_metadata() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.tma_metadata_ != nullptr);
  return value;
}
inline const ::stream_executor::gpu::TmaMetadataProto& KernelThunkProto::_internal_tma_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::stream_executor::gpu::TmaMetadataProto* p = _impl_.tma_metadata_;
  return p != nullptr ? *p : reinterpret_cast<const ::stream_executor::gpu::TmaMetadataProto&>(::stream_executor::gpu::_TmaMetadataProto_default_instance_);
}
inline const ::stream_executor::gpu::TmaMetadataProto& KernelThunkProto::tma_metadata() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.KernelThunkProto.tma_metadata)
  return _internal_tma_metadata();
}
inline void KernelThunkProto::unsafe_arena_set_allocated_tma_metadata(
    ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tma_metadata_);
  }
  _impl_.tma_metadata_ = reinterpret_cast<::stream_executor::gpu::TmaMetadataProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.KernelThunkProto.tma_metadata)
}
inline ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE KernelThunkProto::release_tma_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::stream_executor::gpu::TmaMetadataProto* released = _impl_.tma_metadata_;
  _impl_.tma_metadata_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE KernelThunkProto::unsafe_arena_release_tma_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.KernelThunkProto.tma_metadata)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::stream_executor::gpu::TmaMetadataProto* temp = _impl_.tma_metadata_;
  _impl_.tma_metadata_ = nullptr;
  return temp;
}
inline ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NONNULL KernelThunkProto::_internal_mutable_tma_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.tma_metadata_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::stream_executor::gpu::TmaMetadataProto>(GetArena());
    _impl_.tma_metadata_ = reinterpret_cast<::stream_executor::gpu::TmaMetadataProto*>(p);
  }
  return _impl_.tma_metadata_;
}
inline ::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NONNULL KernelThunkProto::mutable_tma_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::stream_executor::gpu::TmaMetadataProto* _msg = _internal_mutable_tma_metadata();
  // @@protoc_insertion_point(field_mutable:xla.gpu.KernelThunkProto.tma_metadata)
  return _msg;
}
inline void KernelThunkProto::set_allocated_tma_metadata(::stream_executor::gpu::TmaMetadataProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tma_metadata_);
  }

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

  _impl_.tma_metadata_ = reinterpret_cast<::stream_executor::gpu::TmaMetadataProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.KernelThunkProto.tma_metadata)
}

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

// GemmThunkProto

// .xla.GemmConfigProto gemm_config = 1;
inline bool GemmThunkProto::has_gemm_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.gemm_config_ != nullptr);
  return value;
}
inline const ::xla::GemmConfigProto& GemmThunkProto::_internal_gemm_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::GemmConfigProto* p = _impl_.gemm_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::GemmConfigProto&>(::xla::_GemmConfigProto_default_instance_);
}
inline const ::xla::GemmConfigProto& GemmThunkProto::gemm_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.gemm_config)
  return _internal_gemm_config();
}
inline void GemmThunkProto::unsafe_arena_set_allocated_gemm_config(
    ::xla::GemmConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gemm_config_);
  }
  _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.GemmThunkProto.gemm_config)
}
inline ::xla::GemmConfigProto* PROTOBUF_NULLABLE GemmThunkProto::release_gemm_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::GemmConfigProto* released = _impl_.gemm_config_;
  _impl_.gemm_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::GemmConfigProto* PROTOBUF_NULLABLE GemmThunkProto::unsafe_arena_release_gemm_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.GemmThunkProto.gemm_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::GemmConfigProto* temp = _impl_.gemm_config_;
  _impl_.gemm_config_ = nullptr;
  return temp;
}
inline ::xla::GemmConfigProto* PROTOBUF_NONNULL GemmThunkProto::_internal_mutable_gemm_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.gemm_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::GemmConfigProto>(GetArena());
    _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(p);
  }
  return _impl_.gemm_config_;
}
inline ::xla::GemmConfigProto* PROTOBUF_NONNULL GemmThunkProto::mutable_gemm_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::GemmConfigProto* _msg = _internal_mutable_gemm_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.GemmThunkProto.gemm_config)
  return _msg;
}
inline void GemmThunkProto::set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gemm_config_);
  }

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

  _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.GemmThunkProto.gemm_config)
}

// .xla.buffer_assignment.BufferAllocationSliceProto lhs_buffer = 2;
inline bool GemmThunkProto::has_lhs_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.lhs_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::_internal_lhs_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.lhs_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::lhs_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.lhs_buffer)
  return _internal_lhs_buffer();
}
inline void GemmThunkProto::unsafe_arena_set_allocated_lhs_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lhs_buffer_);
  }
  _impl_.lhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.GemmThunkProto.lhs_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::release_lhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.lhs_buffer_;
  _impl_.lhs_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::unsafe_arena_release_lhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.GemmThunkProto.lhs_buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.lhs_buffer_;
  _impl_.lhs_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::_internal_mutable_lhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.lhs_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.lhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.lhs_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::mutable_lhs_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_lhs_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.GemmThunkProto.lhs_buffer)
  return _msg;
}
inline void GemmThunkProto::set_allocated_lhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lhs_buffer_);
  }

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

  _impl_.lhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.GemmThunkProto.lhs_buffer)
}

// .xla.buffer_assignment.BufferAllocationSliceProto rhs_buffer = 3;
inline bool GemmThunkProto::has_rhs_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.rhs_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::_internal_rhs_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.rhs_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::rhs_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.rhs_buffer)
  return _internal_rhs_buffer();
}
inline void GemmThunkProto::unsafe_arena_set_allocated_rhs_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rhs_buffer_);
  }
  _impl_.rhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.GemmThunkProto.rhs_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::release_rhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.rhs_buffer_;
  _impl_.rhs_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::unsafe_arena_release_rhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.GemmThunkProto.rhs_buffer)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.rhs_buffer_;
  _impl_.rhs_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::_internal_mutable_rhs_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rhs_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.rhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.rhs_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::mutable_rhs_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_rhs_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.GemmThunkProto.rhs_buffer)
  return _msg;
}
inline void GemmThunkProto::set_allocated_rhs_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rhs_buffer_);
  }

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

  _impl_.rhs_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.GemmThunkProto.rhs_buffer)
}

// .xla.buffer_assignment.BufferAllocationSliceProto output_buffer = 4;
inline bool GemmThunkProto::has_output_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::_internal_output_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.output_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::output_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.output_buffer)
  return _internal_output_buffer();
}
inline void GemmThunkProto::unsafe_arena_set_allocated_output_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_buffer_);
  }
  _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.GemmThunkProto.output_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::release_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.output_buffer_;
  _impl_.output_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::unsafe_arena_release_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.GemmThunkProto.output_buffer)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.output_buffer_;
  _impl_.output_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::_internal_mutable_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.output_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.output_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::mutable_output_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_output_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.GemmThunkProto.output_buffer)
  return _msg;
}
inline void GemmThunkProto::set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_buffer_);
  }

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

  _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.GemmThunkProto.output_buffer)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto workspace = 5;
inline bool GemmThunkProto::has_workspace() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.workspace_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::_internal_workspace() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.workspace_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& GemmThunkProto::workspace() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.workspace)
  return _internal_workspace();
}
inline void GemmThunkProto::unsafe_arena_set_allocated_workspace(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.workspace_);
  }
  _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.GemmThunkProto.workspace)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::release_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.workspace_;
  _impl_.workspace_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE GemmThunkProto::unsafe_arena_release_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.GemmThunkProto.workspace)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.workspace_;
  _impl_.workspace_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::_internal_mutable_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.workspace_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.workspace_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL GemmThunkProto::mutable_workspace()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_workspace();
  // @@protoc_insertion_point(field_mutable:xla.gpu.GemmThunkProto.workspace)
  return _msg;
}
inline void GemmThunkProto::set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.workspace_);
  }

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

  _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.GemmThunkProto.workspace)
}

// bool deterministic = 6;
inline void GemmThunkProto::clear_deterministic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deterministic_ = false;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline bool GemmThunkProto::deterministic() const {
  // @@protoc_insertion_point(field_get:xla.gpu.GemmThunkProto.deterministic)
  return _internal_deterministic();
}
inline void GemmThunkProto::set_deterministic(bool value) {
  _internal_set_deterministic(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.gpu.GemmThunkProto.deterministic)
}
inline bool GemmThunkProto::_internal_deterministic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.deterministic_;
}
inline void GemmThunkProto::_internal_set_deterministic(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deterministic_ = value;
}

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

// WaitForStreamsThunkProto

// int64 stream_id = 1;
inline void WaitForStreamsThunkProto::clear_stream_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stream_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t WaitForStreamsThunkProto::stream_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.WaitForStreamsThunkProto.stream_id)
  return _internal_stream_id();
}
inline void WaitForStreamsThunkProto::set_stream_id(::int64_t value) {
  _internal_set_stream_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.WaitForStreamsThunkProto.stream_id)
}
inline ::int64_t WaitForStreamsThunkProto::_internal_stream_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stream_id_;
}
inline void WaitForStreamsThunkProto::_internal_set_stream_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stream_id_ = value;
}

// int64 wait_for_stream_id = 2;
inline void WaitForStreamsThunkProto::clear_wait_for_stream_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.wait_for_stream_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t WaitForStreamsThunkProto::wait_for_stream_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.WaitForStreamsThunkProto.wait_for_stream_id)
  return _internal_wait_for_stream_id();
}
inline void WaitForStreamsThunkProto::set_wait_for_stream_id(::int64_t value) {
  _internal_set_wait_for_stream_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.WaitForStreamsThunkProto.wait_for_stream_id)
}
inline ::int64_t WaitForStreamsThunkProto::_internal_wait_for_stream_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.wait_for_stream_id_;
}
inline void WaitForStreamsThunkProto::_internal_set_wait_for_stream_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.wait_for_stream_id_ = value;
}

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

// TriangularSolveThunkProto

// .xla.TriangularSolveOptions options = 1;
inline bool TriangularSolveThunkProto::has_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
  return value;
}
inline const ::xla::TriangularSolveOptions& TriangularSolveThunkProto::_internal_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::TriangularSolveOptions* p = _impl_.options_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::TriangularSolveOptions&>(::xla::_TriangularSolveOptions_default_instance_);
}
inline const ::xla::TriangularSolveOptions& TriangularSolveThunkProto::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.TriangularSolveThunkProto.options)
  return _internal_options();
}
inline void TriangularSolveThunkProto::unsafe_arena_set_allocated_options(
    ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.options_);
  }
  _impl_.options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.TriangularSolveThunkProto.options)
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE TriangularSolveThunkProto::release_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::TriangularSolveOptions* released = _impl_.options_;
  _impl_.options_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NULLABLE TriangularSolveThunkProto::unsafe_arena_release_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.TriangularSolveThunkProto.options)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::TriangularSolveOptions* temp = _impl_.options_;
  _impl_.options_ = nullptr;
  return temp;
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NONNULL TriangularSolveThunkProto::_internal_mutable_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::TriangularSolveOptions>(GetArena());
    _impl_.options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(p);
  }
  return _impl_.options_;
}
inline ::xla::TriangularSolveOptions* PROTOBUF_NONNULL TriangularSolveThunkProto::mutable_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::TriangularSolveOptions* _msg = _internal_mutable_options();
  // @@protoc_insertion_point(field_mutable:xla.gpu.TriangularSolveThunkProto.options)
  return _msg;
}
inline void TriangularSolveThunkProto::set_allocated_options(::xla::TriangularSolveOptions* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.options_);
  }

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

  _impl_.options_ = reinterpret_cast<::xla::TriangularSolveOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.TriangularSolveThunkProto.options)
}

// .xla.ShapedSliceProto a_buffer = 2;
inline bool TriangularSolveThunkProto::has_a_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.a_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::_internal_a_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.a_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::a_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.TriangularSolveThunkProto.a_buffer)
  return _internal_a_buffer();
}
inline void TriangularSolveThunkProto::unsafe_arena_set_allocated_a_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_buffer_);
  }
  _impl_.a_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.TriangularSolveThunkProto.a_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE TriangularSolveThunkProto::release_a_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::ShapedSliceProto* temp = _impl_.a_buffer_;
  _impl_.a_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::_internal_mutable_a_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.a_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.a_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.a_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::mutable_a_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_a_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.TriangularSolveThunkProto.a_buffer)
  return _msg;
}
inline void TriangularSolveThunkProto::set_allocated_a_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_buffer_);
  }

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

  _impl_.a_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.TriangularSolveThunkProto.a_buffer)
}

// .xla.ShapedSliceProto b_buffer = 3;
inline bool TriangularSolveThunkProto::has_b_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.b_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::_internal_b_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.b_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::b_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.TriangularSolveThunkProto.b_buffer)
  return _internal_b_buffer();
}
inline void TriangularSolveThunkProto::unsafe_arena_set_allocated_b_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_buffer_);
  }
  _impl_.b_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.TriangularSolveThunkProto.b_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE TriangularSolveThunkProto::release_b_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ShapedSliceProto* temp = _impl_.b_buffer_;
  _impl_.b_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::_internal_mutable_b_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.b_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.b_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.b_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::mutable_b_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_b_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.TriangularSolveThunkProto.b_buffer)
  return _msg;
}
inline void TriangularSolveThunkProto::set_allocated_b_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_buffer_);
  }

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

  _impl_.b_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.TriangularSolveThunkProto.b_buffer)
}

// .xla.ShapedSliceProto temp_buffer = 4;
inline bool TriangularSolveThunkProto::has_temp_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.temp_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::_internal_temp_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.temp_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& TriangularSolveThunkProto::temp_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.TriangularSolveThunkProto.temp_buffer)
  return _internal_temp_buffer();
}
inline void TriangularSolveThunkProto::unsafe_arena_set_allocated_temp_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.temp_buffer_);
  }
  _impl_.temp_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.TriangularSolveThunkProto.temp_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE TriangularSolveThunkProto::release_temp_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::ShapedSliceProto* temp = _impl_.temp_buffer_;
  _impl_.temp_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::_internal_mutable_temp_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.temp_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.temp_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.temp_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL TriangularSolveThunkProto::mutable_temp_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_temp_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.TriangularSolveThunkProto.temp_buffer)
  return _msg;
}
inline void TriangularSolveThunkProto::set_allocated_temp_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.temp_buffer_);
  }

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

  _impl_.temp_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.TriangularSolveThunkProto.temp_buffer)
}

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

// ReplicaIdThunkProto

// .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
inline bool ReplicaIdThunkProto::has_dest_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dest_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& ReplicaIdThunkProto::_internal_dest_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dest_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& ReplicaIdThunkProto::dest_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ReplicaIdThunkProto.dest_buffer)
  return _internal_dest_buffer();
}
inline void ReplicaIdThunkProto::unsafe_arena_set_allocated_dest_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }
  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ReplicaIdThunkProto.dest_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE ReplicaIdThunkProto::release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE ReplicaIdThunkProto::unsafe_arena_release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ReplicaIdThunkProto.dest_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL ReplicaIdThunkProto::_internal_mutable_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dest_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dest_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL ReplicaIdThunkProto::mutable_dest_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dest_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ReplicaIdThunkProto.dest_buffer)
  return _msg;
}
inline void ReplicaIdThunkProto::set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }

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

  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ReplicaIdThunkProto.dest_buffer)
}

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

// PartitionIdThunkProto

// .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
inline bool PartitionIdThunkProto::has_dest_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dest_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& PartitionIdThunkProto::_internal_dest_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dest_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& PartitionIdThunkProto::dest_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.PartitionIdThunkProto.dest_buffer)
  return _internal_dest_buffer();
}
inline void PartitionIdThunkProto::unsafe_arena_set_allocated_dest_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }
  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.PartitionIdThunkProto.dest_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE PartitionIdThunkProto::release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE PartitionIdThunkProto::unsafe_arena_release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.PartitionIdThunkProto.dest_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL PartitionIdThunkProto::_internal_mutable_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dest_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dest_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL PartitionIdThunkProto::mutable_dest_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dest_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.PartitionIdThunkProto.dest_buffer)
  return _msg;
}
inline void PartitionIdThunkProto::set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }

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

  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.PartitionIdThunkProto.dest_buffer)
}

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

// CudnnThunkProto

// string fingerprint = 1;
inline void CudnnThunkProto::clear_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fingerprint_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& CudnnThunkProto::fingerprint() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CudnnThunkProto.fingerprint)
  return _internal_fingerprint();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CudnnThunkProto::set_fingerprint(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.fingerprint_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.CudnnThunkProto.fingerprint)
}
inline ::std::string* PROTOBUF_NONNULL CudnnThunkProto::mutable_fingerprint()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_fingerprint();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CudnnThunkProto.fingerprint)
  return _s;
}
inline const ::std::string& CudnnThunkProto::_internal_fingerprint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fingerprint_.Get();
}
inline void CudnnThunkProto::_internal_set_fingerprint(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.fingerprint_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CudnnThunkProto::_internal_mutable_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.fingerprint_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CudnnThunkProto::release_fingerprint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CudnnThunkProto.fingerprint)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.fingerprint_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.fingerprint_.Set("", GetArena());
  }
  return released;
}
inline void CudnnThunkProto::set_allocated_fingerprint(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.fingerprint_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.fingerprint_.IsDefault()) {
    _impl_.fingerprint_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CudnnThunkProto.fingerprint)
}

// repeated .xla.ShapedSliceProto args = 2;
inline int CudnnThunkProto::_internal_args_size() const {
  return _internal_args().size();
}
inline int CudnnThunkProto::args_size() const {
  return _internal_args_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CudnnThunkProto::mutable_args(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CudnnThunkProto.args)
  return _internal_mutable_args()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL CudnnThunkProto::mutable_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CudnnThunkProto.args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args();
}
inline const ::xla::ShapedSliceProto& CudnnThunkProto::args(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CudnnThunkProto.args)
  return _internal_args().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CudnnThunkProto::add_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_args()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CudnnThunkProto.args)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& CudnnThunkProto::args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CudnnThunkProto.args)
  return _internal_args();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
CudnnThunkProto::_internal_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
CudnnThunkProto::_internal_mutable_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_;
}

// repeated bool output_args = 4;
inline int CudnnThunkProto::_internal_output_args_size() const {
  return _internal_output_args().size();
}
inline int CudnnThunkProto::output_args_size() const {
  return _internal_output_args_size();
}
inline void CudnnThunkProto::clear_output_args() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_args_.Clear();
}
inline bool CudnnThunkProto::output_args(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.CudnnThunkProto.output_args)
  return _internal_output_args().Get(index);
}
inline void CudnnThunkProto::set_output_args(int index, bool value) {
  _internal_mutable_output_args()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.gpu.CudnnThunkProto.output_args)
}
inline void CudnnThunkProto::add_output_args(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_output_args()->Add(value);
  // @@protoc_insertion_point(field_add:xla.gpu.CudnnThunkProto.output_args)
}
inline const ::google::protobuf::RepeatedField<bool>& CudnnThunkProto::output_args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CudnnThunkProto.output_args)
  return _internal_output_args();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL CudnnThunkProto::mutable_output_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CudnnThunkProto.output_args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_args();
}
inline const ::google::protobuf::RepeatedField<bool>&
CudnnThunkProto::_internal_output_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_args_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
CudnnThunkProto::_internal_mutable_output_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_args_;
}

// optional int64 sdpa_dropout_seed = 3;
inline bool CudnnThunkProto::has_sdpa_dropout_seed() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void CudnnThunkProto::clear_sdpa_dropout_seed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sdpa_dropout_seed_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t CudnnThunkProto::sdpa_dropout_seed() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CudnnThunkProto.sdpa_dropout_seed)
  return _internal_sdpa_dropout_seed();
}
inline void CudnnThunkProto::set_sdpa_dropout_seed(::int64_t value) {
  _internal_set_sdpa_dropout_seed(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CudnnThunkProto.sdpa_dropout_seed)
}
inline ::int64_t CudnnThunkProto::_internal_sdpa_dropout_seed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sdpa_dropout_seed_;
}
inline void CudnnThunkProto::_internal_set_sdpa_dropout_seed(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sdpa_dropout_seed_ = value;
}

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

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

// HostSendThunkProto

// .xla.ShapeProto shape = 1;
inline bool HostSendThunkProto::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& HostSendThunkProto::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& HostSendThunkProto::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendThunkProto.shape)
  return _internal_shape();
}
inline void HostSendThunkProto::unsafe_arena_set_allocated_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.HostSendThunkProto.shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HostSendThunkProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL HostSendThunkProto::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL HostSendThunkProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostSendThunkProto.shape)
  return _msg;
}
inline void HostSendThunkProto::set_allocated_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }

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

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

// .xla.buffer_assignment.BufferAllocationSliceProto buffer = 2;
inline bool HostSendThunkProto::has_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& HostSendThunkProto::_internal_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& HostSendThunkProto::buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendThunkProto.buffer)
  return _internal_buffer();
}
inline void HostSendThunkProto::unsafe_arena_set_allocated_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }
  _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.HostSendThunkProto.buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE HostSendThunkProto::release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE HostSendThunkProto::unsafe_arena_release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.HostSendThunkProto.buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL HostSendThunkProto::_internal_mutable_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL HostSendThunkProto::mutable_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostSendThunkProto.buffer)
  return _msg;
}
inline void HostSendThunkProto::set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }

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

  _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.HostSendThunkProto.buffer)
}

// int64 channel_id = 3;
inline void HostSendThunkProto::clear_channel_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t HostSendThunkProto::channel_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendThunkProto.channel_id)
  return _internal_channel_id();
}
inline void HostSendThunkProto::set_channel_id(::int64_t value) {
  _internal_set_channel_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendThunkProto.channel_id)
}
inline ::int64_t HostSendThunkProto::_internal_channel_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.channel_id_;
}
inline void HostSendThunkProto::_internal_set_channel_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = value;
}

// map<string, string> frontend_attrs = 4;
inline int HostSendThunkProto::_internal_frontend_attrs_size() const {
  return _internal_frontend_attrs().size();
}
inline int HostSendThunkProto::frontend_attrs_size() const {
  return _internal_frontend_attrs_size();
}
inline void HostSendThunkProto::clear_frontend_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.frontend_attrs_.Clear();
}
inline const ::google::protobuf::Map<std::string, std::string>& HostSendThunkProto::_internal_frontend_attrs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.frontend_attrs_.GetMap();
}
inline const ::google::protobuf::Map<std::string, std::string>& HostSendThunkProto::frontend_attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.gpu.HostSendThunkProto.frontend_attrs)
  return _internal_frontend_attrs();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL HostSendThunkProto::_internal_mutable_frontend_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.frontend_attrs_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL HostSendThunkProto::mutable_frontend_attrs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.gpu.HostSendThunkProto.frontend_attrs)
  return _internal_mutable_frontend_attrs();
}

// optional int64 device_constraint = 5;
inline bool HostSendThunkProto::has_device_constraint() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void HostSendThunkProto::clear_device_constraint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t HostSendThunkProto::device_constraint() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendThunkProto.device_constraint)
  return _internal_device_constraint();
}
inline void HostSendThunkProto::set_device_constraint(::int64_t value) {
  _internal_set_device_constraint(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendThunkProto.device_constraint)
}
inline ::int64_t HostSendThunkProto::_internal_device_constraint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_constraint_;
}
inline void HostSendThunkProto::_internal_set_device_constraint(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = value;
}

// uint64 async_events_unique_id = 6;
inline void HostSendThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::uint64_t HostSendThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostSendThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendThunkProto.async_events_unique_id)
}
inline ::uint64_t HostSendThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostSendThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

// HostSendDoneThunkProto

// int64 channel_id = 1;
inline void HostSendDoneThunkProto::clear_channel_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t HostSendDoneThunkProto::channel_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendDoneThunkProto.channel_id)
  return _internal_channel_id();
}
inline void HostSendDoneThunkProto::set_channel_id(::int64_t value) {
  _internal_set_channel_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendDoneThunkProto.channel_id)
}
inline ::int64_t HostSendDoneThunkProto::_internal_channel_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.channel_id_;
}
inline void HostSendDoneThunkProto::_internal_set_channel_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = value;
}

// optional int64 device_constraint = 2;
inline bool HostSendDoneThunkProto::has_device_constraint() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void HostSendDoneThunkProto::clear_device_constraint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t HostSendDoneThunkProto::device_constraint() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendDoneThunkProto.device_constraint)
  return _internal_device_constraint();
}
inline void HostSendDoneThunkProto::set_device_constraint(::int64_t value) {
  _internal_set_device_constraint(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendDoneThunkProto.device_constraint)
}
inline ::int64_t HostSendDoneThunkProto::_internal_device_constraint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_constraint_;
}
inline void HostSendDoneThunkProto::_internal_set_device_constraint(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = value;
}

// uint64 async_events_unique_id = 3;
inline void HostSendDoneThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::uint64_t HostSendDoneThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostSendDoneThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostSendDoneThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostSendDoneThunkProto.async_events_unique_id)
}
inline ::uint64_t HostSendDoneThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostSendDoneThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

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

// HostRecvThunkProto

// .xla.ShapeProto shape = 1;
inline bool HostRecvThunkProto::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& HostRecvThunkProto::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& HostRecvThunkProto::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvThunkProto.shape)
  return _internal_shape();
}
inline void HostRecvThunkProto::unsafe_arena_set_allocated_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.HostRecvThunkProto.shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE HostRecvThunkProto::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapeProto* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL HostRecvThunkProto::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL HostRecvThunkProto::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostRecvThunkProto.shape)
  return _msg;
}
inline void HostRecvThunkProto::set_allocated_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }

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

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

// .xla.buffer_assignment.BufferAllocationSliceProto buffer = 2;
inline bool HostRecvThunkProto::has_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& HostRecvThunkProto::_internal_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& HostRecvThunkProto::buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvThunkProto.buffer)
  return _internal_buffer();
}
inline void HostRecvThunkProto::unsafe_arena_set_allocated_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }
  _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.HostRecvThunkProto.buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE HostRecvThunkProto::release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE HostRecvThunkProto::unsafe_arena_release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.HostRecvThunkProto.buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL HostRecvThunkProto::_internal_mutable_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL HostRecvThunkProto::mutable_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostRecvThunkProto.buffer)
  return _msg;
}
inline void HostRecvThunkProto::set_allocated_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }

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

  _impl_.buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.HostRecvThunkProto.buffer)
}

// int64 channel_id = 3;
inline void HostRecvThunkProto::clear_channel_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t HostRecvThunkProto::channel_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvThunkProto.channel_id)
  return _internal_channel_id();
}
inline void HostRecvThunkProto::set_channel_id(::int64_t value) {
  _internal_set_channel_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvThunkProto.channel_id)
}
inline ::int64_t HostRecvThunkProto::_internal_channel_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.channel_id_;
}
inline void HostRecvThunkProto::_internal_set_channel_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = value;
}

// map<string, string> frontend_attrs = 4;
inline int HostRecvThunkProto::_internal_frontend_attrs_size() const {
  return _internal_frontend_attrs().size();
}
inline int HostRecvThunkProto::frontend_attrs_size() const {
  return _internal_frontend_attrs_size();
}
inline void HostRecvThunkProto::clear_frontend_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.frontend_attrs_.Clear();
}
inline const ::google::protobuf::Map<std::string, std::string>& HostRecvThunkProto::_internal_frontend_attrs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.frontend_attrs_.GetMap();
}
inline const ::google::protobuf::Map<std::string, std::string>& HostRecvThunkProto::frontend_attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.gpu.HostRecvThunkProto.frontend_attrs)
  return _internal_frontend_attrs();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL HostRecvThunkProto::_internal_mutable_frontend_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.frontend_attrs_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* PROTOBUF_NONNULL HostRecvThunkProto::mutable_frontend_attrs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.gpu.HostRecvThunkProto.frontend_attrs)
  return _internal_mutable_frontend_attrs();
}

// optional int64 device_constraint = 5;
inline bool HostRecvThunkProto::has_device_constraint() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void HostRecvThunkProto::clear_device_constraint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t HostRecvThunkProto::device_constraint() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvThunkProto.device_constraint)
  return _internal_device_constraint();
}
inline void HostRecvThunkProto::set_device_constraint(::int64_t value) {
  _internal_set_device_constraint(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvThunkProto.device_constraint)
}
inline ::int64_t HostRecvThunkProto::_internal_device_constraint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_constraint_;
}
inline void HostRecvThunkProto::_internal_set_device_constraint(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = value;
}

// uint64 async_events_unique_id = 6;
inline void HostRecvThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::uint64_t HostRecvThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostRecvThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvThunkProto.async_events_unique_id)
}
inline ::uint64_t HostRecvThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostRecvThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

// HostRecvDoneThunkProto

// int64 channel_id = 1;
inline void HostRecvDoneThunkProto::clear_channel_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::int64_t HostRecvDoneThunkProto::channel_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvDoneThunkProto.channel_id)
  return _internal_channel_id();
}
inline void HostRecvDoneThunkProto::set_channel_id(::int64_t value) {
  _internal_set_channel_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvDoneThunkProto.channel_id)
}
inline ::int64_t HostRecvDoneThunkProto::_internal_channel_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.channel_id_;
}
inline void HostRecvDoneThunkProto::_internal_set_channel_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.channel_id_ = value;
}

// optional int64 device_constraint = 2;
inline bool HostRecvDoneThunkProto::has_device_constraint() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void HostRecvDoneThunkProto::clear_device_constraint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t HostRecvDoneThunkProto::device_constraint() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvDoneThunkProto.device_constraint)
  return _internal_device_constraint();
}
inline void HostRecvDoneThunkProto::set_device_constraint(::int64_t value) {
  _internal_set_device_constraint(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvDoneThunkProto.device_constraint)
}
inline ::int64_t HostRecvDoneThunkProto::_internal_device_constraint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.device_constraint_;
}
inline void HostRecvDoneThunkProto::_internal_set_device_constraint(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.device_constraint_ = value;
}

// uint64 async_events_unique_id = 3;
inline void HostRecvDoneThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::uint64_t HostRecvDoneThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostRecvDoneThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostRecvDoneThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostRecvDoneThunkProto.async_events_unique_id)
}
inline ::uint64_t HostRecvDoneThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostRecvDoneThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

// HostExecuteStartThunkProto

// .xla.HostOffloadingExecutableProto executable_proto = 1;
inline bool HostExecuteStartThunkProto::has_executable_proto() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.executable_proto_ != nullptr);
  return value;
}
inline const ::xla::HostOffloadingExecutableProto& HostExecuteStartThunkProto::_internal_executable_proto() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::HostOffloadingExecutableProto* p = _impl_.executable_proto_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::HostOffloadingExecutableProto&>(::xla::_HostOffloadingExecutableProto_default_instance_);
}
inline const ::xla::HostOffloadingExecutableProto& HostExecuteStartThunkProto::executable_proto() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostExecuteStartThunkProto.executable_proto)
  return _internal_executable_proto();
}
inline void HostExecuteStartThunkProto::unsafe_arena_set_allocated_executable_proto(
    ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.executable_proto_);
  }
  _impl_.executable_proto_ = reinterpret_cast<::xla::HostOffloadingExecutableProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.HostExecuteStartThunkProto.executable_proto)
}
inline ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE HostExecuteStartThunkProto::release_executable_proto() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HostOffloadingExecutableProto* released = _impl_.executable_proto_;
  _impl_.executable_proto_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE HostExecuteStartThunkProto::unsafe_arena_release_executable_proto() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.HostExecuteStartThunkProto.executable_proto)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::HostOffloadingExecutableProto* temp = _impl_.executable_proto_;
  _impl_.executable_proto_ = nullptr;
  return temp;
}
inline ::xla::HostOffloadingExecutableProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::_internal_mutable_executable_proto() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.executable_proto_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::HostOffloadingExecutableProto>(GetArena());
    _impl_.executable_proto_ = reinterpret_cast<::xla::HostOffloadingExecutableProto*>(p);
  }
  return _impl_.executable_proto_;
}
inline ::xla::HostOffloadingExecutableProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::mutable_executable_proto()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::HostOffloadingExecutableProto* _msg = _internal_mutable_executable_proto();
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostExecuteStartThunkProto.executable_proto)
  return _msg;
}
inline void HostExecuteStartThunkProto::set_allocated_executable_proto(::xla::HostOffloadingExecutableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.executable_proto_);
  }

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

  _impl_.executable_proto_ = reinterpret_cast<::xla::HostOffloadingExecutableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.HostExecuteStartThunkProto.executable_proto)
}

// repeated .xla.ShapedSliceProto args = 2;
inline int HostExecuteStartThunkProto::_internal_args_size() const {
  return _internal_args().size();
}
inline int HostExecuteStartThunkProto::args_size() const {
  return _internal_args_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::mutable_args(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostExecuteStartThunkProto.args)
  return _internal_mutable_args()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL HostExecuteStartThunkProto::mutable_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.HostExecuteStartThunkProto.args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args();
}
inline const ::xla::ShapedSliceProto& HostExecuteStartThunkProto::args(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostExecuteStartThunkProto.args)
  return _internal_args().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::add_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_args()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.HostExecuteStartThunkProto.args)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& HostExecuteStartThunkProto::args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.HostExecuteStartThunkProto.args)
  return _internal_args();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
HostExecuteStartThunkProto::_internal_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
HostExecuteStartThunkProto::_internal_mutable_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_;
}

// repeated .xla.ShapedSliceProto results = 3;
inline int HostExecuteStartThunkProto::_internal_results_size() const {
  return _internal_results().size();
}
inline int HostExecuteStartThunkProto::results_size() const {
  return _internal_results_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::mutable_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.HostExecuteStartThunkProto.results)
  return _internal_mutable_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL HostExecuteStartThunkProto::mutable_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.HostExecuteStartThunkProto.results)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_results();
}
inline const ::xla::ShapedSliceProto& HostExecuteStartThunkProto::results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.HostExecuteStartThunkProto.results)
  return _internal_results().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL HostExecuteStartThunkProto::add_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_results()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.HostExecuteStartThunkProto.results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& HostExecuteStartThunkProto::results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.HostExecuteStartThunkProto.results)
  return _internal_results();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
HostExecuteStartThunkProto::_internal_results() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.results_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
HostExecuteStartThunkProto::_internal_mutable_results() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.results_;
}

// uint64 async_events_unique_id = 4;
inline void HostExecuteStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t HostExecuteStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostExecuteStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostExecuteStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostExecuteStartThunkProto.async_events_unique_id)
}
inline ::uint64_t HostExecuteStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostExecuteStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

// HostExecuteDoneThunkProto

// uint64 async_events_unique_id = 1;
inline void HostExecuteDoneThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::uint64_t HostExecuteDoneThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.HostExecuteDoneThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void HostExecuteDoneThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.HostExecuteDoneThunkProto.async_events_unique_id)
}
inline ::uint64_t HostExecuteDoneThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void HostExecuteDoneThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

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

// DynamicSliceThunkProto

// .xla.gpu.SequentialThunkProto embedded_thunk = 1;
inline bool DynamicSliceThunkProto::has_embedded_thunk() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.embedded_thunk_ != nullptr);
  return value;
}
inline void DynamicSliceThunkProto::clear_embedded_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.embedded_thunk_ != nullptr) _impl_.embedded_thunk_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::SequentialThunkProto& DynamicSliceThunkProto::_internal_embedded_thunk() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::SequentialThunkProto* p = _impl_.embedded_thunk_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::SequentialThunkProto&>(::xla::gpu::_SequentialThunkProto_default_instance_);
}
inline const ::xla::gpu::SequentialThunkProto& DynamicSliceThunkProto::embedded_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.embedded_thunk)
  return _internal_embedded_thunk();
}
inline void DynamicSliceThunkProto::unsafe_arena_set_allocated_embedded_thunk(
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.embedded_thunk_);
  }
  _impl_.embedded_thunk_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.DynamicSliceThunkProto.embedded_thunk)
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE DynamicSliceThunkProto::release_embedded_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::SequentialThunkProto* released = _impl_.embedded_thunk_;
  _impl_.embedded_thunk_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE DynamicSliceThunkProto::unsafe_arena_release_embedded_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.DynamicSliceThunkProto.embedded_thunk)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::SequentialThunkProto* temp = _impl_.embedded_thunk_;
  _impl_.embedded_thunk_ = nullptr;
  return temp;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL DynamicSliceThunkProto::_internal_mutable_embedded_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.embedded_thunk_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SequentialThunkProto>(GetArena());
    _impl_.embedded_thunk_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(p);
  }
  return _impl_.embedded_thunk_;
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_embedded_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::SequentialThunkProto* _msg = _internal_mutable_embedded_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.embedded_thunk)
  return _msg;
}
inline void DynamicSliceThunkProto::set_allocated_embedded_thunk(::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.embedded_thunk_);
  }

  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_.embedded_thunk_ = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.DynamicSliceThunkProto.embedded_thunk)
}

// repeated .xla.gpu.OptionalBufferAllocationSliceProto arguments = 2;
inline int DynamicSliceThunkProto::_internal_arguments_size() const {
  return _internal_arguments().size();
}
inline int DynamicSliceThunkProto::arguments_size() const {
  return _internal_arguments_size();
}
inline ::xla::gpu::OptionalBufferAllocationSliceProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_arguments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.arguments)
  return _internal_mutable_arguments()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_arguments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.arguments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_arguments();
}
inline const ::xla::gpu::OptionalBufferAllocationSliceProto& DynamicSliceThunkProto::arguments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.arguments)
  return _internal_arguments().Get(index);
}
inline ::xla::gpu::OptionalBufferAllocationSliceProto* PROTOBUF_NONNULL DynamicSliceThunkProto::add_arguments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::OptionalBufferAllocationSliceProto* _add = _internal_mutable_arguments()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.arguments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>& DynamicSliceThunkProto::arguments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.arguments)
  return _internal_arguments();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>&
DynamicSliceThunkProto::_internal_arguments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.arguments_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalBufferAllocationSliceProto>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_arguments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.arguments_;
}

// repeated .xla.gpu.OptionalDynamicSliceOffsetsProto offsets = 3;
inline int DynamicSliceThunkProto::_internal_offsets_size() const {
  return _internal_offsets().size();
}
inline int DynamicSliceThunkProto::offsets_size() const {
  return _internal_offsets_size();
}
inline ::xla::gpu::OptionalDynamicSliceOffsetsProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_offsets(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.offsets)
  return _internal_mutable_offsets()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_offsets()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.offsets)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_offsets();
}
inline const ::xla::gpu::OptionalDynamicSliceOffsetsProto& DynamicSliceThunkProto::offsets(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.offsets)
  return _internal_offsets().Get(index);
}
inline ::xla::gpu::OptionalDynamicSliceOffsetsProto* PROTOBUF_NONNULL DynamicSliceThunkProto::add_offsets()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::OptionalDynamicSliceOffsetsProto* _add = _internal_mutable_offsets()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.offsets)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>& DynamicSliceThunkProto::offsets() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.offsets)
  return _internal_offsets();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>&
DynamicSliceThunkProto::_internal_offsets() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offsets_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalDynamicSliceOffsetsProto>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_offsets() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.offsets_;
}

// repeated .xla.gpu.OptionalShapeProto orig_shapes = 4;
inline int DynamicSliceThunkProto::_internal_orig_shapes_size() const {
  return _internal_orig_shapes().size();
}
inline int DynamicSliceThunkProto::orig_shapes_size() const {
  return _internal_orig_shapes_size();
}
inline ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_orig_shapes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.orig_shapes)
  return _internal_mutable_orig_shapes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_orig_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.orig_shapes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_orig_shapes();
}
inline const ::xla::gpu::OptionalShapeProto& DynamicSliceThunkProto::orig_shapes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.orig_shapes)
  return _internal_orig_shapes().Get(index);
}
inline ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL DynamicSliceThunkProto::add_orig_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::OptionalShapeProto* _add = _internal_mutable_orig_shapes()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.orig_shapes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& DynamicSliceThunkProto::orig_shapes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.orig_shapes)
  return _internal_orig_shapes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>&
DynamicSliceThunkProto::_internal_orig_shapes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.orig_shapes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_orig_shapes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.orig_shapes_;
}

// repeated .xla.gpu.OptionalShapeProto sliced_shapes = 5;
inline int DynamicSliceThunkProto::_internal_sliced_shapes_size() const {
  return _internal_sliced_shapes().size();
}
inline int DynamicSliceThunkProto::sliced_shapes_size() const {
  return _internal_sliced_shapes_size();
}
inline ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_sliced_shapes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.sliced_shapes)
  return _internal_mutable_sliced_shapes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_sliced_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.sliced_shapes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_sliced_shapes();
}
inline const ::xla::gpu::OptionalShapeProto& DynamicSliceThunkProto::sliced_shapes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.sliced_shapes)
  return _internal_sliced_shapes().Get(index);
}
inline ::xla::gpu::OptionalShapeProto* PROTOBUF_NONNULL DynamicSliceThunkProto::add_sliced_shapes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::OptionalShapeProto* _add = _internal_mutable_sliced_shapes()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.sliced_shapes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>& DynamicSliceThunkProto::sliced_shapes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.sliced_shapes)
  return _internal_sliced_shapes();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>&
DynamicSliceThunkProto::_internal_sliced_shapes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sliced_shapes_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalShapeProto>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_sliced_shapes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.sliced_shapes_;
}

// repeated .xla.gpu.OptionalPrimitiveType offset_primitive_types = 6;
inline int DynamicSliceThunkProto::_internal_offset_primitive_types_size() const {
  return _internal_offset_primitive_types().size();
}
inline int DynamicSliceThunkProto::offset_primitive_types_size() const {
  return _internal_offset_primitive_types_size();
}
inline ::xla::gpu::OptionalPrimitiveType* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_offset_primitive_types(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.offset_primitive_types)
  return _internal_mutable_offset_primitive_types()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_offset_primitive_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.offset_primitive_types)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_offset_primitive_types();
}
inline const ::xla::gpu::OptionalPrimitiveType& DynamicSliceThunkProto::offset_primitive_types(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.offset_primitive_types)
  return _internal_offset_primitive_types().Get(index);
}
inline ::xla::gpu::OptionalPrimitiveType* PROTOBUF_NONNULL DynamicSliceThunkProto::add_offset_primitive_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::OptionalPrimitiveType* _add = _internal_mutable_offset_primitive_types()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.offset_primitive_types)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>& DynamicSliceThunkProto::offset_primitive_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.offset_primitive_types)
  return _internal_offset_primitive_types();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>&
DynamicSliceThunkProto::_internal_offset_primitive_types() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_primitive_types_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::OptionalPrimitiveType>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_offset_primitive_types() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.offset_primitive_types_;
}

// optional .xla.gpu.OffsetAsFunctionOfIndvarModulesMetadataProto offset_as_function_of_indvar_modules_metadata = 7;
inline bool DynamicSliceThunkProto::has_offset_as_function_of_indvar_modules_metadata() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.offset_as_function_of_indvar_modules_metadata_ != nullptr);
  return value;
}
inline const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto& DynamicSliceThunkProto::_internal_offset_as_function_of_indvar_modules_metadata() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* p = _impl_.offset_as_function_of_indvar_modules_metadata_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto&>(::xla::gpu::_OffsetAsFunctionOfIndvarModulesMetadataProto_default_instance_);
}
inline const ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto& DynamicSliceThunkProto::offset_as_function_of_indvar_modules_metadata() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.offset_as_function_of_indvar_modules_metadata)
  return _internal_offset_as_function_of_indvar_modules_metadata();
}
inline void DynamicSliceThunkProto::unsafe_arena_set_allocated_offset_as_function_of_indvar_modules_metadata(
    ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.offset_as_function_of_indvar_modules_metadata_);
  }
  _impl_.offset_as_function_of_indvar_modules_metadata_ = reinterpret_cast<::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.DynamicSliceThunkProto.offset_as_function_of_indvar_modules_metadata)
}
inline ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE DynamicSliceThunkProto::release_offset_as_function_of_indvar_modules_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* temp = _impl_.offset_as_function_of_indvar_modules_metadata_;
  _impl_.offset_as_function_of_indvar_modules_metadata_ = nullptr;
  return temp;
}
inline ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NONNULL DynamicSliceThunkProto::_internal_mutable_offset_as_function_of_indvar_modules_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.offset_as_function_of_indvar_modules_metadata_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto>(GetArena());
    _impl_.offset_as_function_of_indvar_modules_metadata_ = reinterpret_cast<::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto*>(p);
  }
  return _impl_.offset_as_function_of_indvar_modules_metadata_;
}
inline ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_offset_as_function_of_indvar_modules_metadata()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* _msg = _internal_mutable_offset_as_function_of_indvar_modules_metadata();
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.offset_as_function_of_indvar_modules_metadata)
  return _msg;
}
inline void DynamicSliceThunkProto::set_allocated_offset_as_function_of_indvar_modules_metadata(::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.offset_as_function_of_indvar_modules_metadata_);
  }

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

  _impl_.offset_as_function_of_indvar_modules_metadata_ = reinterpret_cast<::xla::gpu::OffsetAsFunctionOfIndvarModulesMetadataProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.DynamicSliceThunkProto.offset_as_function_of_indvar_modules_metadata)
}

// repeated .xla.BufferAllocationProto fake_allocations = 8;
inline int DynamicSliceThunkProto::_internal_fake_allocations_size() const {
  return _internal_fake_allocations().size();
}
inline int DynamicSliceThunkProto::fake_allocations_size() const {
  return _internal_fake_allocations_size();
}
inline ::xla::BufferAllocationProto* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_fake_allocations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.DynamicSliceThunkProto.fake_allocations)
  return _internal_mutable_fake_allocations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL DynamicSliceThunkProto::mutable_fake_allocations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.DynamicSliceThunkProto.fake_allocations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_fake_allocations();
}
inline const ::xla::BufferAllocationProto& DynamicSliceThunkProto::fake_allocations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.DynamicSliceThunkProto.fake_allocations)
  return _internal_fake_allocations().Get(index);
}
inline ::xla::BufferAllocationProto* PROTOBUF_NONNULL DynamicSliceThunkProto::add_fake_allocations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::BufferAllocationProto* _add = _internal_mutable_fake_allocations()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.DynamicSliceThunkProto.fake_allocations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>& DynamicSliceThunkProto::fake_allocations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.DynamicSliceThunkProto.fake_allocations)
  return _internal_fake_allocations();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>&
DynamicSliceThunkProto::_internal_fake_allocations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fake_allocations_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::BufferAllocationProto>* PROTOBUF_NONNULL
DynamicSliceThunkProto::_internal_mutable_fake_allocations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.fake_allocations_;
}

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

// MemzeroThunkProto

// .xla.ShapedSliceProto dest_buffer = 1;
inline bool MemzeroThunkProto::has_dest_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dest_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& MemzeroThunkProto::_internal_dest_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.dest_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& MemzeroThunkProto::dest_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.MemzeroThunkProto.dest_buffer)
  return _internal_dest_buffer();
}
inline void MemzeroThunkProto::unsafe_arena_set_allocated_dest_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }
  _impl_.dest_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.MemzeroThunkProto.dest_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE MemzeroThunkProto::release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* released = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE MemzeroThunkProto::unsafe_arena_release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.MemzeroThunkProto.dest_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* temp = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL MemzeroThunkProto::_internal_mutable_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dest_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.dest_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.dest_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL MemzeroThunkProto::mutable_dest_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_dest_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.MemzeroThunkProto.dest_buffer)
  return _msg;
}
inline void MemzeroThunkProto::set_allocated_dest_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }

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

  _impl_.dest_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.MemzeroThunkProto.dest_buffer)
}

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

// Memset32BitValueThunkProto

// .xla.buffer_assignment.BufferAllocationSliceProto dest_buffer = 1;
inline bool Memset32BitValueThunkProto::has_dest_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dest_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& Memset32BitValueThunkProto::_internal_dest_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dest_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& Memset32BitValueThunkProto::dest_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.Memset32BitValueThunkProto.dest_buffer)
  return _internal_dest_buffer();
}
inline void Memset32BitValueThunkProto::unsafe_arena_set_allocated_dest_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }
  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.Memset32BitValueThunkProto.dest_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE Memset32BitValueThunkProto::release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE Memset32BitValueThunkProto::unsafe_arena_release_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.Memset32BitValueThunkProto.dest_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dest_buffer_;
  _impl_.dest_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL Memset32BitValueThunkProto::_internal_mutable_dest_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dest_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dest_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL Memset32BitValueThunkProto::mutable_dest_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dest_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.Memset32BitValueThunkProto.dest_buffer)
  return _msg;
}
inline void Memset32BitValueThunkProto::set_allocated_dest_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dest_buffer_);
  }

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

  _impl_.dest_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.Memset32BitValueThunkProto.dest_buffer)
}

// uint32 value = 2;
inline void Memset32BitValueThunkProto::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint32_t Memset32BitValueThunkProto::value() const {
  // @@protoc_insertion_point(field_get:xla.gpu.Memset32BitValueThunkProto.value)
  return _internal_value();
}
inline void Memset32BitValueThunkProto::set_value(::uint32_t value) {
  _internal_set_value(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.Memset32BitValueThunkProto.value)
}
inline ::uint32_t Memset32BitValueThunkProto::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline void Memset32BitValueThunkProto::_internal_set_value(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = value;
}

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

// InfeedThunkProto

// repeated .xla.ShapedSliceProto dest_slices = 1;
inline int InfeedThunkProto::_internal_dest_slices_size() const {
  return _internal_dest_slices().size();
}
inline int InfeedThunkProto::dest_slices_size() const {
  return _internal_dest_slices_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL InfeedThunkProto::mutable_dest_slices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.InfeedThunkProto.dest_slices)
  return _internal_mutable_dest_slices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL InfeedThunkProto::mutable_dest_slices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.InfeedThunkProto.dest_slices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dest_slices();
}
inline const ::xla::ShapedSliceProto& InfeedThunkProto::dest_slices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.InfeedThunkProto.dest_slices)
  return _internal_dest_slices().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL InfeedThunkProto::add_dest_slices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_dest_slices()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.InfeedThunkProto.dest_slices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& InfeedThunkProto::dest_slices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.InfeedThunkProto.dest_slices)
  return _internal_dest_slices();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
InfeedThunkProto::_internal_dest_slices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dest_slices_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
InfeedThunkProto::_internal_mutable_dest_slices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dest_slices_;
}

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

// OutfeedThunkProto

// repeated .xla.ShapedSliceProto source_slices = 1;
inline int OutfeedThunkProto::_internal_source_slices_size() const {
  return _internal_source_slices().size();
}
inline int OutfeedThunkProto::source_slices_size() const {
  return _internal_source_slices_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL OutfeedThunkProto::mutable_source_slices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.OutfeedThunkProto.source_slices)
  return _internal_mutable_source_slices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL OutfeedThunkProto::mutable_source_slices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.OutfeedThunkProto.source_slices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_source_slices();
}
inline const ::xla::ShapedSliceProto& OutfeedThunkProto::source_slices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.OutfeedThunkProto.source_slices)
  return _internal_source_slices().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL OutfeedThunkProto::add_source_slices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_source_slices()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.OutfeedThunkProto.source_slices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& OutfeedThunkProto::source_slices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.OutfeedThunkProto.source_slices)
  return _internal_source_slices();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
OutfeedThunkProto::_internal_source_slices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_slices_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
OutfeedThunkProto::_internal_mutable_source_slices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.source_slices_;
}

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

// SelectKThunkProto

// repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
inline int SelectKThunkProto::_internal_args_size() const {
  return _internal_args().size();
}
inline int SelectKThunkProto::args_size() const {
  return _internal_args_size();
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL SelectKThunkProto::mutable_args(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.SelectKThunkProto.args)
  return _internal_mutable_args()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL SelectKThunkProto::mutable_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.SelectKThunkProto.args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args();
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& SelectKThunkProto::args(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SelectKThunkProto.args)
  return _internal_args().Get(index);
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL SelectKThunkProto::add_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::buffer_assignment::BufferAllocationSliceProto* _add = _internal_mutable_args()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.SelectKThunkProto.args)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& SelectKThunkProto::args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.SelectKThunkProto.args)
  return _internal_args();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>&
SelectKThunkProto::_internal_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL
SelectKThunkProto::_internal_mutable_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_;
}

// uint32 batch_size = 3;
inline void SelectKThunkProto::clear_batch_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_size_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::uint32_t SelectKThunkProto::batch_size() const {
  // @@protoc_insertion_point(field_get:xla.gpu.SelectKThunkProto.batch_size)
  return _internal_batch_size();
}
inline void SelectKThunkProto::set_batch_size(::uint32_t value) {
  _internal_set_batch_size(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.SelectKThunkProto.batch_size)
}
inline ::uint32_t SelectKThunkProto::_internal_batch_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.batch_size_;
}
inline void SelectKThunkProto::_internal_set_batch_size(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_size_ = value;
}

// uint32 num_elements = 4;
inline void SelectKThunkProto::clear_num_elements() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_elements_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint32_t SelectKThunkProto::num_elements() const {
  // @@protoc_insertion_point(field_get:xla.gpu.SelectKThunkProto.num_elements)
  return _internal_num_elements();
}
inline void SelectKThunkProto::set_num_elements(::uint32_t value) {
  _internal_set_num_elements(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.SelectKThunkProto.num_elements)
}
inline ::uint32_t SelectKThunkProto::_internal_num_elements() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_elements_;
}
inline void SelectKThunkProto::_internal_set_num_elements(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_elements_ = value;
}

// uint32 k = 5;
inline void SelectKThunkProto::clear_k() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::uint32_t SelectKThunkProto::k() const {
  // @@protoc_insertion_point(field_get:xla.gpu.SelectKThunkProto.k)
  return _internal_k();
}
inline void SelectKThunkProto::set_k(::uint32_t value) {
  _internal_set_k(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.SelectKThunkProto.k)
}
inline ::uint32_t SelectKThunkProto::_internal_k() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.k_;
}
inline void SelectKThunkProto::_internal_set_k(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.k_ = value;
}

// .xla.PrimitiveType dtype = 6;
inline void SelectKThunkProto::clear_dtype() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dtype_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::PrimitiveType SelectKThunkProto::dtype() const {
  // @@protoc_insertion_point(field_get:xla.gpu.SelectKThunkProto.dtype)
  return _internal_dtype();
}
inline void SelectKThunkProto::set_dtype(::xla::PrimitiveType value) {
  _internal_set_dtype(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.SelectKThunkProto.dtype)
}
inline ::xla::PrimitiveType SelectKThunkProto::_internal_dtype() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::PrimitiveType>(_impl_.dtype_);
}
inline void SelectKThunkProto::_internal_set_dtype(::xla::PrimitiveType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dtype_ = value;
}

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

// CublasLtMatmulThunkProto

// .xla.GemmConfigProto gemm_config = 1;
inline bool CublasLtMatmulThunkProto::has_gemm_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.gemm_config_ != nullptr);
  return value;
}
inline const ::xla::GemmConfigProto& CublasLtMatmulThunkProto::_internal_gemm_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::GemmConfigProto* p = _impl_.gemm_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::GemmConfigProto&>(::xla::_GemmConfigProto_default_instance_);
}
inline const ::xla::GemmConfigProto& CublasLtMatmulThunkProto::gemm_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.gemm_config)
  return _internal_gemm_config();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_gemm_config(
    ::xla::GemmConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gemm_config_);
  }
  _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.gemm_config)
}
inline ::xla::GemmConfigProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_gemm_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::GemmConfigProto* temp = _impl_.gemm_config_;
  _impl_.gemm_config_ = nullptr;
  return temp;
}
inline ::xla::GemmConfigProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_gemm_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.gemm_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::GemmConfigProto>(GetArena());
    _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(p);
  }
  return _impl_.gemm_config_;
}
inline ::xla::GemmConfigProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_gemm_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::GemmConfigProto* _msg = _internal_mutable_gemm_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.gemm_config)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_gemm_config(::xla::GemmConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.gemm_config_);
  }

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

  _impl_.gemm_config_ = reinterpret_cast<::xla::GemmConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.gemm_config)
}

// .xla.BlasLtEpilogueProto epilogue = 2;
inline void CublasLtMatmulThunkProto::clear_epilogue() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epilogue_ = 0;
  _impl_._has_bits_[0] &= ~0x00010000u;
}
inline ::xla::BlasLtEpilogueProto CublasLtMatmulThunkProto::epilogue() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.epilogue)
  return _internal_epilogue();
}
inline void CublasLtMatmulThunkProto::set_epilogue(::xla::BlasLtEpilogueProto value) {
  _internal_set_epilogue(value);
  _impl_._has_bits_[0] |= 0x00010000u;
  // @@protoc_insertion_point(field_set:xla.gpu.CublasLtMatmulThunkProto.epilogue)
}
inline ::xla::BlasLtEpilogueProto CublasLtMatmulThunkProto::_internal_epilogue() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::BlasLtEpilogueProto>(_impl_.epilogue_);
}
inline void CublasLtMatmulThunkProto::_internal_set_epilogue(::xla::BlasLtEpilogueProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.epilogue_ = value;
}

// int64 algorithm_idx = 3;
inline void CublasLtMatmulThunkProto::clear_algorithm_idx() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_idx_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00004000u;
}
inline ::int64_t CublasLtMatmulThunkProto::algorithm_idx() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.algorithm_idx)
  return _internal_algorithm_idx();
}
inline void CublasLtMatmulThunkProto::set_algorithm_idx(::int64_t value) {
  _internal_set_algorithm_idx(value);
  _impl_._has_bits_[0] |= 0x00004000u;
  // @@protoc_insertion_point(field_set:xla.gpu.CublasLtMatmulThunkProto.algorithm_idx)
}
inline ::int64_t CublasLtMatmulThunkProto::_internal_algorithm_idx() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.algorithm_idx_;
}
inline void CublasLtMatmulThunkProto::_internal_set_algorithm_idx(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.algorithm_idx_ = value;
}

// string canonical_hlo = 4;
inline void CublasLtMatmulThunkProto::clear_canonical_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.canonical_hlo_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& CublasLtMatmulThunkProto::canonical_hlo() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.canonical_hlo)
  return _internal_canonical_hlo();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CublasLtMatmulThunkProto::set_canonical_hlo(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.canonical_hlo_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.CublasLtMatmulThunkProto.canonical_hlo)
}
inline ::std::string* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_canonical_hlo()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_canonical_hlo();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.canonical_hlo)
  return _s;
}
inline const ::std::string& CublasLtMatmulThunkProto::_internal_canonical_hlo() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.canonical_hlo_.Get();
}
inline void CublasLtMatmulThunkProto::_internal_set_canonical_hlo(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.canonical_hlo_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_canonical_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.canonical_hlo_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_canonical_hlo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.canonical_hlo)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.canonical_hlo_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.canonical_hlo_.Set("", GetArena());
  }
  return released;
}
inline void CublasLtMatmulThunkProto::set_allocated_canonical_hlo(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.canonical_hlo_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.canonical_hlo_.IsDefault()) {
    _impl_.canonical_hlo_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.canonical_hlo)
}

// .xla.buffer_assignment.BufferAllocationSliceProto a = 5;
inline bool CublasLtMatmulThunkProto::has_a() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.a_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_a() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.a_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::a() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.a)
  return _internal_a();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_a(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_);
  }
  _impl_.a_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.a)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_a() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.a_;
  _impl_.a_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_a() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.a)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.a_;
  _impl_.a_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_a() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.a_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.a_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.a_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_a()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_a();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.a)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_a(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_);
  }

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

  _impl_.a_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.a)
}

// .xla.buffer_assignment.BufferAllocationSliceProto b = 6;
inline bool CublasLtMatmulThunkProto::has_b() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.b_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_b() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.b_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::b() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.b)
  return _internal_b();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_b(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_);
  }
  _impl_.b_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.b)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.b_;
  _impl_.b_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.b)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.b_;
  _impl_.b_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.b_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.b_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.b_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_b()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_b();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.b)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_b(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_);
  }

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

  _impl_.b_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.b)
}

// .xla.buffer_assignment.BufferAllocationSliceProto c = 7;
inline bool CublasLtMatmulThunkProto::has_c() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.c_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_c() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.c_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::c() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.c)
  return _internal_c();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_c(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.c_);
  }
  _impl_.c_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.c)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_c() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.c_;
  _impl_.c_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_c() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.c)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.c_;
  _impl_.c_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_c() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.c_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.c_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.c_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_c()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_c();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.c)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_c(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.c_);
  }

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

  _impl_.c_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.c)
}

// .xla.buffer_assignment.BufferAllocationSliceProto d = 8;
inline bool CublasLtMatmulThunkProto::has_d() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.d_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_d() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.d_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::d() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.d)
  return _internal_d();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_d(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_);
  }
  _impl_.d_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_d() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.d_;
  _impl_.d_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_d() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.d)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.d_;
  _impl_.d_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_d() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.d_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.d_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.d_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_d()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_d();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.d)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_d(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_);
  }

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

  _impl_.d_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto bias = 9;
inline bool CublasLtMatmulThunkProto::has_bias() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.bias_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_bias() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.bias_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::bias() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.bias)
  return _internal_bias();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_bias(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bias_);
  }
  _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.bias)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.bias_;
  _impl_.bias_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.bias)

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.bias_;
  _impl_.bias_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bias_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.bias_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_bias()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_bias();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.bias)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bias_);
  }

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

  _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.bias)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto aux = 10;
inline bool CublasLtMatmulThunkProto::has_aux() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.aux_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_aux() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.aux_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::aux() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.aux)
  return _internal_aux();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_aux(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.aux_);
  }
  _impl_.aux_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.aux)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_aux() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.aux_;
  _impl_.aux_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_aux() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.aux)

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.aux_;
  _impl_.aux_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_aux() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.aux_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.aux_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.aux_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_aux()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_aux();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.aux)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_aux(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.aux_);
  }

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

  _impl_.aux_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.aux)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto a_scale = 11;
inline bool CublasLtMatmulThunkProto::has_a_scale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.a_scale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_a_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.a_scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::a_scale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.a_scale)
  return _internal_a_scale();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_a_scale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_scale_);
  }
  _impl_.a_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.a_scale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_a_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.a_scale_;
  _impl_.a_scale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_a_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.a_scale)

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.a_scale_;
  _impl_.a_scale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_a_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.a_scale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.a_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.a_scale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_a_scale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_a_scale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.a_scale)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_a_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.a_scale_);
  }

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

  _impl_.a_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.a_scale)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto b_scale = 12;
inline bool CublasLtMatmulThunkProto::has_b_scale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.b_scale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_b_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.b_scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::b_scale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.b_scale)
  return _internal_b_scale();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_b_scale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_scale_);
  }
  _impl_.b_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.b_scale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_b_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.b_scale_;
  _impl_.b_scale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_b_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.b_scale)

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.b_scale_;
  _impl_.b_scale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_b_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.b_scale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.b_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.b_scale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_b_scale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_b_scale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.b_scale)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_b_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.b_scale_);
  }

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

  _impl_.b_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.b_scale)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto c_scale = 13;
inline bool CublasLtMatmulThunkProto::has_c_scale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.c_scale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_c_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.c_scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::c_scale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.c_scale)
  return _internal_c_scale();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_c_scale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.c_scale_);
  }
  _impl_.c_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.c_scale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_c_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.c_scale_;
  _impl_.c_scale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_c_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.c_scale)

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.c_scale_;
  _impl_.c_scale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_c_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.c_scale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.c_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.c_scale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_c_scale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_c_scale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.c_scale)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_c_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.c_scale_);
  }

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

  _impl_.c_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.c_scale)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto d_scale = 14;
inline bool CublasLtMatmulThunkProto::has_d_scale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000800u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.d_scale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_d_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.d_scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::d_scale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.d_scale)
  return _internal_d_scale();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_d_scale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_scale_);
  }
  _impl_.d_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000800u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000800u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d_scale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_d_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.d_scale_;
  _impl_.d_scale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_d_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.d_scale)

  _impl_._has_bits_[0] &= ~0x00000800u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.d_scale_;
  _impl_.d_scale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_d_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.d_scale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.d_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.d_scale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_d_scale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000800u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_d_scale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.d_scale)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_d_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_scale_);
  }

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

  _impl_.d_scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d_scale)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto d_amax = 15;
inline bool CublasLtMatmulThunkProto::has_d_amax() const {
  bool value = (_impl_._has_bits_[0] & 0x00001000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.d_amax_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_d_amax() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.d_amax_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::d_amax() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.d_amax)
  return _internal_d_amax();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_d_amax(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_amax_);
  }
  _impl_.d_amax_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00001000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00001000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d_amax)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_d_amax() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.d_amax_;
  _impl_.d_amax_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_d_amax() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.d_amax)

  _impl_._has_bits_[0] &= ~0x00001000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.d_amax_;
  _impl_.d_amax_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_d_amax() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.d_amax_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.d_amax_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.d_amax_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_d_amax()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00001000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_d_amax();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.d_amax)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_d_amax(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.d_amax_);
  }

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

  _impl_.d_amax_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.d_amax)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto workspace = 16;
inline bool CublasLtMatmulThunkProto::has_workspace() const {
  bool value = (_impl_._has_bits_[0] & 0x00002000u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.workspace_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::_internal_workspace() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.workspace_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CublasLtMatmulThunkProto::workspace() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.workspace)
  return _internal_workspace();
}
inline void CublasLtMatmulThunkProto::unsafe_arena_set_allocated_workspace(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.workspace_);
  }
  _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00002000u;
  } else {
    _impl_._has_bits_[0] &= ~0x00002000u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CublasLtMatmulThunkProto.workspace)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::release_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.workspace_;
  _impl_.workspace_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CublasLtMatmulThunkProto::unsafe_arena_release_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CublasLtMatmulThunkProto.workspace)

  _impl_._has_bits_[0] &= ~0x00002000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.workspace_;
  _impl_.workspace_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::_internal_mutable_workspace() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.workspace_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.workspace_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CublasLtMatmulThunkProto::mutable_workspace()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00002000u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_workspace();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CublasLtMatmulThunkProto.workspace)
  return _msg;
}
inline void CublasLtMatmulThunkProto::set_allocated_workspace(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.workspace_);
  }

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

  _impl_.workspace_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CublasLtMatmulThunkProto.workspace)
}

// int64 autotune_workspace_size = 17;
inline void CublasLtMatmulThunkProto::clear_autotune_workspace_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.autotune_workspace_size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00008000u;
}
inline ::int64_t CublasLtMatmulThunkProto::autotune_workspace_size() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CublasLtMatmulThunkProto.autotune_workspace_size)
  return _internal_autotune_workspace_size();
}
inline void CublasLtMatmulThunkProto::set_autotune_workspace_size(::int64_t value) {
  _internal_set_autotune_workspace_size(value);
  _impl_._has_bits_[0] |= 0x00008000u;
  // @@protoc_insertion_point(field_set:xla.gpu.CublasLtMatmulThunkProto.autotune_workspace_size)
}
inline ::int64_t CublasLtMatmulThunkProto::_internal_autotune_workspace_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.autotune_workspace_size_;
}
inline void CublasLtMatmulThunkProto::_internal_set_autotune_workspace_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.autotune_workspace_size_ = value;
}

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

// CubSortThunkProto

// repeated .xla.ShapedSliceProto operands = 1;
inline int CubSortThunkProto::_internal_operands_size() const {
  return _internal_operands().size();
}
inline int CubSortThunkProto::operands_size() const {
  return _internal_operands_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CubSortThunkProto::mutable_operands(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CubSortThunkProto.operands)
  return _internal_mutable_operands()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL CubSortThunkProto::mutable_operands()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CubSortThunkProto.operands)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operands();
}
inline const ::xla::ShapedSliceProto& CubSortThunkProto::operands(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CubSortThunkProto.operands)
  return _internal_operands().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CubSortThunkProto::add_operands()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_operands()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CubSortThunkProto.operands)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& CubSortThunkProto::operands() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CubSortThunkProto.operands)
  return _internal_operands();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
CubSortThunkProto::_internal_operands() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operands_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
CubSortThunkProto::_internal_mutable_operands() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operands_;
}

// repeated .xla.ShapedSliceProto results = 2;
inline int CubSortThunkProto::_internal_results_size() const {
  return _internal_results().size();
}
inline int CubSortThunkProto::results_size() const {
  return _internal_results_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CubSortThunkProto::mutable_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CubSortThunkProto.results)
  return _internal_mutable_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL CubSortThunkProto::mutable_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CubSortThunkProto.results)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_results();
}
inline const ::xla::ShapedSliceProto& CubSortThunkProto::results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CubSortThunkProto.results)
  return _internal_results().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CubSortThunkProto::add_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_results()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CubSortThunkProto.results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& CubSortThunkProto::results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CubSortThunkProto.results)
  return _internal_results();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
CubSortThunkProto::_internal_results() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.results_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
CubSortThunkProto::_internal_mutable_results() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.results_;
}

// .xla.buffer_assignment.BufferAllocationSliceProto scratch = 3;
inline bool CubSortThunkProto::has_scratch() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.scratch_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CubSortThunkProto::_internal_scratch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.scratch_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CubSortThunkProto::scratch() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CubSortThunkProto.scratch)
  return _internal_scratch();
}
inline void CubSortThunkProto::unsafe_arena_set_allocated_scratch(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_);
  }
  _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CubSortThunkProto.scratch)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CubSortThunkProto::release_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.scratch_;
  _impl_.scratch_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE CubSortThunkProto::unsafe_arena_release_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CubSortThunkProto.scratch)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.scratch_;
  _impl_.scratch_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CubSortThunkProto::_internal_mutable_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.scratch_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.scratch_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CubSortThunkProto::mutable_scratch()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_scratch();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CubSortThunkProto.scratch)
  return _msg;
}
inline void CubSortThunkProto::set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_);
  }

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

  _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CubSortThunkProto.scratch)
}

// bool descending = 4;
inline void CubSortThunkProto::clear_descending() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.descending_ = false;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline bool CubSortThunkProto::descending() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CubSortThunkProto.descending)
  return _internal_descending();
}
inline void CubSortThunkProto::set_descending(bool value) {
  _internal_set_descending(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.CubSortThunkProto.descending)
}
inline bool CubSortThunkProto::_internal_descending() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.descending_;
}
inline void CubSortThunkProto::_internal_set_descending(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.descending_ = value;
}

// int64 batch_size = 5;
inline void CubSortThunkProto::clear_batch_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_size_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int64_t CubSortThunkProto::batch_size() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CubSortThunkProto.batch_size)
  return _internal_batch_size();
}
inline void CubSortThunkProto::set_batch_size(::int64_t value) {
  _internal_set_batch_size(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CubSortThunkProto.batch_size)
}
inline ::int64_t CubSortThunkProto::_internal_batch_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.batch_size_;
}
inline void CubSortThunkProto::_internal_set_batch_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.batch_size_ = value;
}

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

// NormThunkProto

// .xla.gpu.GpuNormDescriptorProto norm_descriptor = 1;
inline bool NormThunkProto::has_norm_descriptor() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.norm_descriptor_ != nullptr);
  return value;
}
inline const ::xla::gpu::GpuNormDescriptorProto& NormThunkProto::_internal_norm_descriptor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::GpuNormDescriptorProto* p = _impl_.norm_descriptor_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::GpuNormDescriptorProto&>(::xla::gpu::_GpuNormDescriptorProto_default_instance_);
}
inline const ::xla::gpu::GpuNormDescriptorProto& NormThunkProto::norm_descriptor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.norm_descriptor)
  return _internal_norm_descriptor();
}
inline void NormThunkProto::unsafe_arena_set_allocated_norm_descriptor(
    ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.norm_descriptor_);
  }
  _impl_.norm_descriptor_ = reinterpret_cast<::xla::gpu::GpuNormDescriptorProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.norm_descriptor)
}
inline ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE NormThunkProto::release_norm_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::GpuNormDescriptorProto* released = _impl_.norm_descriptor_;
  _impl_.norm_descriptor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_norm_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.norm_descriptor)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::GpuNormDescriptorProto* temp = _impl_.norm_descriptor_;
  _impl_.norm_descriptor_ = nullptr;
  return temp;
}
inline ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_norm_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.norm_descriptor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::GpuNormDescriptorProto>(GetArena());
    _impl_.norm_descriptor_ = reinterpret_cast<::xla::gpu::GpuNormDescriptorProto*>(p);
  }
  return _impl_.norm_descriptor_;
}
inline ::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NONNULL NormThunkProto::mutable_norm_descriptor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::GpuNormDescriptorProto* _msg = _internal_mutable_norm_descriptor();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.norm_descriptor)
  return _msg;
}
inline void NormThunkProto::set_allocated_norm_descriptor(::xla::gpu::GpuNormDescriptorProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.norm_descriptor_);
  }

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

  _impl_.norm_descriptor_ = reinterpret_cast<::xla::gpu::GpuNormDescriptorProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.norm_descriptor)
}

// .xla.buffer_assignment.BufferAllocationSliceProto x = 2;
inline bool NormThunkProto::has_x() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.x_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_x() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.x_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::x() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.x)
  return _internal_x();
}
inline void NormThunkProto::unsafe_arena_set_allocated_x(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.x_);
  }
  _impl_.x_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.x)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_x() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.x_;
  _impl_.x_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_x() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.x)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.x_;
  _impl_.x_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_x() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.x_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.x_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.x_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_x()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_x();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.x)
  return _msg;
}
inline void NormThunkProto::set_allocated_x(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.x_);
  }

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

  _impl_.x_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.x)
}

// .xla.buffer_assignment.BufferAllocationSliceProto scale = 3;
inline bool NormThunkProto::has_scale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.scale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::scale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.scale)
  return _internal_scale();
}
inline void NormThunkProto::unsafe_arena_set_allocated_scale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scale_);
  }
  _impl_.scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.scale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.scale_;
  _impl_.scale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.scale)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.scale_;
  _impl_.scale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.scale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.scale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_scale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_scale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.scale)
  return _msg;
}
inline void NormThunkProto::set_allocated_scale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scale_);
  }

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

  _impl_.scale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.scale)
}

// .xla.buffer_assignment.BufferAllocationSliceProto y_or_dx = 4;
inline bool NormThunkProto::has_y_or_dx() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.y_or_dx_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_y_or_dx() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.y_or_dx_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::y_or_dx() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.y_or_dx)
  return _internal_y_or_dx();
}
inline void NormThunkProto::unsafe_arena_set_allocated_y_or_dx(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.y_or_dx_);
  }
  _impl_.y_or_dx_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.y_or_dx)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_y_or_dx() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.y_or_dx_;
  _impl_.y_or_dx_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_y_or_dx() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.y_or_dx)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.y_or_dx_;
  _impl_.y_or_dx_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_y_or_dx() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.y_or_dx_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.y_or_dx_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.y_or_dx_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_y_or_dx()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_y_or_dx();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.y_or_dx)
  return _msg;
}
inline void NormThunkProto::set_allocated_y_or_dx(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.y_or_dx_);
  }

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

  _impl_.y_or_dx_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.y_or_dx)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto bias = 5;
inline bool NormThunkProto::has_bias() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.bias_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_bias() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.bias_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::bias() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.bias)
  return _internal_bias();
}
inline void NormThunkProto::unsafe_arena_set_allocated_bias(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bias_);
  }
  _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.bias)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.bias_;
  _impl_.bias_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.bias)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.bias_;
  _impl_.bias_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_bias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bias_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.bias_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_bias()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_bias();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.bias)
  return _msg;
}
inline void NormThunkProto::set_allocated_bias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bias_);
  }

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

  _impl_.bias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.bias)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto expectation = 6;
inline bool NormThunkProto::has_expectation() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.expectation_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_expectation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.expectation_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::expectation() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.expectation)
  return _internal_expectation();
}
inline void NormThunkProto::unsafe_arena_set_allocated_expectation(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expectation_);
  }
  _impl_.expectation_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.expectation)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_expectation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.expectation_;
  _impl_.expectation_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_expectation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.expectation)

  _impl_._has_bits_[0] &= ~0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.expectation_;
  _impl_.expectation_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_expectation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.expectation_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.expectation_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.expectation_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_expectation()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000020u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_expectation();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.expectation)
  return _msg;
}
inline void NormThunkProto::set_allocated_expectation(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expectation_);
  }

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

  _impl_.expectation_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.expectation)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto norm_factor = 7;
inline bool NormThunkProto::has_norm_factor() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.norm_factor_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_norm_factor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.norm_factor_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::norm_factor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.norm_factor)
  return _internal_norm_factor();
}
inline void NormThunkProto::unsafe_arena_set_allocated_norm_factor(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.norm_factor_);
  }
  _impl_.norm_factor_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.norm_factor)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_norm_factor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.norm_factor_;
  _impl_.norm_factor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_norm_factor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.norm_factor)

  _impl_._has_bits_[0] &= ~0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.norm_factor_;
  _impl_.norm_factor_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_norm_factor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.norm_factor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.norm_factor_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.norm_factor_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_norm_factor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000040u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_norm_factor();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.norm_factor)
  return _msg;
}
inline void NormThunkProto::set_allocated_norm_factor(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.norm_factor_);
  }

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

  _impl_.norm_factor_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.norm_factor)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto dy = 8;
inline bool NormThunkProto::has_dy() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dy_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_dy() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dy_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::dy() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.dy)
  return _internal_dy();
}
inline void NormThunkProto::unsafe_arena_set_allocated_dy(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dy_);
  }
  _impl_.dy_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.dy)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_dy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dy_;
  _impl_.dy_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_dy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.dy)

  _impl_._has_bits_[0] &= ~0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dy_;
  _impl_.dy_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_dy() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dy_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dy_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dy_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_dy()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000080u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dy();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.dy)
  return _msg;
}
inline void NormThunkProto::set_allocated_dy(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dy_);
  }

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

  _impl_.dy_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.dy)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto dscale = 9;
inline bool NormThunkProto::has_dscale() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dscale_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_dscale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dscale_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::dscale() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.dscale)
  return _internal_dscale();
}
inline void NormThunkProto::unsafe_arena_set_allocated_dscale(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dscale_);
  }
  _impl_.dscale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.dscale)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_dscale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dscale_;
  _impl_.dscale_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_dscale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.dscale)

  _impl_._has_bits_[0] &= ~0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dscale_;
  _impl_.dscale_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_dscale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dscale_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dscale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dscale_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_dscale()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000100u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dscale();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.dscale)
  return _msg;
}
inline void NormThunkProto::set_allocated_dscale(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dscale_);
  }

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

  _impl_.dscale_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.dscale)
}

// optional .xla.buffer_assignment.BufferAllocationSliceProto dbias = 10;
inline bool NormThunkProto::has_dbias() const {
  bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dbias_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_dbias() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.dbias_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::dbias() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.dbias)
  return _internal_dbias();
}
inline void NormThunkProto::unsafe_arena_set_allocated_dbias(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dbias_);
  }
  _impl_.dbias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000200u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000200u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.dbias)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_dbias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.dbias_;
  _impl_.dbias_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_dbias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.dbias)

  _impl_._has_bits_[0] &= ~0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.dbias_;
  _impl_.dbias_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_dbias() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dbias_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.dbias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.dbias_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_dbias()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000200u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_dbias();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.dbias)
  return _msg;
}
inline void NormThunkProto::set_allocated_dbias(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dbias_);
  }

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

  _impl_.dbias_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.dbias)
}

// .xla.buffer_assignment.BufferAllocationSliceProto scratch = 11;
inline bool NormThunkProto::has_scratch() const {
  bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.scratch_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::_internal_scratch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.scratch_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& NormThunkProto::scratch() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.NormThunkProto.scratch)
  return _internal_scratch();
}
inline void NormThunkProto::unsafe_arena_set_allocated_scratch(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_);
  }
  _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000400u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000400u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.NormThunkProto.scratch)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::release_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.scratch_;
  _impl_.scratch_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE NormThunkProto::unsafe_arena_release_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.NormThunkProto.scratch)

  _impl_._has_bits_[0] &= ~0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.scratch_;
  _impl_.scratch_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::_internal_mutable_scratch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.scratch_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.scratch_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL NormThunkProto::mutable_scratch()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000400u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_scratch();
  // @@protoc_insertion_point(field_mutable:xla.gpu.NormThunkProto.scratch)
  return _msg;
}
inline void NormThunkProto::set_allocated_scratch(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_);
  }

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

  _impl_.scratch_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.NormThunkProto.scratch)
}

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

// ConvolutionThunkProto

// .xla.gpu.GpuConvDescriptorProto conv_descriptor = 1;
inline bool ConvolutionThunkProto::has_conv_descriptor() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.conv_descriptor_ != nullptr);
  return value;
}
inline const ::xla::gpu::GpuConvDescriptorProto& ConvolutionThunkProto::_internal_conv_descriptor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::GpuConvDescriptorProto* p = _impl_.conv_descriptor_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::GpuConvDescriptorProto&>(::xla::gpu::_GpuConvDescriptorProto_default_instance_);
}
inline const ::xla::gpu::GpuConvDescriptorProto& ConvolutionThunkProto::conv_descriptor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionThunkProto.conv_descriptor)
  return _internal_conv_descriptor();
}
inline void ConvolutionThunkProto::unsafe_arena_set_allocated_conv_descriptor(
    ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.conv_descriptor_);
  }
  _impl_.conv_descriptor_ = reinterpret_cast<::xla::gpu::GpuConvDescriptorProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConvolutionThunkProto.conv_descriptor)
}
inline ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE ConvolutionThunkProto::release_conv_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::GpuConvDescriptorProto* released = _impl_.conv_descriptor_;
  _impl_.conv_descriptor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE ConvolutionThunkProto::unsafe_arena_release_conv_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ConvolutionThunkProto.conv_descriptor)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::GpuConvDescriptorProto* temp = _impl_.conv_descriptor_;
  _impl_.conv_descriptor_ = nullptr;
  return temp;
}
inline ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NONNULL ConvolutionThunkProto::_internal_mutable_conv_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.conv_descriptor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::GpuConvDescriptorProto>(GetArena());
    _impl_.conv_descriptor_ = reinterpret_cast<::xla::gpu::GpuConvDescriptorProto*>(p);
  }
  return _impl_.conv_descriptor_;
}
inline ::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_conv_descriptor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::GpuConvDescriptorProto* _msg = _internal_mutable_conv_descriptor();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionThunkProto.conv_descriptor)
  return _msg;
}
inline void ConvolutionThunkProto::set_allocated_conv_descriptor(::xla::gpu::GpuConvDescriptorProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.conv_descriptor_);
  }

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

  _impl_.conv_descriptor_ = reinterpret_cast<::xla::gpu::GpuConvDescriptorProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConvolutionThunkProto.conv_descriptor)
}

// repeated .xla.ShapedSliceProto operand_buffers = 2;
inline int ConvolutionThunkProto::_internal_operand_buffers_size() const {
  return _internal_operand_buffers().size();
}
inline int ConvolutionThunkProto::operand_buffers_size() const {
  return _internal_operand_buffers_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_operand_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionThunkProto.operand_buffers)
  return _internal_mutable_operand_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_operand_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.ConvolutionThunkProto.operand_buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_buffers();
}
inline const ::xla::ShapedSliceProto& ConvolutionThunkProto::operand_buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionThunkProto.operand_buffers)
  return _internal_operand_buffers().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::add_operand_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_operand_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.ConvolutionThunkProto.operand_buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& ConvolutionThunkProto::operand_buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.ConvolutionThunkProto.operand_buffers)
  return _internal_operand_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
ConvolutionThunkProto::_internal_operand_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
ConvolutionThunkProto::_internal_mutable_operand_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_buffers_;
}

// repeated .xla.ShapedSliceProto result_buffers = 3;
inline int ConvolutionThunkProto::_internal_result_buffers_size() const {
  return _internal_result_buffers().size();
}
inline int ConvolutionThunkProto::result_buffers_size() const {
  return _internal_result_buffers_size();
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_result_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionThunkProto.result_buffers)
  return _internal_mutable_result_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_result_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.ConvolutionThunkProto.result_buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_result_buffers();
}
inline const ::xla::ShapedSliceProto& ConvolutionThunkProto::result_buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionThunkProto.result_buffers)
  return _internal_result_buffers().Get(index);
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::add_result_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ShapedSliceProto* _add = _internal_mutable_result_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.ConvolutionThunkProto.result_buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>& ConvolutionThunkProto::result_buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.ConvolutionThunkProto.result_buffers)
  return _internal_result_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>&
ConvolutionThunkProto::_internal_result_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.result_buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ShapedSliceProto>* PROTOBUF_NONNULL
ConvolutionThunkProto::_internal_mutable_result_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.result_buffers_;
}

// .xla.buffer_assignment.BufferAllocationSliceProto scratch_buffer = 4;
inline bool ConvolutionThunkProto::has_scratch_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.scratch_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& ConvolutionThunkProto::_internal_scratch_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.scratch_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& ConvolutionThunkProto::scratch_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionThunkProto.scratch_buffer)
  return _internal_scratch_buffer();
}
inline void ConvolutionThunkProto::unsafe_arena_set_allocated_scratch_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_buffer_);
  }
  _impl_.scratch_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConvolutionThunkProto.scratch_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE ConvolutionThunkProto::release_scratch_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.scratch_buffer_;
  _impl_.scratch_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE ConvolutionThunkProto::unsafe_arena_release_scratch_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ConvolutionThunkProto.scratch_buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.scratch_buffer_;
  _impl_.scratch_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::_internal_mutable_scratch_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.scratch_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.scratch_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.scratch_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL ConvolutionThunkProto::mutable_scratch_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_scratch_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionThunkProto.scratch_buffer)
  return _msg;
}
inline void ConvolutionThunkProto::set_allocated_scratch_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.scratch_buffer_);
  }

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

  _impl_.scratch_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConvolutionThunkProto.scratch_buffer)
}

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

// ConvolutionReorderThunkProto

// .xla.ShapedSliceProto filter_input = 1;
inline bool ConvolutionReorderThunkProto::has_filter_input() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.filter_input_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& ConvolutionReorderThunkProto::_internal_filter_input() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.filter_input_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& ConvolutionReorderThunkProto::filter_input() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionReorderThunkProto.filter_input)
  return _internal_filter_input();
}
inline void ConvolutionReorderThunkProto::unsafe_arena_set_allocated_filter_input(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.filter_input_);
  }
  _impl_.filter_input_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConvolutionReorderThunkProto.filter_input)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE ConvolutionReorderThunkProto::release_filter_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* released = _impl_.filter_input_;
  _impl_.filter_input_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE ConvolutionReorderThunkProto::unsafe_arena_release_filter_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ConvolutionReorderThunkProto.filter_input)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* temp = _impl_.filter_input_;
  _impl_.filter_input_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionReorderThunkProto::_internal_mutable_filter_input() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.filter_input_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.filter_input_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.filter_input_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionReorderThunkProto::mutable_filter_input()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_filter_input();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionReorderThunkProto.filter_input)
  return _msg;
}
inline void ConvolutionReorderThunkProto::set_allocated_filter_input(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.filter_input_);
  }

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

  _impl_.filter_input_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConvolutionReorderThunkProto.filter_input)
}

// .xla.ShapedSliceProto filter_output = 2;
inline bool ConvolutionReorderThunkProto::has_filter_output() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.filter_output_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& ConvolutionReorderThunkProto::_internal_filter_output() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.filter_output_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& ConvolutionReorderThunkProto::filter_output() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionReorderThunkProto.filter_output)
  return _internal_filter_output();
}
inline void ConvolutionReorderThunkProto::unsafe_arena_set_allocated_filter_output(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.filter_output_);
  }
  _impl_.filter_output_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConvolutionReorderThunkProto.filter_output)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE ConvolutionReorderThunkProto::release_filter_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::ShapedSliceProto* temp = _impl_.filter_output_;
  _impl_.filter_output_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionReorderThunkProto::_internal_mutable_filter_output() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.filter_output_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.filter_output_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.filter_output_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL ConvolutionReorderThunkProto::mutable_filter_output()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_filter_output();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionReorderThunkProto.filter_output)
  return _msg;
}
inline void ConvolutionReorderThunkProto::set_allocated_filter_output(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.filter_output_);
  }

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

  _impl_.filter_output_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConvolutionReorderThunkProto.filter_output)
}

// optional .xla.gpu.ConvolutionReorderBiasBuffers biases = 3;
inline bool ConvolutionReorderThunkProto::has_biases() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.biases_ != nullptr);
  return value;
}
inline const ::xla::gpu::ConvolutionReorderBiasBuffers& ConvolutionReorderThunkProto::_internal_biases() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::ConvolutionReorderBiasBuffers* p = _impl_.biases_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::ConvolutionReorderBiasBuffers&>(::xla::gpu::_ConvolutionReorderBiasBuffers_default_instance_);
}
inline const ::xla::gpu::ConvolutionReorderBiasBuffers& ConvolutionReorderThunkProto::biases() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ConvolutionReorderThunkProto.biases)
  return _internal_biases();
}
inline void ConvolutionReorderThunkProto::unsafe_arena_set_allocated_biases(
    ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.biases_);
  }
  _impl_.biases_ = reinterpret_cast<::xla::gpu::ConvolutionReorderBiasBuffers*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ConvolutionReorderThunkProto.biases)
}
inline ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE ConvolutionReorderThunkProto::release_biases() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::ConvolutionReorderBiasBuffers* temp = _impl_.biases_;
  _impl_.biases_ = nullptr;
  return temp;
}
inline ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NONNULL ConvolutionReorderThunkProto::_internal_mutable_biases() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.biases_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ConvolutionReorderBiasBuffers>(GetArena());
    _impl_.biases_ = reinterpret_cast<::xla::gpu::ConvolutionReorderBiasBuffers*>(p);
  }
  return _impl_.biases_;
}
inline ::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NONNULL ConvolutionReorderThunkProto::mutable_biases()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::gpu::ConvolutionReorderBiasBuffers* _msg = _internal_mutable_biases();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ConvolutionReorderThunkProto.biases)
  return _msg;
}
inline void ConvolutionReorderThunkProto::set_allocated_biases(::xla::gpu::ConvolutionReorderBiasBuffers* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.biases_);
  }

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

  _impl_.biases_ = reinterpret_cast<::xla::gpu::ConvolutionReorderBiasBuffers*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ConvolutionReorderThunkProto.biases)
}

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

// FftThunkProto

// .xla.FftType fft_type = 1;
inline void FftThunkProto::clear_fft_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::xla::FftType FftThunkProto::fft_type() const {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.fft_type)
  return _internal_fft_type();
}
inline void FftThunkProto::set_fft_type(::xla::FftType value) {
  _internal_set_fft_type(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.FftThunkProto.fft_type)
}
inline ::xla::FftType FftThunkProto::_internal_fft_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::FftType>(_impl_.fft_type_);
}
inline void FftThunkProto::_internal_set_fft_type(::xla::FftType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_type_ = value;
}

// repeated int64 fft_length = 2;
inline int FftThunkProto::_internal_fft_length_size() const {
  return _internal_fft_length().size();
}
inline int FftThunkProto::fft_length_size() const {
  return _internal_fft_length_size();
}
inline void FftThunkProto::clear_fft_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fft_length_.Clear();
}
inline ::int64_t FftThunkProto::fft_length(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.fft_length)
  return _internal_fft_length().Get(index);
}
inline void FftThunkProto::set_fft_length(int index, ::int64_t value) {
  _internal_mutable_fft_length()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.gpu.FftThunkProto.fft_length)
}
inline void FftThunkProto::add_fft_length(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_fft_length()->Add(value);
  // @@protoc_insertion_point(field_add:xla.gpu.FftThunkProto.fft_length)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& FftThunkProto::fft_length() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.FftThunkProto.fft_length)
  return _internal_fft_length();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL FftThunkProto::mutable_fft_length()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.FftThunkProto.fft_length)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_fft_length();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
FftThunkProto::_internal_fft_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fft_length_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
FftThunkProto::_internal_mutable_fft_length() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.fft_length_;
}

// .xla.buffer_assignment.BufferAllocationSliceProto input_buffer = 3;
inline bool FftThunkProto::has_input_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.input_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& FftThunkProto::_internal_input_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.input_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& FftThunkProto::input_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.input_buffer)
  return _internal_input_buffer();
}
inline void FftThunkProto::unsafe_arena_set_allocated_input_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_buffer_);
  }
  _impl_.input_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FftThunkProto.input_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE FftThunkProto::release_input_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.input_buffer_;
  _impl_.input_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE FftThunkProto::unsafe_arena_release_input_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.FftThunkProto.input_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.input_buffer_;
  _impl_.input_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL FftThunkProto::_internal_mutable_input_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.input_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.input_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL FftThunkProto::mutable_input_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_input_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FftThunkProto.input_buffer)
  return _msg;
}
inline void FftThunkProto::set_allocated_input_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_buffer_);
  }

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

  _impl_.input_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FftThunkProto.input_buffer)
}

// .xla.buffer_assignment.BufferAllocationSliceProto output_buffer = 4;
inline bool FftThunkProto::has_output_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_buffer_ != nullptr);
  return value;
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& FftThunkProto::_internal_output_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::buffer_assignment::BufferAllocationSliceProto* p = _impl_.output_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::buffer_assignment::BufferAllocationSliceProto&>(::xla::buffer_assignment::_BufferAllocationSliceProto_default_instance_);
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& FftThunkProto::output_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.output_buffer)
  return _internal_output_buffer();
}
inline void FftThunkProto::unsafe_arena_set_allocated_output_buffer(
    ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_buffer_);
  }
  _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FftThunkProto.output_buffer)
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE FftThunkProto::release_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* released = _impl_.output_buffer_;
  _impl_.output_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE FftThunkProto::unsafe_arena_release_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.FftThunkProto.output_buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* temp = _impl_.output_buffer_;
  _impl_.output_buffer_ = nullptr;
  return temp;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL FftThunkProto::_internal_mutable_output_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.output_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::buffer_assignment::BufferAllocationSliceProto>(GetArena());
    _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(p);
  }
  return _impl_.output_buffer_;
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL FftThunkProto::mutable_output_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::buffer_assignment::BufferAllocationSliceProto* _msg = _internal_mutable_output_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FftThunkProto.output_buffer)
  return _msg;
}
inline void FftThunkProto::set_allocated_output_buffer(::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_buffer_);
  }

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

  _impl_.output_buffer_ = reinterpret_cast<::xla::buffer_assignment::BufferAllocationSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FftThunkProto.output_buffer)
}

// .xla.ShapeProto input_shape = 5;
inline bool FftThunkProto::has_input_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.input_shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& FftThunkProto::_internal_input_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.input_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& FftThunkProto::input_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.input_shape)
  return _internal_input_shape();
}
inline void FftThunkProto::unsafe_arena_set_allocated_input_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_shape_);
  }
  _impl_.input_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FftThunkProto.input_shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE FftThunkProto::release_input_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::ShapeProto* temp = _impl_.input_shape_;
  _impl_.input_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL FftThunkProto::_internal_mutable_input_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.input_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.input_shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.input_shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL FftThunkProto::mutable_input_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::ShapeProto* _msg = _internal_mutable_input_shape();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FftThunkProto.input_shape)
  return _msg;
}
inline void FftThunkProto::set_allocated_input_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_shape_);
  }

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

  _impl_.input_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FftThunkProto.input_shape)
}

// .xla.ShapeProto output_shape = 6;
inline bool FftThunkProto::has_output_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_shape_ != nullptr);
  return value;
}
inline const ::xla::ShapeProto& FftThunkProto::_internal_output_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapeProto* p = _impl_.output_shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapeProto&>(::xla::_ShapeProto_default_instance_);
}
inline const ::xla::ShapeProto& FftThunkProto::output_shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.FftThunkProto.output_shape)
  return _internal_output_shape();
}
inline void FftThunkProto::unsafe_arena_set_allocated_output_shape(
    ::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_shape_);
  }
  _impl_.output_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.FftThunkProto.output_shape)
}
inline ::xla::ShapeProto* PROTOBUF_NULLABLE FftThunkProto::release_output_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

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

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::ShapeProto* temp = _impl_.output_shape_;
  _impl_.output_shape_ = nullptr;
  return temp;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL FftThunkProto::_internal_mutable_output_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.output_shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapeProto>(GetArena());
    _impl_.output_shape_ = reinterpret_cast<::xla::ShapeProto*>(p);
  }
  return _impl_.output_shape_;
}
inline ::xla::ShapeProto* PROTOBUF_NONNULL FftThunkProto::mutable_output_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::ShapeProto* _msg = _internal_mutable_output_shape();
  // @@protoc_insertion_point(field_mutable:xla.gpu.FftThunkProto.output_shape)
  return _msg;
}
inline void FftThunkProto::set_allocated_output_shape(::xla::ShapeProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_shape_);
  }

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

  _impl_.output_shape_ = reinterpret_cast<::xla::ShapeProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.FftThunkProto.output_shape)
}

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

// CustomCallThunkProto

// string target_name = 1;
inline void CustomCallThunkProto::clear_target_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& CustomCallThunkProto::target_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.target_name)
  return _internal_target_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CustomCallThunkProto::set_target_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.target_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.CustomCallThunkProto.target_name)
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::mutable_target_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_target_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.target_name)
  return _s;
}
inline const ::std::string& CustomCallThunkProto::_internal_target_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_name_.Get();
}
inline void CustomCallThunkProto::_internal_set_target_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.target_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::_internal_mutable_target_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.target_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CustomCallThunkProto::release_target_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomCallThunkProto.target_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.target_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.target_name_.Set("", GetArena());
  }
  return released;
}
inline void CustomCallThunkProto::set_allocated_target_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.target_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.target_name_.IsDefault()) {
    _impl_.target_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomCallThunkProto.target_name)
}

// repeated .xla.NullableShapedSliceProto operands = 2;
inline int CustomCallThunkProto::_internal_operands_size() const {
  return _internal_operands().size();
}
inline int CustomCallThunkProto::operands_size() const {
  return _internal_operands_size();
}
inline ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL CustomCallThunkProto::mutable_operands(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.operands)
  return _internal_mutable_operands()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL CustomCallThunkProto::mutable_operands()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CustomCallThunkProto.operands)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operands();
}
inline const ::xla::NullableShapedSliceProto& CustomCallThunkProto::operands(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.operands)
  return _internal_operands().Get(index);
}
inline ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL CustomCallThunkProto::add_operands()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::NullableShapedSliceProto* _add = _internal_mutable_operands()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CustomCallThunkProto.operands)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& CustomCallThunkProto::operands() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CustomCallThunkProto.operands)
  return _internal_operands();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>&
CustomCallThunkProto::_internal_operands() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operands_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL
CustomCallThunkProto::_internal_mutable_operands() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operands_;
}

// repeated .xla.NullableShapedSliceProto results = 3;
inline int CustomCallThunkProto::_internal_results_size() const {
  return _internal_results().size();
}
inline int CustomCallThunkProto::results_size() const {
  return _internal_results_size();
}
inline ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL CustomCallThunkProto::mutable_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.results)
  return _internal_mutable_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL CustomCallThunkProto::mutable_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CustomCallThunkProto.results)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_results();
}
inline const ::xla::NullableShapedSliceProto& CustomCallThunkProto::results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.results)
  return _internal_results().Get(index);
}
inline ::xla::NullableShapedSliceProto* PROTOBUF_NONNULL CustomCallThunkProto::add_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::NullableShapedSliceProto* _add = _internal_mutable_results()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CustomCallThunkProto.results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>& CustomCallThunkProto::results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CustomCallThunkProto.results)
  return _internal_results();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>&
CustomCallThunkProto::_internal_results() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.results_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::NullableShapedSliceProto>* PROTOBUF_NONNULL
CustomCallThunkProto::_internal_mutable_results() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.results_;
}

// bytes opaque = 4;
inline void CustomCallThunkProto::clear_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::std::string& CustomCallThunkProto::opaque() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.opaque)
  return _internal_opaque();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CustomCallThunkProto::set_opaque(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.opaque_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.CustomCallThunkProto.opaque)
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::mutable_opaque()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_opaque();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.opaque)
  return _s;
}
inline const ::std::string& CustomCallThunkProto::_internal_opaque() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.opaque_.Get();
}
inline void CustomCallThunkProto::_internal_set_opaque(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.opaque_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::_internal_mutable_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.opaque_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CustomCallThunkProto::release_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomCallThunkProto.opaque)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.opaque_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.opaque_.Set("", GetArena());
  }
  return released;
}
inline void CustomCallThunkProto::set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.opaque_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.opaque_.IsDefault()) {
    _impl_.opaque_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomCallThunkProto.opaque)
}

// .xla.CustomCallApiVersion api_version = 5;
inline void CustomCallThunkProto::clear_api_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.api_version_ = 0;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::xla::CustomCallApiVersion CustomCallThunkProto::api_version() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.api_version)
  return _internal_api_version();
}
inline void CustomCallThunkProto::set_api_version(::xla::CustomCallApiVersion value) {
  _internal_set_api_version(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.gpu.CustomCallThunkProto.api_version)
}
inline ::xla::CustomCallApiVersion CustomCallThunkProto::_internal_api_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CustomCallApiVersion>(_impl_.api_version_);
}
inline void CustomCallThunkProto::_internal_set_api_version(::xla::CustomCallApiVersion value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.api_version_ = value;
}

// .xla.ffi.AttributesMapProto attributes = 6;
inline bool CustomCallThunkProto::has_attributes() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.attributes_ != nullptr);
  return value;
}
inline const ::xla::ffi::AttributesMapProto& CustomCallThunkProto::_internal_attributes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ffi::AttributesMapProto* p = _impl_.attributes_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ffi::AttributesMapProto&>(::xla::ffi::_AttributesMapProto_default_instance_);
}
inline const ::xla::ffi::AttributesMapProto& CustomCallThunkProto::attributes() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.attributes)
  return _internal_attributes();
}
inline void CustomCallThunkProto::unsafe_arena_set_allocated_attributes(
    ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.attributes_);
  }
  _impl_.attributes_ = reinterpret_cast<::xla::ffi::AttributesMapProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CustomCallThunkProto.attributes)
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE CustomCallThunkProto::release_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::ffi::AttributesMapProto* released = _impl_.attributes_;
  _impl_.attributes_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE CustomCallThunkProto::unsafe_arena_release_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomCallThunkProto.attributes)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::xla::ffi::AttributesMapProto* temp = _impl_.attributes_;
  _impl_.attributes_ = nullptr;
  return temp;
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL CustomCallThunkProto::_internal_mutable_attributes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.attributes_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ffi::AttributesMapProto>(GetArena());
    _impl_.attributes_ = reinterpret_cast<::xla::ffi::AttributesMapProto*>(p);
  }
  return _impl_.attributes_;
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL CustomCallThunkProto::mutable_attributes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::xla::ffi::AttributesMapProto* _msg = _internal_mutable_attributes();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.attributes)
  return _msg;
}
inline void CustomCallThunkProto::set_allocated_attributes(::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.attributes_);
  }

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

  _impl_.attributes_ = reinterpret_cast<::xla::ffi::AttributesMapProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomCallThunkProto.attributes)
}

// optional string called_computation = 7;
inline bool CustomCallThunkProto::has_called_computation() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void CustomCallThunkProto::clear_called_computation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.called_computation_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::std::string& CustomCallThunkProto::called_computation() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.called_computation)
  return _internal_called_computation();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CustomCallThunkProto::set_called_computation(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.called_computation_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.CustomCallThunkProto.called_computation)
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::mutable_called_computation()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_called_computation();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.called_computation)
  return _s;
}
inline const ::std::string& CustomCallThunkProto::_internal_called_computation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.called_computation_.Get();
}
inline void CustomCallThunkProto::_internal_set_called_computation(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.called_computation_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CustomCallThunkProto::_internal_mutable_called_computation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.called_computation_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CustomCallThunkProto::release_called_computation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomCallThunkProto.called_computation)
  if ((_impl_._has_bits_[0] & 0x00000004u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* released = _impl_.called_computation_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.called_computation_.Set("", GetArena());
  }
  return released;
}
inline void CustomCallThunkProto::set_allocated_called_computation(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  _impl_.called_computation_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.called_computation_.IsDefault()) {
    _impl_.called_computation_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomCallThunkProto.called_computation)
}

// optional .xla.ffi.ExecutionStateProto execution_state = 8;
inline bool CustomCallThunkProto::has_execution_state() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.execution_state_ != nullptr);
  return value;
}
inline const ::xla::ffi::ExecutionStateProto& CustomCallThunkProto::_internal_execution_state() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ffi::ExecutionStateProto* p = _impl_.execution_state_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ffi::ExecutionStateProto&>(::xla::ffi::_ExecutionStateProto_default_instance_);
}
inline const ::xla::ffi::ExecutionStateProto& CustomCallThunkProto::execution_state() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomCallThunkProto.execution_state)
  return _internal_execution_state();
}
inline void CustomCallThunkProto::unsafe_arena_set_allocated_execution_state(
    ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.execution_state_);
  }
  _impl_.execution_state_ = reinterpret_cast<::xla::ffi::ExecutionStateProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CustomCallThunkProto.execution_state)
}
inline ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE CustomCallThunkProto::release_execution_state() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::ffi::ExecutionStateProto* released = _impl_.execution_state_;
  _impl_.execution_state_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE CustomCallThunkProto::unsafe_arena_release_execution_state() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomCallThunkProto.execution_state)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::xla::ffi::ExecutionStateProto* temp = _impl_.execution_state_;
  _impl_.execution_state_ = nullptr;
  return temp;
}
inline ::xla::ffi::ExecutionStateProto* PROTOBUF_NONNULL CustomCallThunkProto::_internal_mutable_execution_state() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.execution_state_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ExecutionStateProto>(GetArena());
    _impl_.execution_state_ = reinterpret_cast<::xla::ffi::ExecutionStateProto*>(p);
  }
  return _impl_.execution_state_;
}
inline ::xla::ffi::ExecutionStateProto* PROTOBUF_NONNULL CustomCallThunkProto::mutable_execution_state()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::xla::ffi::ExecutionStateProto* _msg = _internal_mutable_execution_state();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomCallThunkProto.execution_state)
  return _msg;
}
inline void CustomCallThunkProto::set_allocated_execution_state(::xla::ffi::ExecutionStateProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.execution_state_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _impl_.execution_state_ = reinterpret_cast<::xla::ffi::ExecutionStateProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomCallThunkProto.execution_state)
}

// -------------------------------------------------------------------

// CustomKernelThunkProto

// repeated .xla.buffer_assignment.BufferAllocationSliceProto args = 1;
inline int CustomKernelThunkProto::_internal_args_size() const {
  return _internal_args().size();
}
inline int CustomKernelThunkProto::args_size() const {
  return _internal_args_size();
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CustomKernelThunkProto::mutable_args(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomKernelThunkProto.args)
  return _internal_mutable_args()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL CustomKernelThunkProto::mutable_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CustomKernelThunkProto.args)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_args();
}
inline const ::xla::buffer_assignment::BufferAllocationSliceProto& CustomKernelThunkProto::args(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomKernelThunkProto.args)
  return _internal_args().Get(index);
}
inline ::xla::buffer_assignment::BufferAllocationSliceProto* PROTOBUF_NONNULL CustomKernelThunkProto::add_args()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::buffer_assignment::BufferAllocationSliceProto* _add = _internal_mutable_args()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CustomKernelThunkProto.args)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>& CustomKernelThunkProto::args() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CustomKernelThunkProto.args)
  return _internal_args();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>&
CustomKernelThunkProto::_internal_args() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.args_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::buffer_assignment::BufferAllocationSliceProto>* PROTOBUF_NONNULL
CustomKernelThunkProto::_internal_mutable_args() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.args_;
}

// repeated bool written = 2;
inline int CustomKernelThunkProto::_internal_written_size() const {
  return _internal_written().size();
}
inline int CustomKernelThunkProto::written_size() const {
  return _internal_written_size();
}
inline void CustomKernelThunkProto::clear_written() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.written_.Clear();
}
inline bool CustomKernelThunkProto::written(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomKernelThunkProto.written)
  return _internal_written().Get(index);
}
inline void CustomKernelThunkProto::set_written(int index, bool value) {
  _internal_mutable_written()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.gpu.CustomKernelThunkProto.written)
}
inline void CustomKernelThunkProto::add_written(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_written()->Add(value);
  // @@protoc_insertion_point(field_add:xla.gpu.CustomKernelThunkProto.written)
}
inline const ::google::protobuf::RepeatedField<bool>& CustomKernelThunkProto::written() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CustomKernelThunkProto.written)
  return _internal_written();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL CustomKernelThunkProto::mutable_written()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CustomKernelThunkProto.written)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_written();
}
inline const ::google::protobuf::RepeatedField<bool>&
CustomKernelThunkProto::_internal_written() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.written_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
CustomKernelThunkProto::_internal_mutable_written() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.written_;
}

// .xla.gpu.CustomKernelProto custom_kernel = 3;
inline bool CustomKernelThunkProto::has_custom_kernel() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.custom_kernel_ != nullptr);
  return value;
}
inline const ::xla::gpu::CustomKernelProto& CustomKernelThunkProto::_internal_custom_kernel() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CustomKernelProto* p = _impl_.custom_kernel_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CustomKernelProto&>(::xla::gpu::_CustomKernelProto_default_instance_);
}
inline const ::xla::gpu::CustomKernelProto& CustomKernelThunkProto::custom_kernel() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CustomKernelThunkProto.custom_kernel)
  return _internal_custom_kernel();
}
inline void CustomKernelThunkProto::unsafe_arena_set_allocated_custom_kernel(
    ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.custom_kernel_);
  }
  _impl_.custom_kernel_ = reinterpret_cast<::xla::gpu::CustomKernelProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CustomKernelThunkProto.custom_kernel)
}
inline ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE CustomKernelThunkProto::release_custom_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CustomKernelProto* released = _impl_.custom_kernel_;
  _impl_.custom_kernel_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE CustomKernelThunkProto::unsafe_arena_release_custom_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CustomKernelThunkProto.custom_kernel)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CustomKernelProto* temp = _impl_.custom_kernel_;
  _impl_.custom_kernel_ = nullptr;
  return temp;
}
inline ::xla::gpu::CustomKernelProto* PROTOBUF_NONNULL CustomKernelThunkProto::_internal_mutable_custom_kernel() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.custom_kernel_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CustomKernelProto>(GetArena());
    _impl_.custom_kernel_ = reinterpret_cast<::xla::gpu::CustomKernelProto*>(p);
  }
  return _impl_.custom_kernel_;
}
inline ::xla::gpu::CustomKernelProto* PROTOBUF_NONNULL CustomKernelThunkProto::mutable_custom_kernel()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CustomKernelProto* _msg = _internal_mutable_custom_kernel();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CustomKernelThunkProto.custom_kernel)
  return _msg;
}
inline void CustomKernelThunkProto::set_allocated_custom_kernel(::xla::gpu::CustomKernelProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.custom_kernel_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.custom_kernel_ = reinterpret_cast<::xla::gpu::CustomKernelProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CustomKernelThunkProto.custom_kernel)
}

// -------------------------------------------------------------------

// CollectiveBufferProto

// int64 element_count = 1;
inline void CollectiveBufferProto::clear_element_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_count_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t CollectiveBufferProto::element_count() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBufferProto.element_count)
  return _internal_element_count();
}
inline void CollectiveBufferProto::set_element_count(::int64_t value) {
  _internal_set_element_count(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveBufferProto.element_count)
}
inline ::int64_t CollectiveBufferProto::_internal_element_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.element_count_;
}
inline void CollectiveBufferProto::_internal_set_element_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.element_count_ = value;
}

// .xla.ShapedSliceProto source_buffer = 2;
inline bool CollectiveBufferProto::has_source_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.source_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& CollectiveBufferProto::_internal_source_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.source_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& CollectiveBufferProto::source_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBufferProto.source_buffer)
  return _internal_source_buffer();
}
inline void CollectiveBufferProto::unsafe_arena_set_allocated_source_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.source_buffer_);
  }
  _impl_.source_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CollectiveBufferProto.source_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE CollectiveBufferProto::release_source_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* released = _impl_.source_buffer_;
  _impl_.source_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE CollectiveBufferProto::unsafe_arena_release_source_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CollectiveBufferProto.source_buffer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::ShapedSliceProto* temp = _impl_.source_buffer_;
  _impl_.source_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CollectiveBufferProto::_internal_mutable_source_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.source_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.source_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.source_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CollectiveBufferProto::mutable_source_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_source_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveBufferProto.source_buffer)
  return _msg;
}
inline void CollectiveBufferProto::set_allocated_source_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.source_buffer_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.source_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CollectiveBufferProto.source_buffer)
}

// .xla.ShapedSliceProto destination_buffer = 3;
inline bool CollectiveBufferProto::has_destination_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.destination_buffer_ != nullptr);
  return value;
}
inline const ::xla::ShapedSliceProto& CollectiveBufferProto::_internal_destination_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::ShapedSliceProto* p = _impl_.destination_buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::ShapedSliceProto&>(::xla::_ShapedSliceProto_default_instance_);
}
inline const ::xla::ShapedSliceProto& CollectiveBufferProto::destination_buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBufferProto.destination_buffer)
  return _internal_destination_buffer();
}
inline void CollectiveBufferProto::unsafe_arena_set_allocated_destination_buffer(
    ::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.destination_buffer_);
  }
  _impl_.destination_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CollectiveBufferProto.destination_buffer)
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE CollectiveBufferProto::release_destination_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::ShapedSliceProto* released = _impl_.destination_buffer_;
  _impl_.destination_buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NULLABLE CollectiveBufferProto::unsafe_arena_release_destination_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CollectiveBufferProto.destination_buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::ShapedSliceProto* temp = _impl_.destination_buffer_;
  _impl_.destination_buffer_ = nullptr;
  return temp;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CollectiveBufferProto::_internal_mutable_destination_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.destination_buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::ShapedSliceProto>(GetArena());
    _impl_.destination_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(p);
  }
  return _impl_.destination_buffer_;
}
inline ::xla::ShapedSliceProto* PROTOBUF_NONNULL CollectiveBufferProto::mutable_destination_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::ShapedSliceProto* _msg = _internal_mutable_destination_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveBufferProto.destination_buffer)
  return _msg;
}
inline void CollectiveBufferProto::set_allocated_destination_buffer(::xla::ShapedSliceProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.destination_buffer_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.destination_buffer_ = reinterpret_cast<::xla::ShapedSliceProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CollectiveBufferProto.destination_buffer)
}

// int64 source_memory_space = 4;
inline void CollectiveBufferProto::clear_source_memory_space() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_memory_space_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t CollectiveBufferProto::source_memory_space() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBufferProto.source_memory_space)
  return _internal_source_memory_space();
}
inline void CollectiveBufferProto::set_source_memory_space(::int64_t value) {
  _internal_set_source_memory_space(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveBufferProto.source_memory_space)
}
inline ::int64_t CollectiveBufferProto::_internal_source_memory_space() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_memory_space_;
}
inline void CollectiveBufferProto::_internal_set_source_memory_space(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_memory_space_ = value;
}

// int64 destination_memory_space = 5;
inline void CollectiveBufferProto::clear_destination_memory_space() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.destination_memory_space_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t CollectiveBufferProto::destination_memory_space() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBufferProto.destination_memory_space)
  return _internal_destination_memory_space();
}
inline void CollectiveBufferProto::set_destination_memory_space(::int64_t value) {
  _internal_set_destination_memory_space(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveBufferProto.destination_memory_space)
}
inline ::int64_t CollectiveBufferProto::_internal_destination_memory_space() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.destination_memory_space_;
}
inline void CollectiveBufferProto::_internal_set_destination_memory_space(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.destination_memory_space_ = value;
}

// -------------------------------------------------------------------

// CollectiveConfigProto

// repeated .xla.PrimitiveType operand_element_type = 1;
inline int CollectiveConfigProto::_internal_operand_element_type_size() const {
  return _internal_operand_element_type().size();
}
inline int CollectiveConfigProto::operand_element_type_size() const {
  return _internal_operand_element_type_size();
}
inline void CollectiveConfigProto::clear_operand_element_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.operand_element_type_.Clear();
}
inline ::xla::PrimitiveType CollectiveConfigProto::operand_element_type(int index) const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveConfigProto.operand_element_type)
  return static_cast<::xla::PrimitiveType>(_internal_operand_element_type().Get(index));
}
inline void CollectiveConfigProto::set_operand_element_type(int index, ::xla::PrimitiveType value) {
  _internal_mutable_operand_element_type()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveConfigProto.operand_element_type)
}
inline void CollectiveConfigProto::add_operand_element_type(::xla::PrimitiveType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_operand_element_type()->Add(value);
  // @@protoc_insertion_point(field_add:xla.gpu.CollectiveConfigProto.operand_element_type)
}
inline const ::google::protobuf::RepeatedField<int>& CollectiveConfigProto::operand_element_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectiveConfigProto.operand_element_type)
  return _internal_operand_element_type();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL CollectiveConfigProto::mutable_operand_element_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectiveConfigProto.operand_element_type)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_operand_element_type();
}
inline const ::google::protobuf::RepeatedField<int>& CollectiveConfigProto::_internal_operand_element_type()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.operand_element_type_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
CollectiveConfigProto::_internal_mutable_operand_element_type() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.operand_element_type_;
}

// repeated .xla.ReplicaGroup replica_groups = 2;
inline int CollectiveConfigProto::_internal_replica_groups_size() const {
  return _internal_replica_groups().size();
}
inline int CollectiveConfigProto::replica_groups_size() const {
  return _internal_replica_groups_size();
}
inline ::xla::ReplicaGroup* PROTOBUF_NONNULL CollectiveConfigProto::mutable_replica_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveConfigProto.replica_groups)
  return _internal_mutable_replica_groups()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL CollectiveConfigProto::mutable_replica_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectiveConfigProto.replica_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_replica_groups();
}
inline const ::xla::ReplicaGroup& CollectiveConfigProto::replica_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveConfigProto.replica_groups)
  return _internal_replica_groups().Get(index);
}
inline ::xla::ReplicaGroup* PROTOBUF_NONNULL CollectiveConfigProto::add_replica_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::ReplicaGroup* _add = _internal_mutable_replica_groups()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CollectiveConfigProto.replica_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>& CollectiveConfigProto::replica_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectiveConfigProto.replica_groups)
  return _internal_replica_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>&
CollectiveConfigProto::_internal_replica_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.replica_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::ReplicaGroup>* PROTOBUF_NONNULL
CollectiveConfigProto::_internal_mutable_replica_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.replica_groups_;
}

// .xla.CollectiveOpGroupMode group_mode = 3;
inline void CollectiveConfigProto::clear_group_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_mode_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::xla::CollectiveOpGroupMode CollectiveConfigProto::group_mode() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveConfigProto.group_mode)
  return _internal_group_mode();
}
inline void CollectiveConfigProto::set_group_mode(::xla::CollectiveOpGroupMode value) {
  _internal_set_group_mode(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveConfigProto.group_mode)
}
inline ::xla::CollectiveOpGroupMode CollectiveConfigProto::_internal_group_mode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::CollectiveOpGroupMode>(_impl_.group_mode_);
}
inline void CollectiveConfigProto::_internal_set_group_mode(::xla::CollectiveOpGroupMode value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_mode_ = value;
}

// bool use_symmetric_buffer = 4;
inline void CollectiveConfigProto::clear_use_symmetric_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_symmetric_buffer_ = false;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline bool CollectiveConfigProto::use_symmetric_buffer() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveConfigProto.use_symmetric_buffer)
  return _internal_use_symmetric_buffer();
}
inline void CollectiveConfigProto::set_use_symmetric_buffer(bool value) {
  _internal_set_use_symmetric_buffer(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveConfigProto.use_symmetric_buffer)
}
inline bool CollectiveConfigProto::_internal_use_symmetric_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_symmetric_buffer_;
}
inline void CollectiveConfigProto::_internal_set_use_symmetric_buffer(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_symmetric_buffer_ = value;
}

// -------------------------------------------------------------------

// CollectiveThunkProto

// .xla.gpu.ThunkKindProto thunk_kind = 1;
inline void CollectiveThunkProto::clear_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::xla::gpu::ThunkKindProto CollectiveThunkProto::thunk_kind() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveThunkProto.thunk_kind)
  return _internal_thunk_kind();
}
inline void CollectiveThunkProto::set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  _internal_set_thunk_kind(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveThunkProto.thunk_kind)
}
inline ::xla::gpu::ThunkKindProto CollectiveThunkProto::_internal_thunk_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::gpu::ThunkKindProto>(_impl_.thunk_kind_);
}
inline void CollectiveThunkProto::_internal_set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = value;
}

// uint64 async_events_unique_id = 3;
inline void CollectiveThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::uint64_t CollectiveThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void CollectiveThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveThunkProto.async_events_unique_id)
}
inline ::uint64_t CollectiveThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void CollectiveThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// -------------------------------------------------------------------

// AllGatherStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool AllGatherStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void AllGatherStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t AllGatherStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllGatherStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void AllGatherStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllGatherStartThunkProto.async_events_unique_id)
}
inline ::uint64_t AllGatherStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void AllGatherStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveConfigProto collective_config = 2;
inline bool AllGatherStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void AllGatherStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& AllGatherStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& AllGatherStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllGatherStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void AllGatherStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.AllGatherStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllGatherStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllGatherStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.AllGatherStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllGatherStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllGatherStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllGatherStartThunkProto.collective_config)
  return _msg;
}
inline void AllGatherStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.AllGatherStartThunkProto.collective_config)
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 3;
inline int AllGatherStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int AllGatherStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void AllGatherStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllGatherStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllGatherStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL AllGatherStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.AllGatherStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& AllGatherStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllGatherStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllGatherStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.AllGatherStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& AllGatherStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.AllGatherStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
AllGatherStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
AllGatherStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// -------------------------------------------------------------------

// AllReduceStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool AllReduceStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void AllReduceStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::uint64_t AllReduceStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void AllReduceStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.async_events_unique_id)
}
inline ::uint64_t AllReduceStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void AllReduceStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveConfigProto collective_config = 2;
inline bool AllReduceStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void AllReduceStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::gpu::CollectiveConfigProto& AllReduceStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& AllReduceStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void AllReduceStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.AllReduceStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllReduceStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllReduceStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.AllReduceStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllReduceStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllReduceStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllReduceStartThunkProto.collective_config)
  return _msg;
}
inline void AllReduceStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.AllReduceStartThunkProto.collective_config)
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 3;
inline int AllReduceStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int AllReduceStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void AllReduceStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllReduceStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllReduceStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL AllReduceStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.AllReduceStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& AllReduceStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllReduceStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.AllReduceStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& AllReduceStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.AllReduceStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
AllReduceStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
AllReduceStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// .xla.gpu.ReductionKindProto reduction_kind = 4;
inline void AllReduceStartThunkProto::clear_reduction_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reduction_kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::xla::gpu::ReductionKindProto AllReduceStartThunkProto::reduction_kind() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.reduction_kind)
  return _internal_reduction_kind();
}
inline void AllReduceStartThunkProto::set_reduction_kind(::xla::gpu::ReductionKindProto value) {
  _internal_set_reduction_kind(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.reduction_kind)
}
inline ::xla::gpu::ReductionKindProto AllReduceStartThunkProto::_internal_reduction_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::gpu::ReductionKindProto>(_impl_.reduction_kind_);
}
inline void AllReduceStartThunkProto::_internal_set_reduction_kind(::xla::gpu::ReductionKindProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reduction_kind_ = value;
}

// bool is_multimem_enabled = 5;
inline void AllReduceStartThunkProto::clear_is_multimem_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_multimem_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline bool AllReduceStartThunkProto::is_multimem_enabled() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.is_multimem_enabled)
  return _internal_is_multimem_enabled();
}
inline void AllReduceStartThunkProto::set_is_multimem_enabled(bool value) {
  _internal_set_is_multimem_enabled(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.is_multimem_enabled)
}
inline bool AllReduceStartThunkProto::_internal_is_multimem_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_multimem_enabled_;
}
inline void AllReduceStartThunkProto::_internal_set_is_multimem_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_multimem_enabled_ = value;
}

// int32 shmem_bytes = 6;
inline void AllReduceStartThunkProto::clear_shmem_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shmem_bytes_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int32_t AllReduceStartThunkProto::shmem_bytes() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.shmem_bytes)
  return _internal_shmem_bytes();
}
inline void AllReduceStartThunkProto::set_shmem_bytes(::int32_t value) {
  _internal_set_shmem_bytes(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.shmem_bytes)
}
inline ::int32_t AllReduceStartThunkProto::_internal_shmem_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shmem_bytes_;
}
inline void AllReduceStartThunkProto::_internal_set_shmem_bytes(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shmem_bytes_ = value;
}

// string kernel_name = 7;
inline void AllReduceStartThunkProto::clear_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kernel_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& AllReduceStartThunkProto::kernel_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.kernel_name)
  return _internal_kernel_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AllReduceStartThunkProto::set_kernel_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.kernel_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.kernel_name)
}
inline ::std::string* PROTOBUF_NONNULL AllReduceStartThunkProto::mutable_kernel_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_kernel_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllReduceStartThunkProto.kernel_name)
  return _s;
}
inline const ::std::string& AllReduceStartThunkProto::_internal_kernel_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.kernel_name_.Get();
}
inline void AllReduceStartThunkProto::_internal_set_kernel_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.kernel_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AllReduceStartThunkProto::_internal_mutable_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.kernel_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AllReduceStartThunkProto::release_kernel_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.AllReduceStartThunkProto.kernel_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.kernel_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.kernel_name_.Set("", GetArena());
  }
  return released;
}
inline void AllReduceStartThunkProto::set_allocated_kernel_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.kernel_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.kernel_name_.IsDefault()) {
    _impl_.kernel_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.AllReduceStartThunkProto.kernel_name)
}

// bool collective_kernel_enabled = 8;
inline void AllReduceStartThunkProto::clear_collective_kernel_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collective_kernel_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline bool AllReduceStartThunkProto::collective_kernel_enabled() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.collective_kernel_enabled)
  return _internal_collective_kernel_enabled();
}
inline void AllReduceStartThunkProto::set_collective_kernel_enabled(bool value) {
  _internal_set_collective_kernel_enabled(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.collective_kernel_enabled)
}
inline bool AllReduceStartThunkProto::_internal_collective_kernel_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.collective_kernel_enabled_;
}
inline void AllReduceStartThunkProto::_internal_set_collective_kernel_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collective_kernel_enabled_ = value;
}

// bool is_async = 9;
inline void AllReduceStartThunkProto::clear_is_async() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_async_ = false;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline bool AllReduceStartThunkProto::is_async() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllReduceStartThunkProto.is_async)
  return _internal_is_async();
}
inline void AllReduceStartThunkProto::set_is_async(bool value) {
  _internal_set_is_async(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllReduceStartThunkProto.is_async)
}
inline bool AllReduceStartThunkProto::_internal_is_async() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_async_;
}
inline void AllReduceStartThunkProto::_internal_set_is_async(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_async_ = value;
}

// -------------------------------------------------------------------

// ReduceScatterStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool ReduceScatterStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void ReduceScatterStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t ReduceScatterStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.ReduceScatterStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void ReduceScatterStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.ReduceScatterStartThunkProto.async_events_unique_id)
}
inline ::uint64_t ReduceScatterStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void ReduceScatterStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveConfigProto collective_config = 2;
inline bool ReduceScatterStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void ReduceScatterStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& ReduceScatterStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& ReduceScatterStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ReduceScatterStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void ReduceScatterStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ReduceScatterStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE ReduceScatterStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE ReduceScatterStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ReduceScatterStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL ReduceScatterStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL ReduceScatterStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ReduceScatterStartThunkProto.collective_config)
  return _msg;
}
inline void ReduceScatterStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ReduceScatterStartThunkProto.collective_config)
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 3;
inline int ReduceScatterStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int ReduceScatterStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void ReduceScatterStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL ReduceScatterStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.ReduceScatterStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL ReduceScatterStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.ReduceScatterStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& ReduceScatterStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ReduceScatterStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL ReduceScatterStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.ReduceScatterStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& ReduceScatterStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.ReduceScatterStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
ReduceScatterStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
ReduceScatterStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// .xla.gpu.ReductionKindProto reduction_kind = 4;
inline void ReduceScatterStartThunkProto::clear_reduction_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reduction_kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::xla::gpu::ReductionKindProto ReduceScatterStartThunkProto::reduction_kind() const {
  // @@protoc_insertion_point(field_get:xla.gpu.ReduceScatterStartThunkProto.reduction_kind)
  return _internal_reduction_kind();
}
inline void ReduceScatterStartThunkProto::set_reduction_kind(::xla::gpu::ReductionKindProto value) {
  _internal_set_reduction_kind(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.ReduceScatterStartThunkProto.reduction_kind)
}
inline ::xla::gpu::ReductionKindProto ReduceScatterStartThunkProto::_internal_reduction_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::gpu::ReductionKindProto>(_impl_.reduction_kind_);
}
inline void ReduceScatterStartThunkProto::_internal_set_reduction_kind(::xla::gpu::ReductionKindProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reduction_kind_ = value;
}

// -------------------------------------------------------------------

// AllToAllStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool AllToAllStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void AllToAllStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t AllToAllStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllToAllStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void AllToAllStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllToAllStartThunkProto.async_events_unique_id)
}
inline ::uint64_t AllToAllStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void AllToAllStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveConfigProto collective_config = 2;
inline bool AllToAllStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void AllToAllStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& AllToAllStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& AllToAllStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllToAllStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void AllToAllStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.AllToAllStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllToAllStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE AllToAllStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.AllToAllStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllToAllStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL AllToAllStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllToAllStartThunkProto.collective_config)
  return _msg;
}
inline void AllToAllStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.AllToAllStartThunkProto.collective_config)
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 3;
inline int AllToAllStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int AllToAllStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void AllToAllStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllToAllStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.AllToAllStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL AllToAllStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.AllToAllStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& AllToAllStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.AllToAllStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL AllToAllStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.AllToAllStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& AllToAllStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.AllToAllStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
AllToAllStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
AllToAllStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// bool has_split_dimension = 4;
inline void AllToAllStartThunkProto::clear_has_split_dimension() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.has_split_dimension_ = false;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline bool AllToAllStartThunkProto::has_split_dimension() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllToAllStartThunkProto.has_split_dimension)
  return _internal_has_split_dimension();
}
inline void AllToAllStartThunkProto::set_has_split_dimension(bool value) {
  _internal_set_has_split_dimension(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllToAllStartThunkProto.has_split_dimension)
}
inline bool AllToAllStartThunkProto::_internal_has_split_dimension() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.has_split_dimension_;
}
inline void AllToAllStartThunkProto::_internal_set_has_split_dimension(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.has_split_dimension_ = value;
}

// bool p2p_memcpy_enabled = 5;
inline void AllToAllStartThunkProto::clear_p2p_memcpy_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.p2p_memcpy_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline bool AllToAllStartThunkProto::p2p_memcpy_enabled() const {
  // @@protoc_insertion_point(field_get:xla.gpu.AllToAllStartThunkProto.p2p_memcpy_enabled)
  return _internal_p2p_memcpy_enabled();
}
inline void AllToAllStartThunkProto::set_p2p_memcpy_enabled(bool value) {
  _internal_set_p2p_memcpy_enabled(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.AllToAllStartThunkProto.p2p_memcpy_enabled)
}
inline bool AllToAllStartThunkProto::_internal_p2p_memcpy_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.p2p_memcpy_enabled_;
}
inline void AllToAllStartThunkProto::_internal_set_p2p_memcpy_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.p2p_memcpy_enabled_ = value;
}

// -------------------------------------------------------------------

// RaggedAllToAllStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool RaggedAllToAllStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void RaggedAllToAllStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t RaggedAllToAllStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void RaggedAllToAllStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.RaggedAllToAllStartThunkProto.async_events_unique_id)
}
inline ::uint64_t RaggedAllToAllStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void RaggedAllToAllStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveConfigProto collective_config = 2;
inline bool RaggedAllToAllStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void RaggedAllToAllStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& RaggedAllToAllStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& RaggedAllToAllStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void RaggedAllToAllStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.RaggedAllToAllStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE RaggedAllToAllStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE RaggedAllToAllStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.RaggedAllToAllStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL RaggedAllToAllStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL RaggedAllToAllStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.RaggedAllToAllStartThunkProto.collective_config)
  return _msg;
}
inline void RaggedAllToAllStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.RaggedAllToAllStartThunkProto.collective_config)
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 3;
inline int RaggedAllToAllStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int RaggedAllToAllStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void RaggedAllToAllStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL RaggedAllToAllStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.RaggedAllToAllStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL RaggedAllToAllStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.RaggedAllToAllStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& RaggedAllToAllStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL RaggedAllToAllStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.RaggedAllToAllStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& RaggedAllToAllStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.RaggedAllToAllStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
RaggedAllToAllStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
RaggedAllToAllStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// int64 num_total_updates = 4;
inline void RaggedAllToAllStartThunkProto::clear_num_total_updates() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_total_updates_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int64_t RaggedAllToAllStartThunkProto::num_total_updates() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.num_total_updates)
  return _internal_num_total_updates();
}
inline void RaggedAllToAllStartThunkProto::set_num_total_updates(::int64_t value) {
  _internal_set_num_total_updates(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.RaggedAllToAllStartThunkProto.num_total_updates)
}
inline ::int64_t RaggedAllToAllStartThunkProto::_internal_num_total_updates() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_total_updates_;
}
inline void RaggedAllToAllStartThunkProto::_internal_set_num_total_updates(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_total_updates_ = value;
}

// int64 num_input_rows = 5;
inline void RaggedAllToAllStartThunkProto::clear_num_input_rows() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_input_rows_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int64_t RaggedAllToAllStartThunkProto::num_input_rows() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.num_input_rows)
  return _internal_num_input_rows();
}
inline void RaggedAllToAllStartThunkProto::set_num_input_rows(::int64_t value) {
  _internal_set_num_input_rows(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.RaggedAllToAllStartThunkProto.num_input_rows)
}
inline ::int64_t RaggedAllToAllStartThunkProto::_internal_num_input_rows() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_input_rows_;
}
inline void RaggedAllToAllStartThunkProto::_internal_set_num_input_rows(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_input_rows_ = value;
}

// int64 num_row_elements = 6;
inline void RaggedAllToAllStartThunkProto::clear_num_row_elements() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_row_elements_ = ::int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline ::int64_t RaggedAllToAllStartThunkProto::num_row_elements() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.num_row_elements)
  return _internal_num_row_elements();
}
inline void RaggedAllToAllStartThunkProto::set_num_row_elements(::int64_t value) {
  _internal_set_num_row_elements(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:xla.gpu.RaggedAllToAllStartThunkProto.num_row_elements)
}
inline ::int64_t RaggedAllToAllStartThunkProto::_internal_num_row_elements() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_row_elements_;
}
inline void RaggedAllToAllStartThunkProto::_internal_set_num_row_elements(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_row_elements_ = value;
}

// bool one_shot_kernel_enabled = 7;
inline void RaggedAllToAllStartThunkProto::clear_one_shot_kernel_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.one_shot_kernel_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline bool RaggedAllToAllStartThunkProto::one_shot_kernel_enabled() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RaggedAllToAllStartThunkProto.one_shot_kernel_enabled)
  return _internal_one_shot_kernel_enabled();
}
inline void RaggedAllToAllStartThunkProto::set_one_shot_kernel_enabled(bool value) {
  _internal_set_one_shot_kernel_enabled(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:xla.gpu.RaggedAllToAllStartThunkProto.one_shot_kernel_enabled)
}
inline bool RaggedAllToAllStartThunkProto::_internal_one_shot_kernel_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.one_shot_kernel_enabled_;
}
inline void RaggedAllToAllStartThunkProto::_internal_set_one_shot_kernel_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.one_shot_kernel_enabled_ = value;
}

// -------------------------------------------------------------------

// CollectivePermuteStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool CollectivePermuteStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void CollectivePermuteStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t CollectivePermuteStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectivePermuteStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void CollectivePermuteStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectivePermuteStartThunkProto.async_events_unique_id)
}
inline ::uint64_t CollectivePermuteStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void CollectivePermuteStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 2;
inline int CollectivePermuteStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int CollectivePermuteStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void CollectivePermuteStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectivePermuteStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectivePermuteStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& CollectivePermuteStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectivePermuteStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CollectivePermuteStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& CollectivePermuteStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectivePermuteStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
CollectivePermuteStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
CollectivePermuteStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// .xla.gpu.CollectiveConfigProto collective_config = 3;
inline bool CollectivePermuteStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void CollectivePermuteStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& CollectivePermuteStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& CollectivePermuteStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectivePermuteStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void CollectivePermuteStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CollectivePermuteStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE CollectivePermuteStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE CollectivePermuteStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CollectivePermuteStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectivePermuteStartThunkProto.collective_config)
  return _msg;
}
inline void CollectivePermuteStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CollectivePermuteStartThunkProto.collective_config)
}

// repeated .xla.SourceTarget source_target_pairs = 4;
inline int CollectivePermuteStartThunkProto::_internal_source_target_pairs_size() const {
  return _internal_source_target_pairs().size();
}
inline int CollectivePermuteStartThunkProto::source_target_pairs_size() const {
  return _internal_source_target_pairs_size();
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::mutable_source_target_pairs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectivePermuteStartThunkProto.source_target_pairs)
  return _internal_mutable_source_target_pairs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::mutable_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectivePermuteStartThunkProto.source_target_pairs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_source_target_pairs();
}
inline const ::xla::SourceTarget& CollectivePermuteStartThunkProto::source_target_pairs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectivePermuteStartThunkProto.source_target_pairs)
  return _internal_source_target_pairs().Get(index);
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL CollectivePermuteStartThunkProto::add_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SourceTarget* _add = _internal_mutable_source_target_pairs()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CollectivePermuteStartThunkProto.source_target_pairs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& CollectivePermuteStartThunkProto::source_target_pairs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectivePermuteStartThunkProto.source_target_pairs)
  return _internal_source_target_pairs();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>&
CollectivePermuteStartThunkProto::_internal_source_target_pairs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_target_pairs_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL
CollectivePermuteStartThunkProto::_internal_mutable_source_target_pairs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.source_target_pairs_;
}

// bool p2p_memcpy_enabled = 6;
inline void CollectivePermuteStartThunkProto::clear_p2p_memcpy_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.p2p_memcpy_enabled_ = false;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline bool CollectivePermuteStartThunkProto::p2p_memcpy_enabled() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectivePermuteStartThunkProto.p2p_memcpy_enabled)
  return _internal_p2p_memcpy_enabled();
}
inline void CollectivePermuteStartThunkProto::set_p2p_memcpy_enabled(bool value) {
  _internal_set_p2p_memcpy_enabled(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectivePermuteStartThunkProto.p2p_memcpy_enabled)
}
inline bool CollectivePermuteStartThunkProto::_internal_p2p_memcpy_enabled() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.p2p_memcpy_enabled_;
}
inline void CollectivePermuteStartThunkProto::_internal_set_p2p_memcpy_enabled(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.p2p_memcpy_enabled_ = value;
}

// -------------------------------------------------------------------

// SendThunkProto

// uint64 async_events_unique_id = 1;
inline void SendThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::uint64_t SendThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.SendThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void SendThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.SendThunkProto.async_events_unique_id)
}
inline ::uint64_t SendThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void SendThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveBufferProto buffer = 2;
inline bool SendThunkProto::has_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_ != nullptr);
  return value;
}
inline void SendThunkProto::clear_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ != nullptr) _impl_.buffer_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::gpu::CollectiveBufferProto& SendThunkProto::_internal_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveBufferProto* p = _impl_.buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveBufferProto&>(::xla::gpu::_CollectiveBufferProto_default_instance_);
}
inline const ::xla::gpu::CollectiveBufferProto& SendThunkProto::buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SendThunkProto.buffer)
  return _internal_buffer();
}
inline void SendThunkProto::unsafe_arena_set_allocated_buffer(
    ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }
  _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.SendThunkProto.buffer)
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE SendThunkProto::release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveBufferProto* released = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE SendThunkProto::unsafe_arena_release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.SendThunkProto.buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveBufferProto* temp = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL SendThunkProto::_internal_mutable_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveBufferProto>(GetArena());
    _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(p);
  }
  return _impl_.buffer_;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL SendThunkProto::mutable_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::CollectiveBufferProto* _msg = _internal_mutable_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.SendThunkProto.buffer)
  return _msg;
}
inline void SendThunkProto::set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.SendThunkProto.buffer)
}

// .xla.gpu.CollectiveConfigProto collective_config = 3;
inline bool SendThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void SendThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::gpu::CollectiveConfigProto& SendThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& SendThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SendThunkProto.collective_config)
  return _internal_collective_config();
}
inline void SendThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.SendThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE SendThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE SendThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.SendThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL SendThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL SendThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.SendThunkProto.collective_config)
  return _msg;
}
inline void SendThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.SendThunkProto.collective_config)
}

// repeated .xla.SourceTarget source_target_pairs = 4;
inline int SendThunkProto::_internal_source_target_pairs_size() const {
  return _internal_source_target_pairs().size();
}
inline int SendThunkProto::source_target_pairs_size() const {
  return _internal_source_target_pairs_size();
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL SendThunkProto::mutable_source_target_pairs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.SendThunkProto.source_target_pairs)
  return _internal_mutable_source_target_pairs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL SendThunkProto::mutable_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.SendThunkProto.source_target_pairs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_source_target_pairs();
}
inline const ::xla::SourceTarget& SendThunkProto::source_target_pairs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SendThunkProto.source_target_pairs)
  return _internal_source_target_pairs().Get(index);
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL SendThunkProto::add_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SourceTarget* _add = _internal_mutable_source_target_pairs()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.SendThunkProto.source_target_pairs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& SendThunkProto::source_target_pairs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.SendThunkProto.source_target_pairs)
  return _internal_source_target_pairs();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>&
SendThunkProto::_internal_source_target_pairs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_target_pairs_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL
SendThunkProto::_internal_mutable_source_target_pairs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.source_target_pairs_;
}

// string instruction_name = 6;
inline void SendThunkProto::clear_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& SendThunkProto::instruction_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SendThunkProto.instruction_name)
  return _internal_instruction_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SendThunkProto::set_instruction_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.SendThunkProto.instruction_name)
}
inline ::std::string* PROTOBUF_NONNULL SendThunkProto::mutable_instruction_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_instruction_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.SendThunkProto.instruction_name)
  return _s;
}
inline const ::std::string& SendThunkProto::_internal_instruction_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_name_.Get();
}
inline void SendThunkProto::_internal_set_instruction_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SendThunkProto::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SendThunkProto::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.SendThunkProto.instruction_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.instruction_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  return released;
}
inline void SendThunkProto::set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.instruction_name_.IsDefault()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.SendThunkProto.instruction_name)
}

// -------------------------------------------------------------------

// RecvThunkProto

// uint64 async_events_unique_id = 1;
inline void RecvThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::uint64_t RecvThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.RecvThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void RecvThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:xla.gpu.RecvThunkProto.async_events_unique_id)
}
inline ::uint64_t RecvThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void RecvThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// .xla.gpu.CollectiveBufferProto buffer = 2;
inline bool RecvThunkProto::has_buffer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.buffer_ != nullptr);
  return value;
}
inline void RecvThunkProto::clear_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ != nullptr) _impl_.buffer_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::xla::gpu::CollectiveBufferProto& RecvThunkProto::_internal_buffer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveBufferProto* p = _impl_.buffer_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveBufferProto&>(::xla::gpu::_CollectiveBufferProto_default_instance_);
}
inline const ::xla::gpu::CollectiveBufferProto& RecvThunkProto::buffer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RecvThunkProto.buffer)
  return _internal_buffer();
}
inline void RecvThunkProto::unsafe_arena_set_allocated_buffer(
    ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }
  _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.RecvThunkProto.buffer)
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE RecvThunkProto::release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveBufferProto* released = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE RecvThunkProto::unsafe_arena_release_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.RecvThunkProto.buffer)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::xla::gpu::CollectiveBufferProto* temp = _impl_.buffer_;
  _impl_.buffer_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL RecvThunkProto::_internal_mutable_buffer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.buffer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveBufferProto>(GetArena());
    _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(p);
  }
  return _impl_.buffer_;
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL RecvThunkProto::mutable_buffer()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::xla::gpu::CollectiveBufferProto* _msg = _internal_mutable_buffer();
  // @@protoc_insertion_point(field_mutable:xla.gpu.RecvThunkProto.buffer)
  return _msg;
}
inline void RecvThunkProto::set_allocated_buffer(::xla::gpu::CollectiveBufferProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.buffer_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.buffer_ = reinterpret_cast<::xla::gpu::CollectiveBufferProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.RecvThunkProto.buffer)
}

// .xla.gpu.CollectiveConfigProto collective_config = 3;
inline bool RecvThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void RecvThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::xla::gpu::CollectiveConfigProto& RecvThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& RecvThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RecvThunkProto.collective_config)
  return _internal_collective_config();
}
inline void RecvThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.RecvThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE RecvThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE RecvThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.RecvThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL RecvThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL RecvThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.RecvThunkProto.collective_config)
  return _msg;
}
inline void RecvThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.RecvThunkProto.collective_config)
}

// repeated .xla.SourceTarget source_target_pairs = 4;
inline int RecvThunkProto::_internal_source_target_pairs_size() const {
  return _internal_source_target_pairs().size();
}
inline int RecvThunkProto::source_target_pairs_size() const {
  return _internal_source_target_pairs_size();
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL RecvThunkProto::mutable_source_target_pairs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.RecvThunkProto.source_target_pairs)
  return _internal_mutable_source_target_pairs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL RecvThunkProto::mutable_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.RecvThunkProto.source_target_pairs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_source_target_pairs();
}
inline const ::xla::SourceTarget& RecvThunkProto::source_target_pairs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RecvThunkProto.source_target_pairs)
  return _internal_source_target_pairs().Get(index);
}
inline ::xla::SourceTarget* PROTOBUF_NONNULL RecvThunkProto::add_source_target_pairs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::SourceTarget* _add = _internal_mutable_source_target_pairs()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.RecvThunkProto.source_target_pairs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>& RecvThunkProto::source_target_pairs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.RecvThunkProto.source_target_pairs)
  return _internal_source_target_pairs();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>&
RecvThunkProto::_internal_source_target_pairs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_target_pairs_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::SourceTarget>* PROTOBUF_NONNULL
RecvThunkProto::_internal_mutable_source_target_pairs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.source_target_pairs_;
}

// string instruction_name = 6;
inline void RecvThunkProto::clear_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instruction_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::std::string& RecvThunkProto::instruction_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.RecvThunkProto.instruction_name)
  return _internal_instruction_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void RecvThunkProto::set_instruction_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.gpu.RecvThunkProto.instruction_name)
}
inline ::std::string* PROTOBUF_NONNULL RecvThunkProto::mutable_instruction_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_instruction_name();
  // @@protoc_insertion_point(field_mutable:xla.gpu.RecvThunkProto.instruction_name)
  return _s;
}
inline const ::std::string& RecvThunkProto::_internal_instruction_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instruction_name_.Get();
}
inline void RecvThunkProto::_internal_set_instruction_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.instruction_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL RecvThunkProto::_internal_mutable_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.instruction_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE RecvThunkProto::release_instruction_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.RecvThunkProto.instruction_name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.instruction_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  return released;
}
inline void RecvThunkProto::set_allocated_instruction_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.instruction_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.instruction_name_.IsDefault()) {
    _impl_.instruction_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.RecvThunkProto.instruction_name)
}

// -------------------------------------------------------------------

// CollectiveBroadcastStartThunkProto

// optional uint64 async_events_unique_id = 1;
inline bool CollectiveBroadcastStartThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void CollectiveBroadcastStartThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::uint64_t CollectiveBroadcastStartThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBroadcastStartThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void CollectiveBroadcastStartThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveBroadcastStartThunkProto.async_events_unique_id)
}
inline ::uint64_t CollectiveBroadcastStartThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void CollectiveBroadcastStartThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// repeated .xla.gpu.CollectiveBufferProto buffers = 2;
inline int CollectiveBroadcastStartThunkProto::_internal_buffers_size() const {
  return _internal_buffers().size();
}
inline int CollectiveBroadcastStartThunkProto::buffers_size() const {
  return _internal_buffers_size();
}
inline void CollectiveBroadcastStartThunkProto::clear_buffers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.buffers_.Clear();
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL CollectiveBroadcastStartThunkProto::mutable_buffers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveBroadcastStartThunkProto.buffers)
  return _internal_mutable_buffers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL CollectiveBroadcastStartThunkProto::mutable_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectiveBroadcastStartThunkProto.buffers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_buffers();
}
inline const ::xla::gpu::CollectiveBufferProto& CollectiveBroadcastStartThunkProto::buffers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBroadcastStartThunkProto.buffers)
  return _internal_buffers().Get(index);
}
inline ::xla::gpu::CollectiveBufferProto* PROTOBUF_NONNULL CollectiveBroadcastStartThunkProto::add_buffers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::CollectiveBufferProto* _add = _internal_mutable_buffers()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CollectiveBroadcastStartThunkProto.buffers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>& CollectiveBroadcastStartThunkProto::buffers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectiveBroadcastStartThunkProto.buffers)
  return _internal_buffers();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>&
CollectiveBroadcastStartThunkProto::_internal_buffers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.buffers_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::CollectiveBufferProto>* PROTOBUF_NONNULL
CollectiveBroadcastStartThunkProto::_internal_mutable_buffers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.buffers_;
}

// .xla.gpu.CollectiveConfigProto collective_config = 3;
inline bool CollectiveBroadcastStartThunkProto::has_collective_config() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.collective_config_ != nullptr);
  return value;
}
inline void CollectiveBroadcastStartThunkProto::clear_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ != nullptr) _impl_.collective_config_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::CollectiveConfigProto& CollectiveBroadcastStartThunkProto::_internal_collective_config() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::CollectiveConfigProto* p = _impl_.collective_config_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::CollectiveConfigProto&>(::xla::gpu::_CollectiveConfigProto_default_instance_);
}
inline const ::xla::gpu::CollectiveConfigProto& CollectiveBroadcastStartThunkProto::collective_config() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveBroadcastStartThunkProto.collective_config)
  return _internal_collective_config();
}
inline void CollectiveBroadcastStartThunkProto::unsafe_arena_set_allocated_collective_config(
    ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_config_);
  }
  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.CollectiveBroadcastStartThunkProto.collective_config)
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE CollectiveBroadcastStartThunkProto::release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* released = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE CollectiveBroadcastStartThunkProto::unsafe_arena_release_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.CollectiveBroadcastStartThunkProto.collective_config)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::CollectiveConfigProto* temp = _impl_.collective_config_;
  _impl_.collective_config_ = nullptr;
  return temp;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL CollectiveBroadcastStartThunkProto::_internal_mutable_collective_config() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collective_config_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveConfigProto>(GetArena());
    _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(p);
  }
  return _impl_.collective_config_;
}
inline ::xla::gpu::CollectiveConfigProto* PROTOBUF_NONNULL CollectiveBroadcastStartThunkProto::mutable_collective_config()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::CollectiveConfigProto* _msg = _internal_mutable_collective_config();
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveBroadcastStartThunkProto.collective_config)
  return _msg;
}
inline void CollectiveBroadcastStartThunkProto::set_allocated_collective_config(::xla::gpu::CollectiveConfigProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collective_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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.collective_config_ = reinterpret_cast<::xla::gpu::CollectiveConfigProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.CollectiveBroadcastStartThunkProto.collective_config)
}

// -------------------------------------------------------------------

// CollectiveDoneThunkProto

// .xla.gpu.ThunkKindProto thunk_kind = 1;
inline void CollectiveDoneThunkProto::clear_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::xla::gpu::ThunkKindProto CollectiveDoneThunkProto::thunk_kind() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveDoneThunkProto.thunk_kind)
  return _internal_thunk_kind();
}
inline void CollectiveDoneThunkProto::set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  _internal_set_thunk_kind(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveDoneThunkProto.thunk_kind)
}
inline ::xla::gpu::ThunkKindProto CollectiveDoneThunkProto::_internal_thunk_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::gpu::ThunkKindProto>(_impl_.thunk_kind_);
}
inline void CollectiveDoneThunkProto::_internal_set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = value;
}

// optional uint64 async_events_unique_id = 3;
inline bool CollectiveDoneThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void CollectiveDoneThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::uint64_t CollectiveDoneThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveDoneThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void CollectiveDoneThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveDoneThunkProto.async_events_unique_id)
}
inline ::uint64_t CollectiveDoneThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void CollectiveDoneThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// -------------------------------------------------------------------

// CollectiveGroupThunkProto

// .xla.gpu.ThunkKindProto thunk_kind = 1;
inline void CollectiveGroupThunkProto::clear_thunk_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::xla::gpu::ThunkKindProto CollectiveGroupThunkProto::thunk_kind() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveGroupThunkProto.thunk_kind)
  return _internal_thunk_kind();
}
inline void CollectiveGroupThunkProto::set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  _internal_set_thunk_kind(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveGroupThunkProto.thunk_kind)
}
inline ::xla::gpu::ThunkKindProto CollectiveGroupThunkProto::_internal_thunk_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::xla::gpu::ThunkKindProto>(_impl_.thunk_kind_);
}
inline void CollectiveGroupThunkProto::_internal_set_thunk_kind(::xla::gpu::ThunkKindProto value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunk_kind_ = value;
}

// repeated .xla.gpu.ThunkProto thunks = 2;
inline int CollectiveGroupThunkProto::_internal_thunks_size() const {
  return _internal_thunks().size();
}
inline int CollectiveGroupThunkProto::thunks_size() const {
  return _internal_thunks_size();
}
inline void CollectiveGroupThunkProto::clear_thunks() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunks_.Clear();
}
inline ::xla::gpu::ThunkProto* PROTOBUF_NONNULL CollectiveGroupThunkProto::mutable_thunks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.CollectiveGroupThunkProto.thunks)
  return _internal_mutable_thunks()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL CollectiveGroupThunkProto::mutable_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.CollectiveGroupThunkProto.thunks)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_thunks();
}
inline const ::xla::gpu::ThunkProto& CollectiveGroupThunkProto::thunks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveGroupThunkProto.thunks)
  return _internal_thunks().Get(index);
}
inline ::xla::gpu::ThunkProto* PROTOBUF_NONNULL CollectiveGroupThunkProto::add_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::ThunkProto* _add = _internal_mutable_thunks()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.CollectiveGroupThunkProto.thunks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& CollectiveGroupThunkProto::thunks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.CollectiveGroupThunkProto.thunks)
  return _internal_thunks();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>&
CollectiveGroupThunkProto::_internal_thunks() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.thunks_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL
CollectiveGroupThunkProto::_internal_mutable_thunks() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.thunks_;
}

// optional uint64 async_events_unique_id = 4;
inline bool CollectiveGroupThunkProto::has_async_events_unique_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void CollectiveGroupThunkProto::clear_async_events_unique_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = ::uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline ::uint64_t CollectiveGroupThunkProto::async_events_unique_id() const {
  // @@protoc_insertion_point(field_get:xla.gpu.CollectiveGroupThunkProto.async_events_unique_id)
  return _internal_async_events_unique_id();
}
inline void CollectiveGroupThunkProto::set_async_events_unique_id(::uint64_t value) {
  _internal_set_async_events_unique_id(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:xla.gpu.CollectiveGroupThunkProto.async_events_unique_id)
}
inline ::uint64_t CollectiveGroupThunkProto::_internal_async_events_unique_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.async_events_unique_id_;
}
inline void CollectiveGroupThunkProto::_internal_set_async_events_unique_id(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.async_events_unique_id_ = value;
}

// -------------------------------------------------------------------

// ThunkProto

// .xla.gpu.ThunkInfoProto thunk_info = 1;
inline bool ThunkProto::has_thunk_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.thunk_info_ != nullptr);
  return value;
}
inline void ThunkProto::clear_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.thunk_info_ != nullptr) _impl_.thunk_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::xla::gpu::ThunkInfoProto& ThunkProto::_internal_thunk_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::xla::gpu::ThunkInfoProto* p = _impl_.thunk_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::xla::gpu::ThunkInfoProto&>(::xla::gpu::_ThunkInfoProto_default_instance_);
}
inline const ::xla::gpu::ThunkInfoProto& ThunkProto::thunk_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.thunk_info)
  return _internal_thunk_info();
}
inline void ThunkProto::unsafe_arena_set_allocated_thunk_info(
    ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.thunk_info_);
  }
  _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.thunk_info)
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE ThunkProto::release_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::ThunkInfoProto* released = _impl_.thunk_info_;
  _impl_.thunk_info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.thunk_info)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::xla::gpu::ThunkInfoProto* temp = _impl_.thunk_info_;
  _impl_.thunk_info_ = nullptr;
  return temp;
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_thunk_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.thunk_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ThunkInfoProto>(GetArena());
    _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(p);
  }
  return _impl_.thunk_info_;
}
inline ::xla::gpu::ThunkInfoProto* PROTOBUF_NONNULL ThunkProto::mutable_thunk_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::xla::gpu::ThunkInfoProto* _msg = _internal_mutable_thunk_info();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.thunk_info)
  return _msg;
}
inline void ThunkProto::set_allocated_thunk_info(::xla::gpu::ThunkInfoProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.thunk_info_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.thunk_info_ = reinterpret_cast<::xla::gpu::ThunkInfoProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:xla.gpu.ThunkProto.thunk_info)
}

// .xla.gpu.SequentialThunkProto sequential_thunk = 2;
inline bool ThunkProto::has_sequential_thunk() const {
  return impl_case() == kSequentialThunk;
}
inline bool ThunkProto::_internal_has_sequential_thunk() const {
  return impl_case() == kSequentialThunk;
}
inline void ThunkProto::set_has_sequential_thunk() {
  _impl_._oneof_case_[0] = kSequentialThunk;
}
inline void ThunkProto::clear_sequential_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kSequentialThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.sequential_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.sequential_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE ThunkProto::release_sequential_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.sequential_thunk)
  if (impl_case() == kSequentialThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(_impl_.impl_.sequential_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.sequential_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::SequentialThunkProto& ThunkProto::_internal_sequential_thunk() const {
  return impl_case() == kSequentialThunk ? *reinterpret_cast<::xla::gpu::SequentialThunkProto*>(_impl_.impl_.sequential_thunk_) : reinterpret_cast<::xla::gpu::SequentialThunkProto&>(::xla::gpu::_SequentialThunkProto_default_instance_);
}
inline const ::xla::gpu::SequentialThunkProto& ThunkProto::sequential_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.sequential_thunk)
  return _internal_sequential_thunk();
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_sequential_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.sequential_thunk)
  if (impl_case() == kSequentialThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SequentialThunkProto*>(_impl_.impl_.sequential_thunk_);
    _impl_.impl_.sequential_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_sequential_thunk(
    ::xla::gpu::SequentialThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_sequential_thunk();
    _impl_.impl_.sequential_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.sequential_thunk)
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_sequential_thunk() {
  if (impl_case() != kSequentialThunk) {
    clear_impl();
    set_has_sequential_thunk();
    _impl_.impl_.sequential_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SequentialThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::SequentialThunkProto*>(_impl_.impl_.sequential_thunk_);
}
inline ::xla::gpu::SequentialThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_sequential_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::SequentialThunkProto* _msg = _internal_mutable_sequential_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.sequential_thunk)
  return _msg;
}

// .xla.gpu.CopyThunkProto copy_thunk = 3;
inline bool ThunkProto::has_copy_thunk() const {
  return impl_case() == kCopyThunk;
}
inline bool ThunkProto::_internal_has_copy_thunk() const {
  return impl_case() == kCopyThunk;
}
inline void ThunkProto::set_has_copy_thunk() {
  _impl_._oneof_case_[0] = kCopyThunk;
}
inline ::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE ThunkProto::release_copy_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.copy_thunk)
  if (impl_case() == kCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CopyThunkProto*>(_impl_.impl_.copy_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CopyThunkProto& ThunkProto::_internal_copy_thunk() const {
  return impl_case() == kCopyThunk ? *reinterpret_cast<::xla::gpu::CopyThunkProto*>(_impl_.impl_.copy_thunk_) : reinterpret_cast<::xla::gpu::CopyThunkProto&>(::xla::gpu::_CopyThunkProto_default_instance_);
}
inline const ::xla::gpu::CopyThunkProto& ThunkProto::copy_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.copy_thunk)
  return _internal_copy_thunk();
}
inline ::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_copy_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.copy_thunk)
  if (impl_case() == kCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CopyThunkProto*>(_impl_.impl_.copy_thunk_);
    _impl_.impl_.copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_copy_thunk(
    ::xla::gpu::CopyThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_copy_thunk();
    _impl_.impl_.copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.copy_thunk)
}
inline ::xla::gpu::CopyThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_copy_thunk() {
  if (impl_case() != kCopyThunk) {
    clear_impl();
    set_has_copy_thunk();
    _impl_.impl_.copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CopyThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CopyThunkProto*>(_impl_.impl_.copy_thunk_);
}
inline ::xla::gpu::CopyThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_copy_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CopyThunkProto* _msg = _internal_mutable_copy_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.copy_thunk)
  return _msg;
}

// .xla.gpu.DeviceToHostCopyThunkProto device_to_host_copy_thunk = 4;
inline bool ThunkProto::has_device_to_host_copy_thunk() const {
  return impl_case() == kDeviceToHostCopyThunk;
}
inline bool ThunkProto::_internal_has_device_to_host_copy_thunk() const {
  return impl_case() == kDeviceToHostCopyThunk;
}
inline void ThunkProto::set_has_device_to_host_copy_thunk() {
  _impl_._oneof_case_[0] = kDeviceToHostCopyThunk;
}
inline ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::release_device_to_host_copy_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.device_to_host_copy_thunk)
  if (impl_case() == kDeviceToHostCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DeviceToHostCopyThunkProto*>(_impl_.impl_.device_to_host_copy_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.device_to_host_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::DeviceToHostCopyThunkProto& ThunkProto::_internal_device_to_host_copy_thunk() const {
  return impl_case() == kDeviceToHostCopyThunk ? *reinterpret_cast<::xla::gpu::DeviceToHostCopyThunkProto*>(_impl_.impl_.device_to_host_copy_thunk_) : reinterpret_cast<::xla::gpu::DeviceToHostCopyThunkProto&>(::xla::gpu::_DeviceToHostCopyThunkProto_default_instance_);
}
inline const ::xla::gpu::DeviceToHostCopyThunkProto& ThunkProto::device_to_host_copy_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.device_to_host_copy_thunk)
  return _internal_device_to_host_copy_thunk();
}
inline ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_device_to_host_copy_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.device_to_host_copy_thunk)
  if (impl_case() == kDeviceToHostCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DeviceToHostCopyThunkProto*>(_impl_.impl_.device_to_host_copy_thunk_);
    _impl_.impl_.device_to_host_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_device_to_host_copy_thunk(
    ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_device_to_host_copy_thunk();
    _impl_.impl_.device_to_host_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.device_to_host_copy_thunk)
}
inline ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_device_to_host_copy_thunk() {
  if (impl_case() != kDeviceToHostCopyThunk) {
    clear_impl();
    set_has_device_to_host_copy_thunk();
    _impl_.impl_.device_to_host_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::DeviceToHostCopyThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::DeviceToHostCopyThunkProto*>(_impl_.impl_.device_to_host_copy_thunk_);
}
inline ::xla::gpu::DeviceToHostCopyThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_device_to_host_copy_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::DeviceToHostCopyThunkProto* _msg = _internal_mutable_device_to_host_copy_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.device_to_host_copy_thunk)
  return _msg;
}

// .xla.gpu.HostToDeviceCopyThunkProto host_to_device_copy_thunk = 5;
inline bool ThunkProto::has_host_to_device_copy_thunk() const {
  return impl_case() == kHostToDeviceCopyThunk;
}
inline bool ThunkProto::_internal_has_host_to_device_copy_thunk() const {
  return impl_case() == kHostToDeviceCopyThunk;
}
inline void ThunkProto::set_has_host_to_device_copy_thunk() {
  _impl_._oneof_case_[0] = kHostToDeviceCopyThunk;
}
inline ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_to_device_copy_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_to_device_copy_thunk)
  if (impl_case() == kHostToDeviceCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostToDeviceCopyThunkProto*>(_impl_.impl_.host_to_device_copy_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_to_device_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostToDeviceCopyThunkProto& ThunkProto::_internal_host_to_device_copy_thunk() const {
  return impl_case() == kHostToDeviceCopyThunk ? *reinterpret_cast<::xla::gpu::HostToDeviceCopyThunkProto*>(_impl_.impl_.host_to_device_copy_thunk_) : reinterpret_cast<::xla::gpu::HostToDeviceCopyThunkProto&>(::xla::gpu::_HostToDeviceCopyThunkProto_default_instance_);
}
inline const ::xla::gpu::HostToDeviceCopyThunkProto& ThunkProto::host_to_device_copy_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_to_device_copy_thunk)
  return _internal_host_to_device_copy_thunk();
}
inline ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_to_device_copy_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_to_device_copy_thunk)
  if (impl_case() == kHostToDeviceCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostToDeviceCopyThunkProto*>(_impl_.impl_.host_to_device_copy_thunk_);
    _impl_.impl_.host_to_device_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_to_device_copy_thunk(
    ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_to_device_copy_thunk();
    _impl_.impl_.host_to_device_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_to_device_copy_thunk)
}
inline ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_to_device_copy_thunk() {
  if (impl_case() != kHostToDeviceCopyThunk) {
    clear_impl();
    set_has_host_to_device_copy_thunk();
    _impl_.impl_.host_to_device_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostToDeviceCopyThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostToDeviceCopyThunkProto*>(_impl_.impl_.host_to_device_copy_thunk_);
}
inline ::xla::gpu::HostToDeviceCopyThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_to_device_copy_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostToDeviceCopyThunkProto* _msg = _internal_mutable_host_to_device_copy_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_to_device_copy_thunk)
  return _msg;
}

// .xla.gpu.ConditionalThunkProto conditional_thunk = 6;
inline bool ThunkProto::has_conditional_thunk() const {
  return impl_case() == kConditionalThunk;
}
inline bool ThunkProto::_internal_has_conditional_thunk() const {
  return impl_case() == kConditionalThunk;
}
inline void ThunkProto::set_has_conditional_thunk() {
  _impl_._oneof_case_[0] = kConditionalThunk;
}
inline void ThunkProto::clear_conditional_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kConditionalThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.conditional_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.conditional_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE ThunkProto::release_conditional_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.conditional_thunk)
  if (impl_case() == kConditionalThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConditionalThunkProto*>(_impl_.impl_.conditional_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.conditional_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::ConditionalThunkProto& ThunkProto::_internal_conditional_thunk() const {
  return impl_case() == kConditionalThunk ? *reinterpret_cast<::xla::gpu::ConditionalThunkProto*>(_impl_.impl_.conditional_thunk_) : reinterpret_cast<::xla::gpu::ConditionalThunkProto&>(::xla::gpu::_ConditionalThunkProto_default_instance_);
}
inline const ::xla::gpu::ConditionalThunkProto& ThunkProto::conditional_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.conditional_thunk)
  return _internal_conditional_thunk();
}
inline ::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_conditional_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.conditional_thunk)
  if (impl_case() == kConditionalThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConditionalThunkProto*>(_impl_.impl_.conditional_thunk_);
    _impl_.impl_.conditional_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_conditional_thunk(
    ::xla::gpu::ConditionalThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_conditional_thunk();
    _impl_.impl_.conditional_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.conditional_thunk)
}
inline ::xla::gpu::ConditionalThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_conditional_thunk() {
  if (impl_case() != kConditionalThunk) {
    clear_impl();
    set_has_conditional_thunk();
    _impl_.impl_.conditional_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ConditionalThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::ConditionalThunkProto*>(_impl_.impl_.conditional_thunk_);
}
inline ::xla::gpu::ConditionalThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_conditional_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::ConditionalThunkProto* _msg = _internal_mutable_conditional_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.conditional_thunk)
  return _msg;
}

// .xla.gpu.WhileThunkProto while_thunk = 7;
inline bool ThunkProto::has_while_thunk() const {
  return impl_case() == kWhileThunk;
}
inline bool ThunkProto::_internal_has_while_thunk() const {
  return impl_case() == kWhileThunk;
}
inline void ThunkProto::set_has_while_thunk() {
  _impl_._oneof_case_[0] = kWhileThunk;
}
inline void ThunkProto::clear_while_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kWhileThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.while_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.while_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE ThunkProto::release_while_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.while_thunk)
  if (impl_case() == kWhileThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::WhileThunkProto*>(_impl_.impl_.while_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.while_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::WhileThunkProto& ThunkProto::_internal_while_thunk() const {
  return impl_case() == kWhileThunk ? *reinterpret_cast<::xla::gpu::WhileThunkProto*>(_impl_.impl_.while_thunk_) : reinterpret_cast<::xla::gpu::WhileThunkProto&>(::xla::gpu::_WhileThunkProto_default_instance_);
}
inline const ::xla::gpu::WhileThunkProto& ThunkProto::while_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.while_thunk)
  return _internal_while_thunk();
}
inline ::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_while_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.while_thunk)
  if (impl_case() == kWhileThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::WhileThunkProto*>(_impl_.impl_.while_thunk_);
    _impl_.impl_.while_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_while_thunk(
    ::xla::gpu::WhileThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_while_thunk();
    _impl_.impl_.while_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.while_thunk)
}
inline ::xla::gpu::WhileThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_while_thunk() {
  if (impl_case() != kWhileThunk) {
    clear_impl();
    set_has_while_thunk();
    _impl_.impl_.while_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::WhileThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::WhileThunkProto*>(_impl_.impl_.while_thunk_);
}
inline ::xla::gpu::WhileThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_while_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::WhileThunkProto* _msg = _internal_mutable_while_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.while_thunk)
  return _msg;
}

// .xla.gpu.KernelThunkProto kernel_thunk = 8;
inline bool ThunkProto::has_kernel_thunk() const {
  return impl_case() == kKernelThunk;
}
inline bool ThunkProto::_internal_has_kernel_thunk() const {
  return impl_case() == kKernelThunk;
}
inline void ThunkProto::set_has_kernel_thunk() {
  _impl_._oneof_case_[0] = kKernelThunk;
}
inline void ThunkProto::clear_kernel_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kKernelThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.kernel_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.kernel_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE ThunkProto::release_kernel_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.kernel_thunk)
  if (impl_case() == kKernelThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::KernelThunkProto*>(_impl_.impl_.kernel_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.kernel_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::KernelThunkProto& ThunkProto::_internal_kernel_thunk() const {
  return impl_case() == kKernelThunk ? *reinterpret_cast<::xla::gpu::KernelThunkProto*>(_impl_.impl_.kernel_thunk_) : reinterpret_cast<::xla::gpu::KernelThunkProto&>(::xla::gpu::_KernelThunkProto_default_instance_);
}
inline const ::xla::gpu::KernelThunkProto& ThunkProto::kernel_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.kernel_thunk)
  return _internal_kernel_thunk();
}
inline ::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_kernel_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.kernel_thunk)
  if (impl_case() == kKernelThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::KernelThunkProto*>(_impl_.impl_.kernel_thunk_);
    _impl_.impl_.kernel_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_kernel_thunk(
    ::xla::gpu::KernelThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_kernel_thunk();
    _impl_.impl_.kernel_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.kernel_thunk)
}
inline ::xla::gpu::KernelThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_kernel_thunk() {
  if (impl_case() != kKernelThunk) {
    clear_impl();
    set_has_kernel_thunk();
    _impl_.impl_.kernel_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::KernelThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::KernelThunkProto*>(_impl_.impl_.kernel_thunk_);
}
inline ::xla::gpu::KernelThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_kernel_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::KernelThunkProto* _msg = _internal_mutable_kernel_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.kernel_thunk)
  return _msg;
}

// .xla.gpu.GemmThunkProto gemm_thunk = 9;
inline bool ThunkProto::has_gemm_thunk() const {
  return impl_case() == kGemmThunk;
}
inline bool ThunkProto::_internal_has_gemm_thunk() const {
  return impl_case() == kGemmThunk;
}
inline void ThunkProto::set_has_gemm_thunk() {
  _impl_._oneof_case_[0] = kGemmThunk;
}
inline void ThunkProto::clear_gemm_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kGemmThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.gemm_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.gemm_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE ThunkProto::release_gemm_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.gemm_thunk)
  if (impl_case() == kGemmThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::GemmThunkProto*>(_impl_.impl_.gemm_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.gemm_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::GemmThunkProto& ThunkProto::_internal_gemm_thunk() const {
  return impl_case() == kGemmThunk ? *reinterpret_cast<::xla::gpu::GemmThunkProto*>(_impl_.impl_.gemm_thunk_) : reinterpret_cast<::xla::gpu::GemmThunkProto&>(::xla::gpu::_GemmThunkProto_default_instance_);
}
inline const ::xla::gpu::GemmThunkProto& ThunkProto::gemm_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.gemm_thunk)
  return _internal_gemm_thunk();
}
inline ::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_gemm_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.gemm_thunk)
  if (impl_case() == kGemmThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::GemmThunkProto*>(_impl_.impl_.gemm_thunk_);
    _impl_.impl_.gemm_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_gemm_thunk(
    ::xla::gpu::GemmThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_gemm_thunk();
    _impl_.impl_.gemm_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.gemm_thunk)
}
inline ::xla::gpu::GemmThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_gemm_thunk() {
  if (impl_case() != kGemmThunk) {
    clear_impl();
    set_has_gemm_thunk();
    _impl_.impl_.gemm_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::GemmThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::GemmThunkProto*>(_impl_.impl_.gemm_thunk_);
}
inline ::xla::gpu::GemmThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_gemm_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::GemmThunkProto* _msg = _internal_mutable_gemm_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.gemm_thunk)
  return _msg;
}

// .xla.gpu.WaitForStreamsThunkProto wait_for_streams_thunk = 10;
inline bool ThunkProto::has_wait_for_streams_thunk() const {
  return impl_case() == kWaitForStreamsThunk;
}
inline bool ThunkProto::_internal_has_wait_for_streams_thunk() const {
  return impl_case() == kWaitForStreamsThunk;
}
inline void ThunkProto::set_has_wait_for_streams_thunk() {
  _impl_._oneof_case_[0] = kWaitForStreamsThunk;
}
inline void ThunkProto::clear_wait_for_streams_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kWaitForStreamsThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.wait_for_streams_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.wait_for_streams_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE ThunkProto::release_wait_for_streams_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.wait_for_streams_thunk)
  if (impl_case() == kWaitForStreamsThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::WaitForStreamsThunkProto*>(_impl_.impl_.wait_for_streams_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.wait_for_streams_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::WaitForStreamsThunkProto& ThunkProto::_internal_wait_for_streams_thunk() const {
  return impl_case() == kWaitForStreamsThunk ? *reinterpret_cast<::xla::gpu::WaitForStreamsThunkProto*>(_impl_.impl_.wait_for_streams_thunk_) : reinterpret_cast<::xla::gpu::WaitForStreamsThunkProto&>(::xla::gpu::_WaitForStreamsThunkProto_default_instance_);
}
inline const ::xla::gpu::WaitForStreamsThunkProto& ThunkProto::wait_for_streams_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.wait_for_streams_thunk)
  return _internal_wait_for_streams_thunk();
}
inline ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_wait_for_streams_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.wait_for_streams_thunk)
  if (impl_case() == kWaitForStreamsThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::WaitForStreamsThunkProto*>(_impl_.impl_.wait_for_streams_thunk_);
    _impl_.impl_.wait_for_streams_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_wait_for_streams_thunk(
    ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_wait_for_streams_thunk();
    _impl_.impl_.wait_for_streams_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.wait_for_streams_thunk)
}
inline ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_wait_for_streams_thunk() {
  if (impl_case() != kWaitForStreamsThunk) {
    clear_impl();
    set_has_wait_for_streams_thunk();
    _impl_.impl_.wait_for_streams_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::WaitForStreamsThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::WaitForStreamsThunkProto*>(_impl_.impl_.wait_for_streams_thunk_);
}
inline ::xla::gpu::WaitForStreamsThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_wait_for_streams_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::WaitForStreamsThunkProto* _msg = _internal_mutable_wait_for_streams_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.wait_for_streams_thunk)
  return _msg;
}

// .xla.gpu.TriangularSolveThunkProto triangular_solve_thunk = 11;
inline bool ThunkProto::has_triangular_solve_thunk() const {
  return impl_case() == kTriangularSolveThunk;
}
inline bool ThunkProto::_internal_has_triangular_solve_thunk() const {
  return impl_case() == kTriangularSolveThunk;
}
inline void ThunkProto::set_has_triangular_solve_thunk() {
  _impl_._oneof_case_[0] = kTriangularSolveThunk;
}
inline void ThunkProto::clear_triangular_solve_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kTriangularSolveThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.triangular_solve_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.triangular_solve_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE ThunkProto::release_triangular_solve_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.triangular_solve_thunk)
  if (impl_case() == kTriangularSolveThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::TriangularSolveThunkProto*>(_impl_.impl_.triangular_solve_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.triangular_solve_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::TriangularSolveThunkProto& ThunkProto::_internal_triangular_solve_thunk() const {
  return impl_case() == kTriangularSolveThunk ? *reinterpret_cast<::xla::gpu::TriangularSolveThunkProto*>(_impl_.impl_.triangular_solve_thunk_) : reinterpret_cast<::xla::gpu::TriangularSolveThunkProto&>(::xla::gpu::_TriangularSolveThunkProto_default_instance_);
}
inline const ::xla::gpu::TriangularSolveThunkProto& ThunkProto::triangular_solve_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.triangular_solve_thunk)
  return _internal_triangular_solve_thunk();
}
inline ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_triangular_solve_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.triangular_solve_thunk)
  if (impl_case() == kTriangularSolveThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::TriangularSolveThunkProto*>(_impl_.impl_.triangular_solve_thunk_);
    _impl_.impl_.triangular_solve_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_triangular_solve_thunk(
    ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_triangular_solve_thunk();
    _impl_.impl_.triangular_solve_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.triangular_solve_thunk)
}
inline ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_triangular_solve_thunk() {
  if (impl_case() != kTriangularSolveThunk) {
    clear_impl();
    set_has_triangular_solve_thunk();
    _impl_.impl_.triangular_solve_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::TriangularSolveThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::TriangularSolveThunkProto*>(_impl_.impl_.triangular_solve_thunk_);
}
inline ::xla::gpu::TriangularSolveThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_triangular_solve_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::TriangularSolveThunkProto* _msg = _internal_mutable_triangular_solve_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.triangular_solve_thunk)
  return _msg;
}

// .xla.gpu.ReplicaIdThunkProto replica_id_thunk = 12;
inline bool ThunkProto::has_replica_id_thunk() const {
  return impl_case() == kReplicaIdThunk;
}
inline bool ThunkProto::_internal_has_replica_id_thunk() const {
  return impl_case() == kReplicaIdThunk;
}
inline void ThunkProto::set_has_replica_id_thunk() {
  _impl_._oneof_case_[0] = kReplicaIdThunk;
}
inline void ThunkProto::clear_replica_id_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kReplicaIdThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.replica_id_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.replica_id_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE ThunkProto::release_replica_id_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.replica_id_thunk)
  if (impl_case() == kReplicaIdThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ReplicaIdThunkProto*>(_impl_.impl_.replica_id_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.replica_id_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::ReplicaIdThunkProto& ThunkProto::_internal_replica_id_thunk() const {
  return impl_case() == kReplicaIdThunk ? *reinterpret_cast<::xla::gpu::ReplicaIdThunkProto*>(_impl_.impl_.replica_id_thunk_) : reinterpret_cast<::xla::gpu::ReplicaIdThunkProto&>(::xla::gpu::_ReplicaIdThunkProto_default_instance_);
}
inline const ::xla::gpu::ReplicaIdThunkProto& ThunkProto::replica_id_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.replica_id_thunk)
  return _internal_replica_id_thunk();
}
inline ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_replica_id_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.replica_id_thunk)
  if (impl_case() == kReplicaIdThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ReplicaIdThunkProto*>(_impl_.impl_.replica_id_thunk_);
    _impl_.impl_.replica_id_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_replica_id_thunk(
    ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_replica_id_thunk();
    _impl_.impl_.replica_id_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.replica_id_thunk)
}
inline ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_replica_id_thunk() {
  if (impl_case() != kReplicaIdThunk) {
    clear_impl();
    set_has_replica_id_thunk();
    _impl_.impl_.replica_id_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ReplicaIdThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::ReplicaIdThunkProto*>(_impl_.impl_.replica_id_thunk_);
}
inline ::xla::gpu::ReplicaIdThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_replica_id_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::ReplicaIdThunkProto* _msg = _internal_mutable_replica_id_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.replica_id_thunk)
  return _msg;
}

// .xla.gpu.DeviceToDeviceCopyThunkProto device_to_device_copy_thunk = 13;
inline bool ThunkProto::has_device_to_device_copy_thunk() const {
  return impl_case() == kDeviceToDeviceCopyThunk;
}
inline bool ThunkProto::_internal_has_device_to_device_copy_thunk() const {
  return impl_case() == kDeviceToDeviceCopyThunk;
}
inline void ThunkProto::set_has_device_to_device_copy_thunk() {
  _impl_._oneof_case_[0] = kDeviceToDeviceCopyThunk;
}
inline ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::release_device_to_device_copy_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.device_to_device_copy_thunk)
  if (impl_case() == kDeviceToDeviceCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DeviceToDeviceCopyThunkProto*>(_impl_.impl_.device_to_device_copy_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.device_to_device_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::DeviceToDeviceCopyThunkProto& ThunkProto::_internal_device_to_device_copy_thunk() const {
  return impl_case() == kDeviceToDeviceCopyThunk ? *reinterpret_cast<::xla::gpu::DeviceToDeviceCopyThunkProto*>(_impl_.impl_.device_to_device_copy_thunk_) : reinterpret_cast<::xla::gpu::DeviceToDeviceCopyThunkProto&>(::xla::gpu::_DeviceToDeviceCopyThunkProto_default_instance_);
}
inline const ::xla::gpu::DeviceToDeviceCopyThunkProto& ThunkProto::device_to_device_copy_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.device_to_device_copy_thunk)
  return _internal_device_to_device_copy_thunk();
}
inline ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_device_to_device_copy_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.device_to_device_copy_thunk)
  if (impl_case() == kDeviceToDeviceCopyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DeviceToDeviceCopyThunkProto*>(_impl_.impl_.device_to_device_copy_thunk_);
    _impl_.impl_.device_to_device_copy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_device_to_device_copy_thunk(
    ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_device_to_device_copy_thunk();
    _impl_.impl_.device_to_device_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.device_to_device_copy_thunk)
}
inline ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_device_to_device_copy_thunk() {
  if (impl_case() != kDeviceToDeviceCopyThunk) {
    clear_impl();
    set_has_device_to_device_copy_thunk();
    _impl_.impl_.device_to_device_copy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::DeviceToDeviceCopyThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::DeviceToDeviceCopyThunkProto*>(_impl_.impl_.device_to_device_copy_thunk_);
}
inline ::xla::gpu::DeviceToDeviceCopyThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_device_to_device_copy_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::DeviceToDeviceCopyThunkProto* _msg = _internal_mutable_device_to_device_copy_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.device_to_device_copy_thunk)
  return _msg;
}

// .xla.gpu.PartitionIdThunkProto partition_id_thunk = 14;
inline bool ThunkProto::has_partition_id_thunk() const {
  return impl_case() == kPartitionIdThunk;
}
inline bool ThunkProto::_internal_has_partition_id_thunk() const {
  return impl_case() == kPartitionIdThunk;
}
inline void ThunkProto::set_has_partition_id_thunk() {
  _impl_._oneof_case_[0] = kPartitionIdThunk;
}
inline void ThunkProto::clear_partition_id_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kPartitionIdThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.partition_id_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.partition_id_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE ThunkProto::release_partition_id_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.partition_id_thunk)
  if (impl_case() == kPartitionIdThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::PartitionIdThunkProto*>(_impl_.impl_.partition_id_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.partition_id_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::PartitionIdThunkProto& ThunkProto::_internal_partition_id_thunk() const {
  return impl_case() == kPartitionIdThunk ? *reinterpret_cast<::xla::gpu::PartitionIdThunkProto*>(_impl_.impl_.partition_id_thunk_) : reinterpret_cast<::xla::gpu::PartitionIdThunkProto&>(::xla::gpu::_PartitionIdThunkProto_default_instance_);
}
inline const ::xla::gpu::PartitionIdThunkProto& ThunkProto::partition_id_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.partition_id_thunk)
  return _internal_partition_id_thunk();
}
inline ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_partition_id_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.partition_id_thunk)
  if (impl_case() == kPartitionIdThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::PartitionIdThunkProto*>(_impl_.impl_.partition_id_thunk_);
    _impl_.impl_.partition_id_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_partition_id_thunk(
    ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_partition_id_thunk();
    _impl_.impl_.partition_id_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.partition_id_thunk)
}
inline ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_partition_id_thunk() {
  if (impl_case() != kPartitionIdThunk) {
    clear_impl();
    set_has_partition_id_thunk();
    _impl_.impl_.partition_id_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::PartitionIdThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::PartitionIdThunkProto*>(_impl_.impl_.partition_id_thunk_);
}
inline ::xla::gpu::PartitionIdThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_partition_id_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::PartitionIdThunkProto* _msg = _internal_mutable_partition_id_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.partition_id_thunk)
  return _msg;
}

// .xla.gpu.CudnnThunkProto cudnn_thunk = 15;
inline bool ThunkProto::has_cudnn_thunk() const {
  return impl_case() == kCudnnThunk;
}
inline bool ThunkProto::_internal_has_cudnn_thunk() const {
  return impl_case() == kCudnnThunk;
}
inline void ThunkProto::set_has_cudnn_thunk() {
  _impl_._oneof_case_[0] = kCudnnThunk;
}
inline void ThunkProto::clear_cudnn_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCudnnThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.cudnn_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.cudnn_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE ThunkProto::release_cudnn_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.cudnn_thunk)
  if (impl_case() == kCudnnThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CudnnThunkProto*>(_impl_.impl_.cudnn_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.cudnn_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CudnnThunkProto& ThunkProto::_internal_cudnn_thunk() const {
  return impl_case() == kCudnnThunk ? *reinterpret_cast<::xla::gpu::CudnnThunkProto*>(_impl_.impl_.cudnn_thunk_) : reinterpret_cast<::xla::gpu::CudnnThunkProto&>(::xla::gpu::_CudnnThunkProto_default_instance_);
}
inline const ::xla::gpu::CudnnThunkProto& ThunkProto::cudnn_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.cudnn_thunk)
  return _internal_cudnn_thunk();
}
inline ::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_cudnn_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.cudnn_thunk)
  if (impl_case() == kCudnnThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CudnnThunkProto*>(_impl_.impl_.cudnn_thunk_);
    _impl_.impl_.cudnn_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_cudnn_thunk(
    ::xla::gpu::CudnnThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_cudnn_thunk();
    _impl_.impl_.cudnn_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.cudnn_thunk)
}
inline ::xla::gpu::CudnnThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_cudnn_thunk() {
  if (impl_case() != kCudnnThunk) {
    clear_impl();
    set_has_cudnn_thunk();
    _impl_.impl_.cudnn_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CudnnThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CudnnThunkProto*>(_impl_.impl_.cudnn_thunk_);
}
inline ::xla::gpu::CudnnThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_cudnn_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CudnnThunkProto* _msg = _internal_mutable_cudnn_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.cudnn_thunk)
  return _msg;
}

// .xla.gpu.HostExecuteStartThunkProto host_execute_start_thunk = 16;
inline bool ThunkProto::has_host_execute_start_thunk() const {
  return impl_case() == kHostExecuteStartThunk;
}
inline bool ThunkProto::_internal_has_host_execute_start_thunk() const {
  return impl_case() == kHostExecuteStartThunk;
}
inline void ThunkProto::set_has_host_execute_start_thunk() {
  _impl_._oneof_case_[0] = kHostExecuteStartThunk;
}
inline void ThunkProto::clear_host_execute_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostExecuteStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_execute_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_execute_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_execute_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_execute_start_thunk)
  if (impl_case() == kHostExecuteStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostExecuteStartThunkProto*>(_impl_.impl_.host_execute_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_execute_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostExecuteStartThunkProto& ThunkProto::_internal_host_execute_start_thunk() const {
  return impl_case() == kHostExecuteStartThunk ? *reinterpret_cast<::xla::gpu::HostExecuteStartThunkProto*>(_impl_.impl_.host_execute_start_thunk_) : reinterpret_cast<::xla::gpu::HostExecuteStartThunkProto&>(::xla::gpu::_HostExecuteStartThunkProto_default_instance_);
}
inline const ::xla::gpu::HostExecuteStartThunkProto& ThunkProto::host_execute_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_execute_start_thunk)
  return _internal_host_execute_start_thunk();
}
inline ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_execute_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_execute_start_thunk)
  if (impl_case() == kHostExecuteStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostExecuteStartThunkProto*>(_impl_.impl_.host_execute_start_thunk_);
    _impl_.impl_.host_execute_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_execute_start_thunk(
    ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_execute_start_thunk();
    _impl_.impl_.host_execute_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_execute_start_thunk)
}
inline ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_execute_start_thunk() {
  if (impl_case() != kHostExecuteStartThunk) {
    clear_impl();
    set_has_host_execute_start_thunk();
    _impl_.impl_.host_execute_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostExecuteStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostExecuteStartThunkProto*>(_impl_.impl_.host_execute_start_thunk_);
}
inline ::xla::gpu::HostExecuteStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_execute_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostExecuteStartThunkProto* _msg = _internal_mutable_host_execute_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_execute_start_thunk)
  return _msg;
}

// .xla.gpu.HostExecuteDoneThunkProto host_execute_done_thunk = 17;
inline bool ThunkProto::has_host_execute_done_thunk() const {
  return impl_case() == kHostExecuteDoneThunk;
}
inline bool ThunkProto::_internal_has_host_execute_done_thunk() const {
  return impl_case() == kHostExecuteDoneThunk;
}
inline void ThunkProto::set_has_host_execute_done_thunk() {
  _impl_._oneof_case_[0] = kHostExecuteDoneThunk;
}
inline void ThunkProto::clear_host_execute_done_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostExecuteDoneThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_execute_done_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_execute_done_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_execute_done_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_execute_done_thunk)
  if (impl_case() == kHostExecuteDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostExecuteDoneThunkProto*>(_impl_.impl_.host_execute_done_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_execute_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostExecuteDoneThunkProto& ThunkProto::_internal_host_execute_done_thunk() const {
  return impl_case() == kHostExecuteDoneThunk ? *reinterpret_cast<::xla::gpu::HostExecuteDoneThunkProto*>(_impl_.impl_.host_execute_done_thunk_) : reinterpret_cast<::xla::gpu::HostExecuteDoneThunkProto&>(::xla::gpu::_HostExecuteDoneThunkProto_default_instance_);
}
inline const ::xla::gpu::HostExecuteDoneThunkProto& ThunkProto::host_execute_done_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_execute_done_thunk)
  return _internal_host_execute_done_thunk();
}
inline ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_execute_done_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_execute_done_thunk)
  if (impl_case() == kHostExecuteDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostExecuteDoneThunkProto*>(_impl_.impl_.host_execute_done_thunk_);
    _impl_.impl_.host_execute_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_execute_done_thunk(
    ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_execute_done_thunk();
    _impl_.impl_.host_execute_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_execute_done_thunk)
}
inline ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_execute_done_thunk() {
  if (impl_case() != kHostExecuteDoneThunk) {
    clear_impl();
    set_has_host_execute_done_thunk();
    _impl_.impl_.host_execute_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostExecuteDoneThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostExecuteDoneThunkProto*>(_impl_.impl_.host_execute_done_thunk_);
}
inline ::xla::gpu::HostExecuteDoneThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_execute_done_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostExecuteDoneThunkProto* _msg = _internal_mutable_host_execute_done_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_execute_done_thunk)
  return _msg;
}

// .xla.gpu.DynamicSliceThunkProto dynamic_slice_thunk = 18;
inline bool ThunkProto::has_dynamic_slice_thunk() const {
  return impl_case() == kDynamicSliceThunk;
}
inline bool ThunkProto::_internal_has_dynamic_slice_thunk() const {
  return impl_case() == kDynamicSliceThunk;
}
inline void ThunkProto::set_has_dynamic_slice_thunk() {
  _impl_._oneof_case_[0] = kDynamicSliceThunk;
}
inline void ThunkProto::clear_dynamic_slice_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kDynamicSliceThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.dynamic_slice_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.dynamic_slice_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE ThunkProto::release_dynamic_slice_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.dynamic_slice_thunk)
  if (impl_case() == kDynamicSliceThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DynamicSliceThunkProto*>(_impl_.impl_.dynamic_slice_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.dynamic_slice_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::DynamicSliceThunkProto& ThunkProto::_internal_dynamic_slice_thunk() const {
  return impl_case() == kDynamicSliceThunk ? *reinterpret_cast<::xla::gpu::DynamicSliceThunkProto*>(_impl_.impl_.dynamic_slice_thunk_) : reinterpret_cast<::xla::gpu::DynamicSliceThunkProto&>(::xla::gpu::_DynamicSliceThunkProto_default_instance_);
}
inline const ::xla::gpu::DynamicSliceThunkProto& ThunkProto::dynamic_slice_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.dynamic_slice_thunk)
  return _internal_dynamic_slice_thunk();
}
inline ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_dynamic_slice_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.dynamic_slice_thunk)
  if (impl_case() == kDynamicSliceThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DynamicSliceThunkProto*>(_impl_.impl_.dynamic_slice_thunk_);
    _impl_.impl_.dynamic_slice_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_dynamic_slice_thunk(
    ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_dynamic_slice_thunk();
    _impl_.impl_.dynamic_slice_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.dynamic_slice_thunk)
}
inline ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_dynamic_slice_thunk() {
  if (impl_case() != kDynamicSliceThunk) {
    clear_impl();
    set_has_dynamic_slice_thunk();
    _impl_.impl_.dynamic_slice_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::DynamicSliceThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::DynamicSliceThunkProto*>(_impl_.impl_.dynamic_slice_thunk_);
}
inline ::xla::gpu::DynamicSliceThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_dynamic_slice_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::DynamicSliceThunkProto* _msg = _internal_mutable_dynamic_slice_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.dynamic_slice_thunk)
  return _msg;
}

// .xla.gpu.MemzeroThunkProto memzero_thunk = 19;
inline bool ThunkProto::has_memzero_thunk() const {
  return impl_case() == kMemzeroThunk;
}
inline bool ThunkProto::_internal_has_memzero_thunk() const {
  return impl_case() == kMemzeroThunk;
}
inline void ThunkProto::set_has_memzero_thunk() {
  _impl_._oneof_case_[0] = kMemzeroThunk;
}
inline void ThunkProto::clear_memzero_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kMemzeroThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.memzero_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.memzero_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE ThunkProto::release_memzero_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.memzero_thunk)
  if (impl_case() == kMemzeroThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::MemzeroThunkProto*>(_impl_.impl_.memzero_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.memzero_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::MemzeroThunkProto& ThunkProto::_internal_memzero_thunk() const {
  return impl_case() == kMemzeroThunk ? *reinterpret_cast<::xla::gpu::MemzeroThunkProto*>(_impl_.impl_.memzero_thunk_) : reinterpret_cast<::xla::gpu::MemzeroThunkProto&>(::xla::gpu::_MemzeroThunkProto_default_instance_);
}
inline const ::xla::gpu::MemzeroThunkProto& ThunkProto::memzero_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.memzero_thunk)
  return _internal_memzero_thunk();
}
inline ::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_memzero_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.memzero_thunk)
  if (impl_case() == kMemzeroThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::MemzeroThunkProto*>(_impl_.impl_.memzero_thunk_);
    _impl_.impl_.memzero_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_memzero_thunk(
    ::xla::gpu::MemzeroThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_memzero_thunk();
    _impl_.impl_.memzero_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.memzero_thunk)
}
inline ::xla::gpu::MemzeroThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_memzero_thunk() {
  if (impl_case() != kMemzeroThunk) {
    clear_impl();
    set_has_memzero_thunk();
    _impl_.impl_.memzero_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::MemzeroThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::MemzeroThunkProto*>(_impl_.impl_.memzero_thunk_);
}
inline ::xla::gpu::MemzeroThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_memzero_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::MemzeroThunkProto* _msg = _internal_mutable_memzero_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.memzero_thunk)
  return _msg;
}

// .xla.gpu.SelectKThunkProto select_k_thunk = 20;
inline bool ThunkProto::has_select_k_thunk() const {
  return impl_case() == kSelectKThunk;
}
inline bool ThunkProto::_internal_has_select_k_thunk() const {
  return impl_case() == kSelectKThunk;
}
inline void ThunkProto::set_has_select_k_thunk() {
  _impl_._oneof_case_[0] = kSelectKThunk;
}
inline void ThunkProto::clear_select_k_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kSelectKThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.select_k_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.select_k_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE ThunkProto::release_select_k_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.select_k_thunk)
  if (impl_case() == kSelectKThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SelectKThunkProto*>(_impl_.impl_.select_k_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.select_k_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::SelectKThunkProto& ThunkProto::_internal_select_k_thunk() const {
  return impl_case() == kSelectKThunk ? *reinterpret_cast<::xla::gpu::SelectKThunkProto*>(_impl_.impl_.select_k_thunk_) : reinterpret_cast<::xla::gpu::SelectKThunkProto&>(::xla::gpu::_SelectKThunkProto_default_instance_);
}
inline const ::xla::gpu::SelectKThunkProto& ThunkProto::select_k_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.select_k_thunk)
  return _internal_select_k_thunk();
}
inline ::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_select_k_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.select_k_thunk)
  if (impl_case() == kSelectKThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SelectKThunkProto*>(_impl_.impl_.select_k_thunk_);
    _impl_.impl_.select_k_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_select_k_thunk(
    ::xla::gpu::SelectKThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_select_k_thunk();
    _impl_.impl_.select_k_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.select_k_thunk)
}
inline ::xla::gpu::SelectKThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_select_k_thunk() {
  if (impl_case() != kSelectKThunk) {
    clear_impl();
    set_has_select_k_thunk();
    _impl_.impl_.select_k_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SelectKThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::SelectKThunkProto*>(_impl_.impl_.select_k_thunk_);
}
inline ::xla::gpu::SelectKThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_select_k_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::SelectKThunkProto* _msg = _internal_mutable_select_k_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.select_k_thunk)
  return _msg;
}

// .xla.gpu.InfeedThunkProto infeed_thunk = 21;
inline bool ThunkProto::has_infeed_thunk() const {
  return impl_case() == kInfeedThunk;
}
inline bool ThunkProto::_internal_has_infeed_thunk() const {
  return impl_case() == kInfeedThunk;
}
inline void ThunkProto::set_has_infeed_thunk() {
  _impl_._oneof_case_[0] = kInfeedThunk;
}
inline void ThunkProto::clear_infeed_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kInfeedThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.infeed_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.infeed_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE ThunkProto::release_infeed_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.infeed_thunk)
  if (impl_case() == kInfeedThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::InfeedThunkProto*>(_impl_.impl_.infeed_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.infeed_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::InfeedThunkProto& ThunkProto::_internal_infeed_thunk() const {
  return impl_case() == kInfeedThunk ? *reinterpret_cast<::xla::gpu::InfeedThunkProto*>(_impl_.impl_.infeed_thunk_) : reinterpret_cast<::xla::gpu::InfeedThunkProto&>(::xla::gpu::_InfeedThunkProto_default_instance_);
}
inline const ::xla::gpu::InfeedThunkProto& ThunkProto::infeed_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.infeed_thunk)
  return _internal_infeed_thunk();
}
inline ::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_infeed_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.infeed_thunk)
  if (impl_case() == kInfeedThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::InfeedThunkProto*>(_impl_.impl_.infeed_thunk_);
    _impl_.impl_.infeed_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_infeed_thunk(
    ::xla::gpu::InfeedThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_infeed_thunk();
    _impl_.impl_.infeed_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.infeed_thunk)
}
inline ::xla::gpu::InfeedThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_infeed_thunk() {
  if (impl_case() != kInfeedThunk) {
    clear_impl();
    set_has_infeed_thunk();
    _impl_.impl_.infeed_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::InfeedThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::InfeedThunkProto*>(_impl_.impl_.infeed_thunk_);
}
inline ::xla::gpu::InfeedThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_infeed_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::InfeedThunkProto* _msg = _internal_mutable_infeed_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.infeed_thunk)
  return _msg;
}

// .xla.gpu.CublasLtMatmulThunkProto cublas_lt_matmul_thunk = 22;
inline bool ThunkProto::has_cublas_lt_matmul_thunk() const {
  return impl_case() == kCublasLtMatmulThunk;
}
inline bool ThunkProto::_internal_has_cublas_lt_matmul_thunk() const {
  return impl_case() == kCublasLtMatmulThunk;
}
inline void ThunkProto::set_has_cublas_lt_matmul_thunk() {
  _impl_._oneof_case_[0] = kCublasLtMatmulThunk;
}
inline void ThunkProto::clear_cublas_lt_matmul_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCublasLtMatmulThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.cublas_lt_matmul_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.cublas_lt_matmul_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE ThunkProto::release_cublas_lt_matmul_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.cublas_lt_matmul_thunk)
  if (impl_case() == kCublasLtMatmulThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CublasLtMatmulThunkProto*>(_impl_.impl_.cublas_lt_matmul_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.cublas_lt_matmul_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CublasLtMatmulThunkProto& ThunkProto::_internal_cublas_lt_matmul_thunk() const {
  return impl_case() == kCublasLtMatmulThunk ? *reinterpret_cast<::xla::gpu::CublasLtMatmulThunkProto*>(_impl_.impl_.cublas_lt_matmul_thunk_) : reinterpret_cast<::xla::gpu::CublasLtMatmulThunkProto&>(::xla::gpu::_CublasLtMatmulThunkProto_default_instance_);
}
inline const ::xla::gpu::CublasLtMatmulThunkProto& ThunkProto::cublas_lt_matmul_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.cublas_lt_matmul_thunk)
  return _internal_cublas_lt_matmul_thunk();
}
inline ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_cublas_lt_matmul_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.cublas_lt_matmul_thunk)
  if (impl_case() == kCublasLtMatmulThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CublasLtMatmulThunkProto*>(_impl_.impl_.cublas_lt_matmul_thunk_);
    _impl_.impl_.cublas_lt_matmul_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_cublas_lt_matmul_thunk(
    ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_cublas_lt_matmul_thunk();
    _impl_.impl_.cublas_lt_matmul_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.cublas_lt_matmul_thunk)
}
inline ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_cublas_lt_matmul_thunk() {
  if (impl_case() != kCublasLtMatmulThunk) {
    clear_impl();
    set_has_cublas_lt_matmul_thunk();
    _impl_.impl_.cublas_lt_matmul_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CublasLtMatmulThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CublasLtMatmulThunkProto*>(_impl_.impl_.cublas_lt_matmul_thunk_);
}
inline ::xla::gpu::CublasLtMatmulThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_cublas_lt_matmul_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CublasLtMatmulThunkProto* _msg = _internal_mutable_cublas_lt_matmul_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.cublas_lt_matmul_thunk)
  return _msg;
}

// .xla.gpu.OutfeedThunkProto outfeed_thunk = 23;
inline bool ThunkProto::has_outfeed_thunk() const {
  return impl_case() == kOutfeedThunk;
}
inline bool ThunkProto::_internal_has_outfeed_thunk() const {
  return impl_case() == kOutfeedThunk;
}
inline void ThunkProto::set_has_outfeed_thunk() {
  _impl_._oneof_case_[0] = kOutfeedThunk;
}
inline void ThunkProto::clear_outfeed_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kOutfeedThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.outfeed_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.outfeed_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE ThunkProto::release_outfeed_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.outfeed_thunk)
  if (impl_case() == kOutfeedThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::OutfeedThunkProto*>(_impl_.impl_.outfeed_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.outfeed_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::OutfeedThunkProto& ThunkProto::_internal_outfeed_thunk() const {
  return impl_case() == kOutfeedThunk ? *reinterpret_cast<::xla::gpu::OutfeedThunkProto*>(_impl_.impl_.outfeed_thunk_) : reinterpret_cast<::xla::gpu::OutfeedThunkProto&>(::xla::gpu::_OutfeedThunkProto_default_instance_);
}
inline const ::xla::gpu::OutfeedThunkProto& ThunkProto::outfeed_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.outfeed_thunk)
  return _internal_outfeed_thunk();
}
inline ::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_outfeed_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.outfeed_thunk)
  if (impl_case() == kOutfeedThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::OutfeedThunkProto*>(_impl_.impl_.outfeed_thunk_);
    _impl_.impl_.outfeed_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_outfeed_thunk(
    ::xla::gpu::OutfeedThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_outfeed_thunk();
    _impl_.impl_.outfeed_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.outfeed_thunk)
}
inline ::xla::gpu::OutfeedThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_outfeed_thunk() {
  if (impl_case() != kOutfeedThunk) {
    clear_impl();
    set_has_outfeed_thunk();
    _impl_.impl_.outfeed_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::OutfeedThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::OutfeedThunkProto*>(_impl_.impl_.outfeed_thunk_);
}
inline ::xla::gpu::OutfeedThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_outfeed_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::OutfeedThunkProto* _msg = _internal_mutable_outfeed_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.outfeed_thunk)
  return _msg;
}

// .xla.gpu.NormThunkProto norm_thunk = 24;
inline bool ThunkProto::has_norm_thunk() const {
  return impl_case() == kNormThunk;
}
inline bool ThunkProto::_internal_has_norm_thunk() const {
  return impl_case() == kNormThunk;
}
inline void ThunkProto::set_has_norm_thunk() {
  _impl_._oneof_case_[0] = kNormThunk;
}
inline void ThunkProto::clear_norm_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kNormThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.norm_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.norm_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE ThunkProto::release_norm_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.norm_thunk)
  if (impl_case() == kNormThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::NormThunkProto*>(_impl_.impl_.norm_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.norm_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::NormThunkProto& ThunkProto::_internal_norm_thunk() const {
  return impl_case() == kNormThunk ? *reinterpret_cast<::xla::gpu::NormThunkProto*>(_impl_.impl_.norm_thunk_) : reinterpret_cast<::xla::gpu::NormThunkProto&>(::xla::gpu::_NormThunkProto_default_instance_);
}
inline const ::xla::gpu::NormThunkProto& ThunkProto::norm_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.norm_thunk)
  return _internal_norm_thunk();
}
inline ::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_norm_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.norm_thunk)
  if (impl_case() == kNormThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::NormThunkProto*>(_impl_.impl_.norm_thunk_);
    _impl_.impl_.norm_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_norm_thunk(
    ::xla::gpu::NormThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_norm_thunk();
    _impl_.impl_.norm_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.norm_thunk)
}
inline ::xla::gpu::NormThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_norm_thunk() {
  if (impl_case() != kNormThunk) {
    clear_impl();
    set_has_norm_thunk();
    _impl_.impl_.norm_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::NormThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::NormThunkProto*>(_impl_.impl_.norm_thunk_);
}
inline ::xla::gpu::NormThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_norm_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::NormThunkProto* _msg = _internal_mutable_norm_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.norm_thunk)
  return _msg;
}

// .xla.gpu.ConvolutionThunkProto convolution_thunk = 25;
inline bool ThunkProto::has_convolution_thunk() const {
  return impl_case() == kConvolutionThunk;
}
inline bool ThunkProto::_internal_has_convolution_thunk() const {
  return impl_case() == kConvolutionThunk;
}
inline void ThunkProto::set_has_convolution_thunk() {
  _impl_._oneof_case_[0] = kConvolutionThunk;
}
inline void ThunkProto::clear_convolution_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kConvolutionThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.convolution_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.convolution_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE ThunkProto::release_convolution_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.convolution_thunk)
  if (impl_case() == kConvolutionThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConvolutionThunkProto*>(_impl_.impl_.convolution_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.convolution_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::ConvolutionThunkProto& ThunkProto::_internal_convolution_thunk() const {
  return impl_case() == kConvolutionThunk ? *reinterpret_cast<::xla::gpu::ConvolutionThunkProto*>(_impl_.impl_.convolution_thunk_) : reinterpret_cast<::xla::gpu::ConvolutionThunkProto&>(::xla::gpu::_ConvolutionThunkProto_default_instance_);
}
inline const ::xla::gpu::ConvolutionThunkProto& ThunkProto::convolution_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.convolution_thunk)
  return _internal_convolution_thunk();
}
inline ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_convolution_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.convolution_thunk)
  if (impl_case() == kConvolutionThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConvolutionThunkProto*>(_impl_.impl_.convolution_thunk_);
    _impl_.impl_.convolution_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_convolution_thunk(
    ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_convolution_thunk();
    _impl_.impl_.convolution_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.convolution_thunk)
}
inline ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_convolution_thunk() {
  if (impl_case() != kConvolutionThunk) {
    clear_impl();
    set_has_convolution_thunk();
    _impl_.impl_.convolution_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ConvolutionThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::ConvolutionThunkProto*>(_impl_.impl_.convolution_thunk_);
}
inline ::xla::gpu::ConvolutionThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_convolution_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::ConvolutionThunkProto* _msg = _internal_mutable_convolution_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.convolution_thunk)
  return _msg;
}

// .xla.gpu.ConvolutionReorderThunkProto convolution_reorder_thunk = 26;
inline bool ThunkProto::has_convolution_reorder_thunk() const {
  return impl_case() == kConvolutionReorderThunk;
}
inline bool ThunkProto::_internal_has_convolution_reorder_thunk() const {
  return impl_case() == kConvolutionReorderThunk;
}
inline void ThunkProto::set_has_convolution_reorder_thunk() {
  _impl_._oneof_case_[0] = kConvolutionReorderThunk;
}
inline void ThunkProto::clear_convolution_reorder_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kConvolutionReorderThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.convolution_reorder_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.convolution_reorder_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE ThunkProto::release_convolution_reorder_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.convolution_reorder_thunk)
  if (impl_case() == kConvolutionReorderThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConvolutionReorderThunkProto*>(_impl_.impl_.convolution_reorder_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.convolution_reorder_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::ConvolutionReorderThunkProto& ThunkProto::_internal_convolution_reorder_thunk() const {
  return impl_case() == kConvolutionReorderThunk ? *reinterpret_cast<::xla::gpu::ConvolutionReorderThunkProto*>(_impl_.impl_.convolution_reorder_thunk_) : reinterpret_cast<::xla::gpu::ConvolutionReorderThunkProto&>(::xla::gpu::_ConvolutionReorderThunkProto_default_instance_);
}
inline const ::xla::gpu::ConvolutionReorderThunkProto& ThunkProto::convolution_reorder_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.convolution_reorder_thunk)
  return _internal_convolution_reorder_thunk();
}
inline ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_convolution_reorder_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.convolution_reorder_thunk)
  if (impl_case() == kConvolutionReorderThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ConvolutionReorderThunkProto*>(_impl_.impl_.convolution_reorder_thunk_);
    _impl_.impl_.convolution_reorder_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_convolution_reorder_thunk(
    ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_convolution_reorder_thunk();
    _impl_.impl_.convolution_reorder_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.convolution_reorder_thunk)
}
inline ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_convolution_reorder_thunk() {
  if (impl_case() != kConvolutionReorderThunk) {
    clear_impl();
    set_has_convolution_reorder_thunk();
    _impl_.impl_.convolution_reorder_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ConvolutionReorderThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::ConvolutionReorderThunkProto*>(_impl_.impl_.convolution_reorder_thunk_);
}
inline ::xla::gpu::ConvolutionReorderThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_convolution_reorder_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::ConvolutionReorderThunkProto* _msg = _internal_mutable_convolution_reorder_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.convolution_reorder_thunk)
  return _msg;
}

// .xla.gpu.FftThunkProto fft_thunk = 27;
inline bool ThunkProto::has_fft_thunk() const {
  return impl_case() == kFftThunk;
}
inline bool ThunkProto::_internal_has_fft_thunk() const {
  return impl_case() == kFftThunk;
}
inline void ThunkProto::set_has_fft_thunk() {
  _impl_._oneof_case_[0] = kFftThunk;
}
inline void ThunkProto::clear_fft_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kFftThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.fft_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.fft_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE ThunkProto::release_fft_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.fft_thunk)
  if (impl_case() == kFftThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::FftThunkProto*>(_impl_.impl_.fft_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.fft_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::FftThunkProto& ThunkProto::_internal_fft_thunk() const {
  return impl_case() == kFftThunk ? *reinterpret_cast<::xla::gpu::FftThunkProto*>(_impl_.impl_.fft_thunk_) : reinterpret_cast<::xla::gpu::FftThunkProto&>(::xla::gpu::_FftThunkProto_default_instance_);
}
inline const ::xla::gpu::FftThunkProto& ThunkProto::fft_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.fft_thunk)
  return _internal_fft_thunk();
}
inline ::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_fft_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.fft_thunk)
  if (impl_case() == kFftThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::FftThunkProto*>(_impl_.impl_.fft_thunk_);
    _impl_.impl_.fft_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_fft_thunk(
    ::xla::gpu::FftThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_fft_thunk();
    _impl_.impl_.fft_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.fft_thunk)
}
inline ::xla::gpu::FftThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_fft_thunk() {
  if (impl_case() != kFftThunk) {
    clear_impl();
    set_has_fft_thunk();
    _impl_.impl_.fft_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::FftThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::FftThunkProto*>(_impl_.impl_.fft_thunk_);
}
inline ::xla::gpu::FftThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_fft_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::FftThunkProto* _msg = _internal_mutable_fft_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.fft_thunk)
  return _msg;
}

// .xla.gpu.Memset32BitValueThunkProto memset32bit_value_thunk = 28;
inline bool ThunkProto::has_memset32bit_value_thunk() const {
  return impl_case() == kMemset32BitValueThunk;
}
inline bool ThunkProto::_internal_has_memset32bit_value_thunk() const {
  return impl_case() == kMemset32BitValueThunk;
}
inline void ThunkProto::set_has_memset32bit_value_thunk() {
  _impl_._oneof_case_[0] = kMemset32BitValueThunk;
}
inline void ThunkProto::clear_memset32bit_value_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kMemset32BitValueThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.memset32bit_value_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.memset32bit_value_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE ThunkProto::release_memset32bit_value_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.memset32bit_value_thunk)
  if (impl_case() == kMemset32BitValueThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::Memset32BitValueThunkProto*>(_impl_.impl_.memset32bit_value_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.memset32bit_value_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::Memset32BitValueThunkProto& ThunkProto::_internal_memset32bit_value_thunk() const {
  return impl_case() == kMemset32BitValueThunk ? *reinterpret_cast<::xla::gpu::Memset32BitValueThunkProto*>(_impl_.impl_.memset32bit_value_thunk_) : reinterpret_cast<::xla::gpu::Memset32BitValueThunkProto&>(::xla::gpu::_Memset32BitValueThunkProto_default_instance_);
}
inline const ::xla::gpu::Memset32BitValueThunkProto& ThunkProto::memset32bit_value_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.memset32bit_value_thunk)
  return _internal_memset32bit_value_thunk();
}
inline ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_memset32bit_value_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.memset32bit_value_thunk)
  if (impl_case() == kMemset32BitValueThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::Memset32BitValueThunkProto*>(_impl_.impl_.memset32bit_value_thunk_);
    _impl_.impl_.memset32bit_value_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_memset32bit_value_thunk(
    ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_memset32bit_value_thunk();
    _impl_.impl_.memset32bit_value_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.memset32bit_value_thunk)
}
inline ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_memset32bit_value_thunk() {
  if (impl_case() != kMemset32BitValueThunk) {
    clear_impl();
    set_has_memset32bit_value_thunk();
    _impl_.impl_.memset32bit_value_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::Memset32BitValueThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::Memset32BitValueThunkProto*>(_impl_.impl_.memset32bit_value_thunk_);
}
inline ::xla::gpu::Memset32BitValueThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_memset32bit_value_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::Memset32BitValueThunkProto* _msg = _internal_mutable_memset32bit_value_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.memset32bit_value_thunk)
  return _msg;
}

// .xla.gpu.CustomCallThunkProto custom_call_thunk = 30;
inline bool ThunkProto::has_custom_call_thunk() const {
  return impl_case() == kCustomCallThunk;
}
inline bool ThunkProto::_internal_has_custom_call_thunk() const {
  return impl_case() == kCustomCallThunk;
}
inline void ThunkProto::set_has_custom_call_thunk() {
  _impl_._oneof_case_[0] = kCustomCallThunk;
}
inline void ThunkProto::clear_custom_call_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCustomCallThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.custom_call_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.custom_call_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE ThunkProto::release_custom_call_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.custom_call_thunk)
  if (impl_case() == kCustomCallThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CustomCallThunkProto*>(_impl_.impl_.custom_call_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.custom_call_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CustomCallThunkProto& ThunkProto::_internal_custom_call_thunk() const {
  return impl_case() == kCustomCallThunk ? *reinterpret_cast<::xla::gpu::CustomCallThunkProto*>(_impl_.impl_.custom_call_thunk_) : reinterpret_cast<::xla::gpu::CustomCallThunkProto&>(::xla::gpu::_CustomCallThunkProto_default_instance_);
}
inline const ::xla::gpu::CustomCallThunkProto& ThunkProto::custom_call_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.custom_call_thunk)
  return _internal_custom_call_thunk();
}
inline ::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_custom_call_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.custom_call_thunk)
  if (impl_case() == kCustomCallThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CustomCallThunkProto*>(_impl_.impl_.custom_call_thunk_);
    _impl_.impl_.custom_call_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_custom_call_thunk(
    ::xla::gpu::CustomCallThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_custom_call_thunk();
    _impl_.impl_.custom_call_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.custom_call_thunk)
}
inline ::xla::gpu::CustomCallThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_custom_call_thunk() {
  if (impl_case() != kCustomCallThunk) {
    clear_impl();
    set_has_custom_call_thunk();
    _impl_.impl_.custom_call_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CustomCallThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CustomCallThunkProto*>(_impl_.impl_.custom_call_thunk_);
}
inline ::xla::gpu::CustomCallThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_custom_call_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CustomCallThunkProto* _msg = _internal_mutable_custom_call_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.custom_call_thunk)
  return _msg;
}

// .xla.gpu.CubSortThunkProto cub_sort_thunk = 31;
inline bool ThunkProto::has_cub_sort_thunk() const {
  return impl_case() == kCubSortThunk;
}
inline bool ThunkProto::_internal_has_cub_sort_thunk() const {
  return impl_case() == kCubSortThunk;
}
inline void ThunkProto::set_has_cub_sort_thunk() {
  _impl_._oneof_case_[0] = kCubSortThunk;
}
inline void ThunkProto::clear_cub_sort_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCubSortThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.cub_sort_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.cub_sort_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE ThunkProto::release_cub_sort_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.cub_sort_thunk)
  if (impl_case() == kCubSortThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CubSortThunkProto*>(_impl_.impl_.cub_sort_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.cub_sort_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CubSortThunkProto& ThunkProto::_internal_cub_sort_thunk() const {
  return impl_case() == kCubSortThunk ? *reinterpret_cast<::xla::gpu::CubSortThunkProto*>(_impl_.impl_.cub_sort_thunk_) : reinterpret_cast<::xla::gpu::CubSortThunkProto&>(::xla::gpu::_CubSortThunkProto_default_instance_);
}
inline const ::xla::gpu::CubSortThunkProto& ThunkProto::cub_sort_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.cub_sort_thunk)
  return _internal_cub_sort_thunk();
}
inline ::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_cub_sort_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.cub_sort_thunk)
  if (impl_case() == kCubSortThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CubSortThunkProto*>(_impl_.impl_.cub_sort_thunk_);
    _impl_.impl_.cub_sort_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_cub_sort_thunk(
    ::xla::gpu::CubSortThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_cub_sort_thunk();
    _impl_.impl_.cub_sort_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.cub_sort_thunk)
}
inline ::xla::gpu::CubSortThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_cub_sort_thunk() {
  if (impl_case() != kCubSortThunk) {
    clear_impl();
    set_has_cub_sort_thunk();
    _impl_.impl_.cub_sort_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CubSortThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CubSortThunkProto*>(_impl_.impl_.cub_sort_thunk_);
}
inline ::xla::gpu::CubSortThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_cub_sort_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CubSortThunkProto* _msg = _internal_mutable_cub_sort_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.cub_sort_thunk)
  return _msg;
}

// .xla.gpu.HostSendThunkProto host_send_thunk = 32;
inline bool ThunkProto::has_host_send_thunk() const {
  return impl_case() == kHostSendThunk;
}
inline bool ThunkProto::_internal_has_host_send_thunk() const {
  return impl_case() == kHostSendThunk;
}
inline void ThunkProto::set_has_host_send_thunk() {
  _impl_._oneof_case_[0] = kHostSendThunk;
}
inline void ThunkProto::clear_host_send_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostSendThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_send_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_send_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_send_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_send_thunk)
  if (impl_case() == kHostSendThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostSendThunkProto*>(_impl_.impl_.host_send_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_send_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostSendThunkProto& ThunkProto::_internal_host_send_thunk() const {
  return impl_case() == kHostSendThunk ? *reinterpret_cast<::xla::gpu::HostSendThunkProto*>(_impl_.impl_.host_send_thunk_) : reinterpret_cast<::xla::gpu::HostSendThunkProto&>(::xla::gpu::_HostSendThunkProto_default_instance_);
}
inline const ::xla::gpu::HostSendThunkProto& ThunkProto::host_send_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_send_thunk)
  return _internal_host_send_thunk();
}
inline ::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_send_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_send_thunk)
  if (impl_case() == kHostSendThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostSendThunkProto*>(_impl_.impl_.host_send_thunk_);
    _impl_.impl_.host_send_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_send_thunk(
    ::xla::gpu::HostSendThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_send_thunk();
    _impl_.impl_.host_send_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_send_thunk)
}
inline ::xla::gpu::HostSendThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_send_thunk() {
  if (impl_case() != kHostSendThunk) {
    clear_impl();
    set_has_host_send_thunk();
    _impl_.impl_.host_send_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostSendThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostSendThunkProto*>(_impl_.impl_.host_send_thunk_);
}
inline ::xla::gpu::HostSendThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_send_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostSendThunkProto* _msg = _internal_mutable_host_send_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_send_thunk)
  return _msg;
}

// .xla.gpu.HostSendDoneThunkProto host_send_done_thunk = 33;
inline bool ThunkProto::has_host_send_done_thunk() const {
  return impl_case() == kHostSendDoneThunk;
}
inline bool ThunkProto::_internal_has_host_send_done_thunk() const {
  return impl_case() == kHostSendDoneThunk;
}
inline void ThunkProto::set_has_host_send_done_thunk() {
  _impl_._oneof_case_[0] = kHostSendDoneThunk;
}
inline void ThunkProto::clear_host_send_done_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostSendDoneThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_send_done_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_send_done_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_send_done_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_send_done_thunk)
  if (impl_case() == kHostSendDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostSendDoneThunkProto*>(_impl_.impl_.host_send_done_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_send_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostSendDoneThunkProto& ThunkProto::_internal_host_send_done_thunk() const {
  return impl_case() == kHostSendDoneThunk ? *reinterpret_cast<::xla::gpu::HostSendDoneThunkProto*>(_impl_.impl_.host_send_done_thunk_) : reinterpret_cast<::xla::gpu::HostSendDoneThunkProto&>(::xla::gpu::_HostSendDoneThunkProto_default_instance_);
}
inline const ::xla::gpu::HostSendDoneThunkProto& ThunkProto::host_send_done_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_send_done_thunk)
  return _internal_host_send_done_thunk();
}
inline ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_send_done_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_send_done_thunk)
  if (impl_case() == kHostSendDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostSendDoneThunkProto*>(_impl_.impl_.host_send_done_thunk_);
    _impl_.impl_.host_send_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_send_done_thunk(
    ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_send_done_thunk();
    _impl_.impl_.host_send_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_send_done_thunk)
}
inline ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_send_done_thunk() {
  if (impl_case() != kHostSendDoneThunk) {
    clear_impl();
    set_has_host_send_done_thunk();
    _impl_.impl_.host_send_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostSendDoneThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostSendDoneThunkProto*>(_impl_.impl_.host_send_done_thunk_);
}
inline ::xla::gpu::HostSendDoneThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_send_done_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostSendDoneThunkProto* _msg = _internal_mutable_host_send_done_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_send_done_thunk)
  return _msg;
}

// .xla.gpu.HostRecvThunkProto host_recv_thunk = 34;
inline bool ThunkProto::has_host_recv_thunk() const {
  return impl_case() == kHostRecvThunk;
}
inline bool ThunkProto::_internal_has_host_recv_thunk() const {
  return impl_case() == kHostRecvThunk;
}
inline void ThunkProto::set_has_host_recv_thunk() {
  _impl_._oneof_case_[0] = kHostRecvThunk;
}
inline void ThunkProto::clear_host_recv_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostRecvThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_recv_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_recv_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_recv_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_recv_thunk)
  if (impl_case() == kHostRecvThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostRecvThunkProto*>(_impl_.impl_.host_recv_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_recv_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostRecvThunkProto& ThunkProto::_internal_host_recv_thunk() const {
  return impl_case() == kHostRecvThunk ? *reinterpret_cast<::xla::gpu::HostRecvThunkProto*>(_impl_.impl_.host_recv_thunk_) : reinterpret_cast<::xla::gpu::HostRecvThunkProto&>(::xla::gpu::_HostRecvThunkProto_default_instance_);
}
inline const ::xla::gpu::HostRecvThunkProto& ThunkProto::host_recv_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_recv_thunk)
  return _internal_host_recv_thunk();
}
inline ::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_recv_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_recv_thunk)
  if (impl_case() == kHostRecvThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostRecvThunkProto*>(_impl_.impl_.host_recv_thunk_);
    _impl_.impl_.host_recv_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_recv_thunk(
    ::xla::gpu::HostRecvThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_recv_thunk();
    _impl_.impl_.host_recv_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_recv_thunk)
}
inline ::xla::gpu::HostRecvThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_recv_thunk() {
  if (impl_case() != kHostRecvThunk) {
    clear_impl();
    set_has_host_recv_thunk();
    _impl_.impl_.host_recv_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostRecvThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostRecvThunkProto*>(_impl_.impl_.host_recv_thunk_);
}
inline ::xla::gpu::HostRecvThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_recv_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostRecvThunkProto* _msg = _internal_mutable_host_recv_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_recv_thunk)
  return _msg;
}

// .xla.gpu.HostRecvDoneThunkProto host_recv_done_thunk = 35;
inline bool ThunkProto::has_host_recv_done_thunk() const {
  return impl_case() == kHostRecvDoneThunk;
}
inline bool ThunkProto::_internal_has_host_recv_done_thunk() const {
  return impl_case() == kHostRecvDoneThunk;
}
inline void ThunkProto::set_has_host_recv_done_thunk() {
  _impl_._oneof_case_[0] = kHostRecvDoneThunk;
}
inline void ThunkProto::clear_host_recv_done_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kHostRecvDoneThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.host_recv_done_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.host_recv_done_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::release_host_recv_done_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.host_recv_done_thunk)
  if (impl_case() == kHostRecvDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostRecvDoneThunkProto*>(_impl_.impl_.host_recv_done_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.host_recv_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::HostRecvDoneThunkProto& ThunkProto::_internal_host_recv_done_thunk() const {
  return impl_case() == kHostRecvDoneThunk ? *reinterpret_cast<::xla::gpu::HostRecvDoneThunkProto*>(_impl_.impl_.host_recv_done_thunk_) : reinterpret_cast<::xla::gpu::HostRecvDoneThunkProto&>(::xla::gpu::_HostRecvDoneThunkProto_default_instance_);
}
inline const ::xla::gpu::HostRecvDoneThunkProto& ThunkProto::host_recv_done_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.host_recv_done_thunk)
  return _internal_host_recv_done_thunk();
}
inline ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_host_recv_done_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.host_recv_done_thunk)
  if (impl_case() == kHostRecvDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::HostRecvDoneThunkProto*>(_impl_.impl_.host_recv_done_thunk_);
    _impl_.impl_.host_recv_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_host_recv_done_thunk(
    ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_host_recv_done_thunk();
    _impl_.impl_.host_recv_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.host_recv_done_thunk)
}
inline ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_host_recv_done_thunk() {
  if (impl_case() != kHostRecvDoneThunk) {
    clear_impl();
    set_has_host_recv_done_thunk();
    _impl_.impl_.host_recv_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::HostRecvDoneThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::HostRecvDoneThunkProto*>(_impl_.impl_.host_recv_done_thunk_);
}
inline ::xla::gpu::HostRecvDoneThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_host_recv_done_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::HostRecvDoneThunkProto* _msg = _internal_mutable_host_recv_done_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.host_recv_done_thunk)
  return _msg;
}

// .xla.gpu.CustomKernelThunkProto custom_kernel_thunk = 36;
inline bool ThunkProto::has_custom_kernel_thunk() const {
  return impl_case() == kCustomKernelThunk;
}
inline bool ThunkProto::_internal_has_custom_kernel_thunk() const {
  return impl_case() == kCustomKernelThunk;
}
inline void ThunkProto::set_has_custom_kernel_thunk() {
  _impl_._oneof_case_[0] = kCustomKernelThunk;
}
inline void ThunkProto::clear_custom_kernel_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCustomKernelThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.custom_kernel_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.custom_kernel_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE ThunkProto::release_custom_kernel_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.custom_kernel_thunk)
  if (impl_case() == kCustomKernelThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CustomKernelThunkProto*>(_impl_.impl_.custom_kernel_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.custom_kernel_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CustomKernelThunkProto& ThunkProto::_internal_custom_kernel_thunk() const {
  return impl_case() == kCustomKernelThunk ? *reinterpret_cast<::xla::gpu::CustomKernelThunkProto*>(_impl_.impl_.custom_kernel_thunk_) : reinterpret_cast<::xla::gpu::CustomKernelThunkProto&>(::xla::gpu::_CustomKernelThunkProto_default_instance_);
}
inline const ::xla::gpu::CustomKernelThunkProto& ThunkProto::custom_kernel_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.custom_kernel_thunk)
  return _internal_custom_kernel_thunk();
}
inline ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_custom_kernel_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.custom_kernel_thunk)
  if (impl_case() == kCustomKernelThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CustomKernelThunkProto*>(_impl_.impl_.custom_kernel_thunk_);
    _impl_.impl_.custom_kernel_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_custom_kernel_thunk(
    ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_custom_kernel_thunk();
    _impl_.impl_.custom_kernel_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.custom_kernel_thunk)
}
inline ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_custom_kernel_thunk() {
  if (impl_case() != kCustomKernelThunk) {
    clear_impl();
    set_has_custom_kernel_thunk();
    _impl_.impl_.custom_kernel_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CustomKernelThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CustomKernelThunkProto*>(_impl_.impl_.custom_kernel_thunk_);
}
inline ::xla::gpu::CustomKernelThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_custom_kernel_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CustomKernelThunkProto* _msg = _internal_mutable_custom_kernel_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.custom_kernel_thunk)
  return _msg;
}

// .xla.gpu.CollectiveDoneThunkProto collective_done_thunk = 37;
inline bool ThunkProto::has_collective_done_thunk() const {
  return impl_case() == kCollectiveDoneThunk;
}
inline bool ThunkProto::_internal_has_collective_done_thunk() const {
  return impl_case() == kCollectiveDoneThunk;
}
inline void ThunkProto::set_has_collective_done_thunk() {
  _impl_._oneof_case_[0] = kCollectiveDoneThunk;
}
inline void ThunkProto::clear_collective_done_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCollectiveDoneThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.collective_done_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.collective_done_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::release_collective_done_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.collective_done_thunk)
  if (impl_case() == kCollectiveDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveDoneThunkProto*>(_impl_.impl_.collective_done_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.collective_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CollectiveDoneThunkProto& ThunkProto::_internal_collective_done_thunk() const {
  return impl_case() == kCollectiveDoneThunk ? *reinterpret_cast<::xla::gpu::CollectiveDoneThunkProto*>(_impl_.impl_.collective_done_thunk_) : reinterpret_cast<::xla::gpu::CollectiveDoneThunkProto&>(::xla::gpu::_CollectiveDoneThunkProto_default_instance_);
}
inline const ::xla::gpu::CollectiveDoneThunkProto& ThunkProto::collective_done_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.collective_done_thunk)
  return _internal_collective_done_thunk();
}
inline ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_collective_done_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.collective_done_thunk)
  if (impl_case() == kCollectiveDoneThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveDoneThunkProto*>(_impl_.impl_.collective_done_thunk_);
    _impl_.impl_.collective_done_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_collective_done_thunk(
    ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_collective_done_thunk();
    _impl_.impl_.collective_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.collective_done_thunk)
}
inline ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_collective_done_thunk() {
  if (impl_case() != kCollectiveDoneThunk) {
    clear_impl();
    set_has_collective_done_thunk();
    _impl_.impl_.collective_done_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveDoneThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CollectiveDoneThunkProto*>(_impl_.impl_.collective_done_thunk_);
}
inline ::xla::gpu::CollectiveDoneThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_collective_done_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CollectiveDoneThunkProto* _msg = _internal_mutable_collective_done_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.collective_done_thunk)
  return _msg;
}

// .xla.gpu.AllGatherStartThunkProto all_gather_start_thunk = 38;
inline bool ThunkProto::has_all_gather_start_thunk() const {
  return impl_case() == kAllGatherStartThunk;
}
inline bool ThunkProto::_internal_has_all_gather_start_thunk() const {
  return impl_case() == kAllGatherStartThunk;
}
inline void ThunkProto::set_has_all_gather_start_thunk() {
  _impl_._oneof_case_[0] = kAllGatherStartThunk;
}
inline void ThunkProto::clear_all_gather_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kAllGatherStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.all_gather_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.all_gather_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_all_gather_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.all_gather_start_thunk)
  if (impl_case() == kAllGatherStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllGatherStartThunkProto*>(_impl_.impl_.all_gather_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.all_gather_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::AllGatherStartThunkProto& ThunkProto::_internal_all_gather_start_thunk() const {
  return impl_case() == kAllGatherStartThunk ? *reinterpret_cast<::xla::gpu::AllGatherStartThunkProto*>(_impl_.impl_.all_gather_start_thunk_) : reinterpret_cast<::xla::gpu::AllGatherStartThunkProto&>(::xla::gpu::_AllGatherStartThunkProto_default_instance_);
}
inline const ::xla::gpu::AllGatherStartThunkProto& ThunkProto::all_gather_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.all_gather_start_thunk)
  return _internal_all_gather_start_thunk();
}
inline ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_all_gather_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.all_gather_start_thunk)
  if (impl_case() == kAllGatherStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllGatherStartThunkProto*>(_impl_.impl_.all_gather_start_thunk_);
    _impl_.impl_.all_gather_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_all_gather_start_thunk(
    ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_all_gather_start_thunk();
    _impl_.impl_.all_gather_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.all_gather_start_thunk)
}
inline ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_all_gather_start_thunk() {
  if (impl_case() != kAllGatherStartThunk) {
    clear_impl();
    set_has_all_gather_start_thunk();
    _impl_.impl_.all_gather_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::AllGatherStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::AllGatherStartThunkProto*>(_impl_.impl_.all_gather_start_thunk_);
}
inline ::xla::gpu::AllGatherStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_all_gather_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::AllGatherStartThunkProto* _msg = _internal_mutable_all_gather_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.all_gather_start_thunk)
  return _msg;
}

// .xla.gpu.AllReduceStartThunkProto all_reduce_start_thunk = 39;
inline bool ThunkProto::has_all_reduce_start_thunk() const {
  return impl_case() == kAllReduceStartThunk;
}
inline bool ThunkProto::_internal_has_all_reduce_start_thunk() const {
  return impl_case() == kAllReduceStartThunk;
}
inline void ThunkProto::set_has_all_reduce_start_thunk() {
  _impl_._oneof_case_[0] = kAllReduceStartThunk;
}
inline void ThunkProto::clear_all_reduce_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kAllReduceStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.all_reduce_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.all_reduce_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_all_reduce_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.all_reduce_start_thunk)
  if (impl_case() == kAllReduceStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllReduceStartThunkProto*>(_impl_.impl_.all_reduce_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.all_reduce_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::AllReduceStartThunkProto& ThunkProto::_internal_all_reduce_start_thunk() const {
  return impl_case() == kAllReduceStartThunk ? *reinterpret_cast<::xla::gpu::AllReduceStartThunkProto*>(_impl_.impl_.all_reduce_start_thunk_) : reinterpret_cast<::xla::gpu::AllReduceStartThunkProto&>(::xla::gpu::_AllReduceStartThunkProto_default_instance_);
}
inline const ::xla::gpu::AllReduceStartThunkProto& ThunkProto::all_reduce_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.all_reduce_start_thunk)
  return _internal_all_reduce_start_thunk();
}
inline ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_all_reduce_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.all_reduce_start_thunk)
  if (impl_case() == kAllReduceStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllReduceStartThunkProto*>(_impl_.impl_.all_reduce_start_thunk_);
    _impl_.impl_.all_reduce_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_all_reduce_start_thunk(
    ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_all_reduce_start_thunk();
    _impl_.impl_.all_reduce_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.all_reduce_start_thunk)
}
inline ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_all_reduce_start_thunk() {
  if (impl_case() != kAllReduceStartThunk) {
    clear_impl();
    set_has_all_reduce_start_thunk();
    _impl_.impl_.all_reduce_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::AllReduceStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::AllReduceStartThunkProto*>(_impl_.impl_.all_reduce_start_thunk_);
}
inline ::xla::gpu::AllReduceStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_all_reduce_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::AllReduceStartThunkProto* _msg = _internal_mutable_all_reduce_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.all_reduce_start_thunk)
  return _msg;
}

// .xla.gpu.ReduceScatterStartThunkProto reduce_scatter_start_thunk = 40;
inline bool ThunkProto::has_reduce_scatter_start_thunk() const {
  return impl_case() == kReduceScatterStartThunk;
}
inline bool ThunkProto::_internal_has_reduce_scatter_start_thunk() const {
  return impl_case() == kReduceScatterStartThunk;
}
inline void ThunkProto::set_has_reduce_scatter_start_thunk() {
  _impl_._oneof_case_[0] = kReduceScatterStartThunk;
}
inline void ThunkProto::clear_reduce_scatter_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kReduceScatterStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.reduce_scatter_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.reduce_scatter_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_reduce_scatter_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.reduce_scatter_start_thunk)
  if (impl_case() == kReduceScatterStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ReduceScatterStartThunkProto*>(_impl_.impl_.reduce_scatter_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.reduce_scatter_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::ReduceScatterStartThunkProto& ThunkProto::_internal_reduce_scatter_start_thunk() const {
  return impl_case() == kReduceScatterStartThunk ? *reinterpret_cast<::xla::gpu::ReduceScatterStartThunkProto*>(_impl_.impl_.reduce_scatter_start_thunk_) : reinterpret_cast<::xla::gpu::ReduceScatterStartThunkProto&>(::xla::gpu::_ReduceScatterStartThunkProto_default_instance_);
}
inline const ::xla::gpu::ReduceScatterStartThunkProto& ThunkProto::reduce_scatter_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.reduce_scatter_start_thunk)
  return _internal_reduce_scatter_start_thunk();
}
inline ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_reduce_scatter_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.reduce_scatter_start_thunk)
  if (impl_case() == kReduceScatterStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::ReduceScatterStartThunkProto*>(_impl_.impl_.reduce_scatter_start_thunk_);
    _impl_.impl_.reduce_scatter_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_reduce_scatter_start_thunk(
    ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_reduce_scatter_start_thunk();
    _impl_.impl_.reduce_scatter_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.reduce_scatter_start_thunk)
}
inline ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_reduce_scatter_start_thunk() {
  if (impl_case() != kReduceScatterStartThunk) {
    clear_impl();
    set_has_reduce_scatter_start_thunk();
    _impl_.impl_.reduce_scatter_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::ReduceScatterStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::ReduceScatterStartThunkProto*>(_impl_.impl_.reduce_scatter_start_thunk_);
}
inline ::xla::gpu::ReduceScatterStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_reduce_scatter_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::ReduceScatterStartThunkProto* _msg = _internal_mutable_reduce_scatter_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.reduce_scatter_start_thunk)
  return _msg;
}

// .xla.gpu.AllToAllStartThunkProto all_to_all_start_thunk = 41;
inline bool ThunkProto::has_all_to_all_start_thunk() const {
  return impl_case() == kAllToAllStartThunk;
}
inline bool ThunkProto::_internal_has_all_to_all_start_thunk() const {
  return impl_case() == kAllToAllStartThunk;
}
inline void ThunkProto::set_has_all_to_all_start_thunk() {
  _impl_._oneof_case_[0] = kAllToAllStartThunk;
}
inline void ThunkProto::clear_all_to_all_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kAllToAllStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.all_to_all_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.all_to_all_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_all_to_all_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.all_to_all_start_thunk)
  if (impl_case() == kAllToAllStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllToAllStartThunkProto*>(_impl_.impl_.all_to_all_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.all_to_all_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::AllToAllStartThunkProto& ThunkProto::_internal_all_to_all_start_thunk() const {
  return impl_case() == kAllToAllStartThunk ? *reinterpret_cast<::xla::gpu::AllToAllStartThunkProto*>(_impl_.impl_.all_to_all_start_thunk_) : reinterpret_cast<::xla::gpu::AllToAllStartThunkProto&>(::xla::gpu::_AllToAllStartThunkProto_default_instance_);
}
inline const ::xla::gpu::AllToAllStartThunkProto& ThunkProto::all_to_all_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.all_to_all_start_thunk)
  return _internal_all_to_all_start_thunk();
}
inline ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_all_to_all_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.all_to_all_start_thunk)
  if (impl_case() == kAllToAllStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::AllToAllStartThunkProto*>(_impl_.impl_.all_to_all_start_thunk_);
    _impl_.impl_.all_to_all_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_all_to_all_start_thunk(
    ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_all_to_all_start_thunk();
    _impl_.impl_.all_to_all_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.all_to_all_start_thunk)
}
inline ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_all_to_all_start_thunk() {
  if (impl_case() != kAllToAllStartThunk) {
    clear_impl();
    set_has_all_to_all_start_thunk();
    _impl_.impl_.all_to_all_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::AllToAllStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::AllToAllStartThunkProto*>(_impl_.impl_.all_to_all_start_thunk_);
}
inline ::xla::gpu::AllToAllStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_all_to_all_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::AllToAllStartThunkProto* _msg = _internal_mutable_all_to_all_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.all_to_all_start_thunk)
  return _msg;
}

// .xla.gpu.RaggedAllToAllStartThunkProto ragged_all_to_all_start_thunk = 42;
inline bool ThunkProto::has_ragged_all_to_all_start_thunk() const {
  return impl_case() == kRaggedAllToAllStartThunk;
}
inline bool ThunkProto::_internal_has_ragged_all_to_all_start_thunk() const {
  return impl_case() == kRaggedAllToAllStartThunk;
}
inline void ThunkProto::set_has_ragged_all_to_all_start_thunk() {
  _impl_._oneof_case_[0] = kRaggedAllToAllStartThunk;
}
inline void ThunkProto::clear_ragged_all_to_all_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kRaggedAllToAllStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.ragged_all_to_all_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.ragged_all_to_all_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_ragged_all_to_all_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.ragged_all_to_all_start_thunk)
  if (impl_case() == kRaggedAllToAllStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::RaggedAllToAllStartThunkProto*>(_impl_.impl_.ragged_all_to_all_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.ragged_all_to_all_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::RaggedAllToAllStartThunkProto& ThunkProto::_internal_ragged_all_to_all_start_thunk() const {
  return impl_case() == kRaggedAllToAllStartThunk ? *reinterpret_cast<::xla::gpu::RaggedAllToAllStartThunkProto*>(_impl_.impl_.ragged_all_to_all_start_thunk_) : reinterpret_cast<::xla::gpu::RaggedAllToAllStartThunkProto&>(::xla::gpu::_RaggedAllToAllStartThunkProto_default_instance_);
}
inline const ::xla::gpu::RaggedAllToAllStartThunkProto& ThunkProto::ragged_all_to_all_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.ragged_all_to_all_start_thunk)
  return _internal_ragged_all_to_all_start_thunk();
}
inline ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_ragged_all_to_all_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.ragged_all_to_all_start_thunk)
  if (impl_case() == kRaggedAllToAllStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::RaggedAllToAllStartThunkProto*>(_impl_.impl_.ragged_all_to_all_start_thunk_);
    _impl_.impl_.ragged_all_to_all_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_ragged_all_to_all_start_thunk(
    ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_ragged_all_to_all_start_thunk();
    _impl_.impl_.ragged_all_to_all_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.ragged_all_to_all_start_thunk)
}
inline ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_ragged_all_to_all_start_thunk() {
  if (impl_case() != kRaggedAllToAllStartThunk) {
    clear_impl();
    set_has_ragged_all_to_all_start_thunk();
    _impl_.impl_.ragged_all_to_all_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::RaggedAllToAllStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::RaggedAllToAllStartThunkProto*>(_impl_.impl_.ragged_all_to_all_start_thunk_);
}
inline ::xla::gpu::RaggedAllToAllStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_ragged_all_to_all_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::RaggedAllToAllStartThunkProto* _msg = _internal_mutable_ragged_all_to_all_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.ragged_all_to_all_start_thunk)
  return _msg;
}

// .xla.gpu.CollectivePermuteStartThunkProto collective_permute_start_thunk = 43;
inline bool ThunkProto::has_collective_permute_start_thunk() const {
  return impl_case() == kCollectivePermuteStartThunk;
}
inline bool ThunkProto::_internal_has_collective_permute_start_thunk() const {
  return impl_case() == kCollectivePermuteStartThunk;
}
inline void ThunkProto::set_has_collective_permute_start_thunk() {
  _impl_._oneof_case_[0] = kCollectivePermuteStartThunk;
}
inline void ThunkProto::clear_collective_permute_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCollectivePermuteStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.collective_permute_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.collective_permute_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_collective_permute_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.collective_permute_start_thunk)
  if (impl_case() == kCollectivePermuteStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectivePermuteStartThunkProto*>(_impl_.impl_.collective_permute_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.collective_permute_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CollectivePermuteStartThunkProto& ThunkProto::_internal_collective_permute_start_thunk() const {
  return impl_case() == kCollectivePermuteStartThunk ? *reinterpret_cast<::xla::gpu::CollectivePermuteStartThunkProto*>(_impl_.impl_.collective_permute_start_thunk_) : reinterpret_cast<::xla::gpu::CollectivePermuteStartThunkProto&>(::xla::gpu::_CollectivePermuteStartThunkProto_default_instance_);
}
inline const ::xla::gpu::CollectivePermuteStartThunkProto& ThunkProto::collective_permute_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.collective_permute_start_thunk)
  return _internal_collective_permute_start_thunk();
}
inline ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_collective_permute_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.collective_permute_start_thunk)
  if (impl_case() == kCollectivePermuteStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectivePermuteStartThunkProto*>(_impl_.impl_.collective_permute_start_thunk_);
    _impl_.impl_.collective_permute_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_collective_permute_start_thunk(
    ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_collective_permute_start_thunk();
    _impl_.impl_.collective_permute_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.collective_permute_start_thunk)
}
inline ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_collective_permute_start_thunk() {
  if (impl_case() != kCollectivePermuteStartThunk) {
    clear_impl();
    set_has_collective_permute_start_thunk();
    _impl_.impl_.collective_permute_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectivePermuteStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CollectivePermuteStartThunkProto*>(_impl_.impl_.collective_permute_start_thunk_);
}
inline ::xla::gpu::CollectivePermuteStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_collective_permute_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CollectivePermuteStartThunkProto* _msg = _internal_mutable_collective_permute_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.collective_permute_start_thunk)
  return _msg;
}

// .xla.gpu.SendThunkProto send_thunk = 44;
inline bool ThunkProto::has_send_thunk() const {
  return impl_case() == kSendThunk;
}
inline bool ThunkProto::_internal_has_send_thunk() const {
  return impl_case() == kSendThunk;
}
inline void ThunkProto::set_has_send_thunk() {
  _impl_._oneof_case_[0] = kSendThunk;
}
inline void ThunkProto::clear_send_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kSendThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.send_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.send_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE ThunkProto::release_send_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.send_thunk)
  if (impl_case() == kSendThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SendThunkProto*>(_impl_.impl_.send_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.send_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::SendThunkProto& ThunkProto::_internal_send_thunk() const {
  return impl_case() == kSendThunk ? *reinterpret_cast<::xla::gpu::SendThunkProto*>(_impl_.impl_.send_thunk_) : reinterpret_cast<::xla::gpu::SendThunkProto&>(::xla::gpu::_SendThunkProto_default_instance_);
}
inline const ::xla::gpu::SendThunkProto& ThunkProto::send_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.send_thunk)
  return _internal_send_thunk();
}
inline ::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_send_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.send_thunk)
  if (impl_case() == kSendThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::SendThunkProto*>(_impl_.impl_.send_thunk_);
    _impl_.impl_.send_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_send_thunk(
    ::xla::gpu::SendThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_send_thunk();
    _impl_.impl_.send_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.send_thunk)
}
inline ::xla::gpu::SendThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_send_thunk() {
  if (impl_case() != kSendThunk) {
    clear_impl();
    set_has_send_thunk();
    _impl_.impl_.send_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::SendThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::SendThunkProto*>(_impl_.impl_.send_thunk_);
}
inline ::xla::gpu::SendThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_send_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::SendThunkProto* _msg = _internal_mutable_send_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.send_thunk)
  return _msg;
}

// .xla.gpu.RecvThunkProto recv_thunk = 45;
inline bool ThunkProto::has_recv_thunk() const {
  return impl_case() == kRecvThunk;
}
inline bool ThunkProto::_internal_has_recv_thunk() const {
  return impl_case() == kRecvThunk;
}
inline void ThunkProto::set_has_recv_thunk() {
  _impl_._oneof_case_[0] = kRecvThunk;
}
inline void ThunkProto::clear_recv_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kRecvThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.recv_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.recv_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE ThunkProto::release_recv_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.recv_thunk)
  if (impl_case() == kRecvThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::RecvThunkProto*>(_impl_.impl_.recv_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.recv_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::RecvThunkProto& ThunkProto::_internal_recv_thunk() const {
  return impl_case() == kRecvThunk ? *reinterpret_cast<::xla::gpu::RecvThunkProto*>(_impl_.impl_.recv_thunk_) : reinterpret_cast<::xla::gpu::RecvThunkProto&>(::xla::gpu::_RecvThunkProto_default_instance_);
}
inline const ::xla::gpu::RecvThunkProto& ThunkProto::recv_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.recv_thunk)
  return _internal_recv_thunk();
}
inline ::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_recv_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.recv_thunk)
  if (impl_case() == kRecvThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::RecvThunkProto*>(_impl_.impl_.recv_thunk_);
    _impl_.impl_.recv_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_recv_thunk(
    ::xla::gpu::RecvThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_recv_thunk();
    _impl_.impl_.recv_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.recv_thunk)
}
inline ::xla::gpu::RecvThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_recv_thunk() {
  if (impl_case() != kRecvThunk) {
    clear_impl();
    set_has_recv_thunk();
    _impl_.impl_.recv_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::RecvThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::RecvThunkProto*>(_impl_.impl_.recv_thunk_);
}
inline ::xla::gpu::RecvThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_recv_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::RecvThunkProto* _msg = _internal_mutable_recv_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.recv_thunk)
  return _msg;
}

// .xla.gpu.CollectiveBroadcastStartThunkProto collective_broadcast_start_thunk = 46;
inline bool ThunkProto::has_collective_broadcast_start_thunk() const {
  return impl_case() == kCollectiveBroadcastStartThunk;
}
inline bool ThunkProto::_internal_has_collective_broadcast_start_thunk() const {
  return impl_case() == kCollectiveBroadcastStartThunk;
}
inline void ThunkProto::set_has_collective_broadcast_start_thunk() {
  _impl_._oneof_case_[0] = kCollectiveBroadcastStartThunk;
}
inline void ThunkProto::clear_collective_broadcast_start_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCollectiveBroadcastStartThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.collective_broadcast_start_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.collective_broadcast_start_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE ThunkProto::release_collective_broadcast_start_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.collective_broadcast_start_thunk)
  if (impl_case() == kCollectiveBroadcastStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveBroadcastStartThunkProto*>(_impl_.impl_.collective_broadcast_start_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.collective_broadcast_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CollectiveBroadcastStartThunkProto& ThunkProto::_internal_collective_broadcast_start_thunk() const {
  return impl_case() == kCollectiveBroadcastStartThunk ? *reinterpret_cast<::xla::gpu::CollectiveBroadcastStartThunkProto*>(_impl_.impl_.collective_broadcast_start_thunk_) : reinterpret_cast<::xla::gpu::CollectiveBroadcastStartThunkProto&>(::xla::gpu::_CollectiveBroadcastStartThunkProto_default_instance_);
}
inline const ::xla::gpu::CollectiveBroadcastStartThunkProto& ThunkProto::collective_broadcast_start_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.collective_broadcast_start_thunk)
  return _internal_collective_broadcast_start_thunk();
}
inline ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_collective_broadcast_start_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.collective_broadcast_start_thunk)
  if (impl_case() == kCollectiveBroadcastStartThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveBroadcastStartThunkProto*>(_impl_.impl_.collective_broadcast_start_thunk_);
    _impl_.impl_.collective_broadcast_start_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_collective_broadcast_start_thunk(
    ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_collective_broadcast_start_thunk();
    _impl_.impl_.collective_broadcast_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.collective_broadcast_start_thunk)
}
inline ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_collective_broadcast_start_thunk() {
  if (impl_case() != kCollectiveBroadcastStartThunk) {
    clear_impl();
    set_has_collective_broadcast_start_thunk();
    _impl_.impl_.collective_broadcast_start_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveBroadcastStartThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CollectiveBroadcastStartThunkProto*>(_impl_.impl_.collective_broadcast_start_thunk_);
}
inline ::xla::gpu::CollectiveBroadcastStartThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_collective_broadcast_start_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CollectiveBroadcastStartThunkProto* _msg = _internal_mutable_collective_broadcast_start_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.collective_broadcast_start_thunk)
  return _msg;
}

// .xla.gpu.CollectiveGroupThunkProto collective_group_thunk = 47;
inline bool ThunkProto::has_collective_group_thunk() const {
  return impl_case() == kCollectiveGroupThunk;
}
inline bool ThunkProto::_internal_has_collective_group_thunk() const {
  return impl_case() == kCollectiveGroupThunk;
}
inline void ThunkProto::set_has_collective_group_thunk() {
  _impl_._oneof_case_[0] = kCollectiveGroupThunk;
}
inline void ThunkProto::clear_collective_group_thunk() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (impl_case() == kCollectiveGroupThunk) {
    if (GetArena() == nullptr) {
      delete _impl_.impl_.collective_group_thunk_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.impl_.collective_group_thunk_);
    }
    clear_has_impl();
  }
}
inline ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE ThunkProto::release_collective_group_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.collective_group_thunk)
  if (impl_case() == kCollectiveGroupThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveGroupThunkProto*>(_impl_.impl_.collective_group_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.collective_group_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::CollectiveGroupThunkProto& ThunkProto::_internal_collective_group_thunk() const {
  return impl_case() == kCollectiveGroupThunk ? *reinterpret_cast<::xla::gpu::CollectiveGroupThunkProto*>(_impl_.impl_.collective_group_thunk_) : reinterpret_cast<::xla::gpu::CollectiveGroupThunkProto&>(::xla::gpu::_CollectiveGroupThunkProto_default_instance_);
}
inline const ::xla::gpu::CollectiveGroupThunkProto& ThunkProto::collective_group_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.collective_group_thunk)
  return _internal_collective_group_thunk();
}
inline ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_collective_group_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.collective_group_thunk)
  if (impl_case() == kCollectiveGroupThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::CollectiveGroupThunkProto*>(_impl_.impl_.collective_group_thunk_);
    _impl_.impl_.collective_group_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_collective_group_thunk(
    ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_collective_group_thunk();
    _impl_.impl_.collective_group_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.collective_group_thunk)
}
inline ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_collective_group_thunk() {
  if (impl_case() != kCollectiveGroupThunk) {
    clear_impl();
    set_has_collective_group_thunk();
    _impl_.impl_.collective_group_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::CollectiveGroupThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::CollectiveGroupThunkProto*>(_impl_.impl_.collective_group_thunk_);
}
inline ::xla::gpu::CollectiveGroupThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_collective_group_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::CollectiveGroupThunkProto* _msg = _internal_mutable_collective_group_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.collective_group_thunk)
  return _msg;
}

// .xla.gpu.DynamicMemcpyThunkProto dynamic_memcpy_thunk = 48;
inline bool ThunkProto::has_dynamic_memcpy_thunk() const {
  return impl_case() == kDynamicMemcpyThunk;
}
inline bool ThunkProto::_internal_has_dynamic_memcpy_thunk() const {
  return impl_case() == kDynamicMemcpyThunk;
}
inline void ThunkProto::set_has_dynamic_memcpy_thunk() {
  _impl_._oneof_case_[0] = kDynamicMemcpyThunk;
}
inline ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE ThunkProto::release_dynamic_memcpy_thunk() {
  // @@protoc_insertion_point(field_release:xla.gpu.ThunkProto.dynamic_memcpy_thunk)
  if (impl_case() == kDynamicMemcpyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DynamicMemcpyThunkProto*>(_impl_.impl_.dynamic_memcpy_thunk_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.impl_.dynamic_memcpy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::gpu::DynamicMemcpyThunkProto& ThunkProto::_internal_dynamic_memcpy_thunk() const {
  return impl_case() == kDynamicMemcpyThunk ? *reinterpret_cast<::xla::gpu::DynamicMemcpyThunkProto*>(_impl_.impl_.dynamic_memcpy_thunk_) : reinterpret_cast<::xla::gpu::DynamicMemcpyThunkProto&>(::xla::gpu::_DynamicMemcpyThunkProto_default_instance_);
}
inline const ::xla::gpu::DynamicMemcpyThunkProto& ThunkProto::dynamic_memcpy_thunk() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.ThunkProto.dynamic_memcpy_thunk)
  return _internal_dynamic_memcpy_thunk();
}
inline ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE ThunkProto::unsafe_arena_release_dynamic_memcpy_thunk() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.gpu.ThunkProto.dynamic_memcpy_thunk)
  if (impl_case() == kDynamicMemcpyThunk) {
    clear_has_impl();
    auto* temp = reinterpret_cast<::xla::gpu::DynamicMemcpyThunkProto*>(_impl_.impl_.dynamic_memcpy_thunk_);
    _impl_.impl_.dynamic_memcpy_thunk_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ThunkProto::unsafe_arena_set_allocated_dynamic_memcpy_thunk(
    ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_impl();
  if (value) {
    set_has_dynamic_memcpy_thunk();
    _impl_.impl_.dynamic_memcpy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.gpu.ThunkProto.dynamic_memcpy_thunk)
}
inline ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NONNULL ThunkProto::_internal_mutable_dynamic_memcpy_thunk() {
  if (impl_case() != kDynamicMemcpyThunk) {
    clear_impl();
    set_has_dynamic_memcpy_thunk();
    _impl_.impl_.dynamic_memcpy_thunk_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::gpu::DynamicMemcpyThunkProto>(GetArena()));
  }
  return reinterpret_cast<::xla::gpu::DynamicMemcpyThunkProto*>(_impl_.impl_.dynamic_memcpy_thunk_);
}
inline ::xla::gpu::DynamicMemcpyThunkProto* PROTOBUF_NONNULL ThunkProto::mutable_dynamic_memcpy_thunk()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::gpu::DynamicMemcpyThunkProto* _msg = _internal_mutable_dynamic_memcpy_thunk();
  // @@protoc_insertion_point(field_mutable:xla.gpu.ThunkProto.dynamic_memcpy_thunk)
  return _msg;
}

inline bool ThunkProto::has_impl() const {
  return impl_case() != IMPL_NOT_SET;
}
inline void ThunkProto::clear_has_impl() {
  _impl_._oneof_case_[0] = IMPL_NOT_SET;
}
inline ThunkProto::ImplCase ThunkProto::impl_case() const {
  return ThunkProto::ImplCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// SequentialThunkProto

// repeated .xla.gpu.ThunkProto thunks = 1;
inline int SequentialThunkProto::_internal_thunks_size() const {
  return _internal_thunks().size();
}
inline int SequentialThunkProto::thunks_size() const {
  return _internal_thunks_size();
}
inline void SequentialThunkProto::clear_thunks() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.thunks_.Clear();
}
inline ::xla::gpu::ThunkProto* PROTOBUF_NONNULL SequentialThunkProto::mutable_thunks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:xla.gpu.SequentialThunkProto.thunks)
  return _internal_mutable_thunks()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL SequentialThunkProto::mutable_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.gpu.SequentialThunkProto.thunks)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_thunks();
}
inline const ::xla::gpu::ThunkProto& SequentialThunkProto::thunks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.gpu.SequentialThunkProto.thunks)
  return _internal_thunks().Get(index);
}
inline ::xla::gpu::ThunkProto* PROTOBUF_NONNULL SequentialThunkProto::add_thunks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::xla::gpu::ThunkProto* _add = _internal_mutable_thunks()->Add();
  // @@protoc_insertion_point(field_add:xla.gpu.SequentialThunkProto.thunks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>& SequentialThunkProto::thunks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.gpu.SequentialThunkProto.thunks)
  return _internal_thunks();
}
inline const ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>&
SequentialThunkProto::_internal_thunks() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.thunks_;
}
inline ::google::protobuf::RepeatedPtrField<::xla::gpu::ThunkProto>* PROTOBUF_NONNULL
SequentialThunkProto::_internal_mutable_thunks() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.thunks_;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace gpu
}  // namespace xla


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::xla::gpu::ThunkKindProto> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::gpu::ThunkKindProto>() {
  return ::xla::gpu::ThunkKindProto_descriptor();
}
template <>
struct is_proto_enum<::xla::gpu::ReductionKindProto> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::xla::gpu::ReductionKindProto>() {
  return ::xla::gpu::ReductionKindProto_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // xla_2fbackends_2fgpu_2fruntime_2fthunk_2eproto_2epb_2eh
