apple_mps/generated/
neural.rs1use crate::ffi;
2use core::ffi::c_void;
3use core::ptr;
4
5macro_rules! opaque_generated_handle {
6 ($name:ident) => {
7 pub struct $name {
8 ptr: *mut c_void,
9 }
10
11 unsafe impl Send for $name {}
12 unsafe impl Sync for $name {}
13
14 impl Drop for $name {
15 fn drop(&mut self) {
16 if !self.ptr.is_null() {
17 unsafe { ffi::mps_object_release(self.ptr) };
18 self.ptr = ptr::null_mut();
19 }
20 }
21 }
22
23 impl $name {
24 #[must_use]
25 pub const fn as_ptr(&self) -> *mut c_void {
26 self.ptr
27 }
28
29 #[must_use]
33 pub unsafe fn retained_from_raw(ptr: *mut c_void) -> Option<Self> {
34 let retained = unsafe { ffi::mps_object_retain(ptr) };
35 if retained.is_null() {
36 None
37 } else {
38 Some(Self { ptr: retained })
39 }
40 }
41 }
42 };
43}
44
45macro_rules! raw_value_type {
46 ($name:ident, $raw:ty) => {
47 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
48 #[repr(transparent)]
49 pub struct $name(pub $raw);
50
51 impl $name {
52 #[must_use]
53 pub const fn from_raw(raw: $raw) -> Self {
54 Self(raw)
55 }
56
57 #[must_use]
58 pub const fn as_raw(self) -> $raw {
59 self.0
60 }
61 }
62
63 impl From<$raw> for $name {
64 fn from(value: $raw) -> Self {
65 Self(value)
66 }
67 }
68
69 impl From<$name> for $raw {
70 fn from(value: $name) -> Self {
71 value.0
72 }
73 }
74 };
75}
76
77raw_value_type!(CnnBatchNormalizationFlags, usize);
78raw_value_type!(CnnConvolutionGradientOption, usize);
79raw_value_type!(NNComparisonType, usize);
80raw_value_type!(NNPaddingMethod, usize);
81raw_value_type!(NNTrainingStyle, usize);
82raw_value_type!(CnnBinaryConvolutionFlags, usize);
83raw_value_type!(CnnBinaryConvolutionType, usize);
84raw_value_type!(CnnLossType, usize);
85raw_value_type!(CnnNeuronType, usize);
86raw_value_type!(CnnReductionType, usize);
87raw_value_type!(CnnWeightsQuantizationType, usize);
88raw_value_type!(RnnMatrixId, usize);
89opaque_generated_handle!(CnnAdd);
90opaque_generated_handle!(CnnAddGradient);
91opaque_generated_handle!(CnnArithmetic);
92opaque_generated_handle!(CnnArithmeticGradient);
93opaque_generated_handle!(CnnArithmeticGradientState);
94opaque_generated_handle!(CnnBatchNormalization);
95opaque_generated_handle!(CnnBatchNormalizationGradient);
96opaque_generated_handle!(CnnBatchNormalizationGradientNode);
97opaque_generated_handle!(CnnBatchNormalizationState);
98opaque_generated_handle!(CnnBatchNormalizationStatistics);
99opaque_generated_handle!(CnnBatchNormalizationStatisticsGradient);
100opaque_generated_handle!(CnnBinaryConvolution);
101opaque_generated_handle!(CnnBinaryConvolutionNode);
102opaque_generated_handle!(CnnBinaryFullyConnected);
103opaque_generated_handle!(CnnBinaryFullyConnectedNode);
104opaque_generated_handle!(CnnBinaryKernel);
105opaque_generated_handle!(CnnConvolutionGradient);
106opaque_generated_handle!(CnnConvolutionGradientNode);
107opaque_generated_handle!(CnnConvolutionGradientStateNode);
108opaque_generated_handle!(CnnConvolutionTranspose);
109opaque_generated_handle!(CnnConvolutionTransposeGradient);
110opaque_generated_handle!(CnnConvolutionTransposeGradientNode);
111opaque_generated_handle!(CnnConvolutionTransposeGradientState);
112opaque_generated_handle!(CnnConvolutionTransposeGradientStateNode);
113opaque_generated_handle!(CnnConvolutionTransposeNode);
114opaque_generated_handle!(CnnCrossChannelNormalization);
115opaque_generated_handle!(CnnCrossChannelNormalizationGradient);
116opaque_generated_handle!(CnnCrossChannelNormalizationGradientNode);
117opaque_generated_handle!(CnnCrossChannelNormalizationNode);
118opaque_generated_handle!(CnnDepthWiseConvolutionDescriptor);
119opaque_generated_handle!(CnnDilatedPoolingMax);
120opaque_generated_handle!(CnnDilatedPoolingMaxGradient);
121opaque_generated_handle!(CnnDilatedPoolingMaxGradientNode);
122opaque_generated_handle!(CnnDilatedPoolingMaxNode);
123opaque_generated_handle!(CnnDivide);
124opaque_generated_handle!(CnnDropout);
125opaque_generated_handle!(CnnDropoutGradient);
126opaque_generated_handle!(CnnDropoutGradientNode);
127opaque_generated_handle!(CnnDropoutGradientState);
128opaque_generated_handle!(CnnDropoutNode);
129opaque_generated_handle!(CnnFullyConnected);
130opaque_generated_handle!(CnnFullyConnectedGradient);
131opaque_generated_handle!(CnnFullyConnectedGradientNode);
132opaque_generated_handle!(CnnFullyConnectedNode);
133opaque_generated_handle!(CnnGradientKernel);
134opaque_generated_handle!(CnnGroupNormalization);
135opaque_generated_handle!(CnnGroupNormalizationGradient);
136opaque_generated_handle!(CnnGroupNormalizationGradientNode);
137opaque_generated_handle!(CnnGroupNormalizationGradientState);
138opaque_generated_handle!(CnnInstanceNormalization);
139opaque_generated_handle!(CnnInstanceNormalizationGradient);
140opaque_generated_handle!(CnnInstanceNormalizationGradientNode);
141opaque_generated_handle!(CnnInstanceNormalizationGradientState);
142opaque_generated_handle!(CnnKernel);
143opaque_generated_handle!(CnnLocalContrastNormalization);
144opaque_generated_handle!(CnnLocalContrastNormalizationGradient);
145opaque_generated_handle!(CnnLocalContrastNormalizationGradientNode);
146opaque_generated_handle!(CnnLocalContrastNormalizationNode);
147opaque_generated_handle!(CnnLogSoftMax);
148opaque_generated_handle!(CnnLogSoftMaxGradient);
149opaque_generated_handle!(CnnLogSoftMaxGradientNode);
150opaque_generated_handle!(CnnLogSoftMaxNode);
151opaque_generated_handle!(CnnLoss);
152opaque_generated_handle!(CnnLossDataDescriptor);
153opaque_generated_handle!(CnnLossDescriptor);
154opaque_generated_handle!(CnnLossLabels);
155opaque_generated_handle!(CnnLossNode);
156opaque_generated_handle!(CnnMultiaryKernel);
157opaque_generated_handle!(CnnMultiply);
158opaque_generated_handle!(CnnMultiplyGradient);
159opaque_generated_handle!(CnnNeuron);
160opaque_generated_handle!(CnnNeuronAbsolute);
161opaque_generated_handle!(CnnNeuronAbsoluteNode);
162opaque_generated_handle!(CnnNeuronELU);
163opaque_generated_handle!(CnnNeuronELUNode);
164opaque_generated_handle!(CnnNeuronExponential);
165opaque_generated_handle!(CnnNeuronExponentialNode);
166opaque_generated_handle!(CnnNeuronGeLUNode);
167opaque_generated_handle!(CnnNeuronGradient);
168opaque_generated_handle!(CnnNeuronGradientNode);
169opaque_generated_handle!(CnnNeuronHardSigmoid);
170opaque_generated_handle!(CnnNeuronHardSigmoidNode);
171opaque_generated_handle!(CnnNeuronLinear);
172opaque_generated_handle!(CnnNeuronLinearNode);
173opaque_generated_handle!(CnnNeuronLogarithm);
174opaque_generated_handle!(CnnNeuronLogarithmNode);
175opaque_generated_handle!(CnnNeuronNode);
176opaque_generated_handle!(CnnNeuronPReLU);
177opaque_generated_handle!(CnnNeuronPReLUNode);
178opaque_generated_handle!(CnnNeuronPower);
179opaque_generated_handle!(CnnNeuronPowerNode);
180opaque_generated_handle!(CnnNeuronReLU);
181opaque_generated_handle!(CnnNeuronReLUN);
182opaque_generated_handle!(CnnNeuronReLUNNode);
183opaque_generated_handle!(CnnNeuronSigmoid);
184opaque_generated_handle!(CnnNeuronSigmoidNode);
185opaque_generated_handle!(CnnNeuronSoftPlus);
186opaque_generated_handle!(CnnNeuronSoftPlusNode);
187opaque_generated_handle!(CnnNeuronSoftSign);
188opaque_generated_handle!(CnnNeuronSoftSignNode);
189opaque_generated_handle!(CnnNeuronTanH);
190opaque_generated_handle!(CnnNeuronTanHNode);
191opaque_generated_handle!(CnnNormalizationGammaAndBetaState);
192opaque_generated_handle!(CnnNormalizationMeanAndVarianceState);
193opaque_generated_handle!(CnnNormalizationNode);
194opaque_generated_handle!(CnnPooling);
195opaque_generated_handle!(CnnPoolingAverage);
196opaque_generated_handle!(CnnPoolingAverageGradient);
197opaque_generated_handle!(CnnPoolingAverageGradientNode);
198opaque_generated_handle!(CnnPoolingAverageNode);
199opaque_generated_handle!(CnnPoolingGradient);
200opaque_generated_handle!(CnnPoolingGradientNode);
201opaque_generated_handle!(CnnPoolingL2Norm);
202opaque_generated_handle!(CnnPoolingL2NormGradient);
203opaque_generated_handle!(CnnPoolingL2NormGradientNode);
204opaque_generated_handle!(CnnPoolingL2NormNode);
205opaque_generated_handle!(CnnPoolingMax);
206opaque_generated_handle!(CnnPoolingMaxGradient);
207opaque_generated_handle!(CnnPoolingMaxGradientNode);
208opaque_generated_handle!(CnnPoolingNode);
209opaque_generated_handle!(CnnSoftMax);
210opaque_generated_handle!(CnnSoftMaxGradient);
211opaque_generated_handle!(CnnSoftMaxGradientNode);
212opaque_generated_handle!(CnnSpatialNormalization);
213opaque_generated_handle!(CnnSpatialNormalizationGradient);
214opaque_generated_handle!(CnnSpatialNormalizationGradientNode);
215opaque_generated_handle!(CnnSpatialNormalizationNode);
216opaque_generated_handle!(CnnSubPixelConvolutionDescriptor);
217opaque_generated_handle!(CnnSubtract);
218opaque_generated_handle!(CnnSubtractGradient);
219opaque_generated_handle!(CnnUpsampling);
220opaque_generated_handle!(CnnUpsamplingBilinear);
221opaque_generated_handle!(CnnUpsamplingBilinearGradient);
222opaque_generated_handle!(CnnUpsamplingBilinearGradientNode);
223opaque_generated_handle!(CnnUpsamplingBilinearNode);
224opaque_generated_handle!(CnnUpsamplingGradient);
225opaque_generated_handle!(CnnUpsamplingNearest);
226opaque_generated_handle!(CnnUpsamplingNearestGradient);
227opaque_generated_handle!(CnnUpsamplingNearestGradientNode);
228opaque_generated_handle!(CnnYOLOLoss);
229opaque_generated_handle!(CnnYOLOLossDescriptor);
230opaque_generated_handle!(CnnYOLOLossNode);
231opaque_generated_handle!(NNAdditionGradientNode);
232opaque_generated_handle!(NNAdditionNode);
233opaque_generated_handle!(NNArithmeticGradientNode);
234opaque_generated_handle!(NNArithmeticGradientStateNode);
235opaque_generated_handle!(NNBilinearScaleNode);
236opaque_generated_handle!(NNBinaryArithmeticNode);
237opaque_generated_handle!(NNBinaryGradientState);
238opaque_generated_handle!(NNBinaryGradientStateNode);
239opaque_generated_handle!(NNCompare);
240opaque_generated_handle!(NNComparisonNode);
241opaque_generated_handle!(NNConcatenationGradientNode);
242opaque_generated_handle!(NNConcatenationNode);
243opaque_generated_handle!(NNCropAndResizeBilinear);
244opaque_generated_handle!(NNDefaultPadding);
245opaque_generated_handle!(NNDivisionNode);
246opaque_generated_handle!(NNFilterNode);
247opaque_generated_handle!(NNForwardLoss);
248opaque_generated_handle!(NNForwardLossNode);
249opaque_generated_handle!(NNGradientFilterNode);
250opaque_generated_handle!(NNGradientState);
251opaque_generated_handle!(NNGradientStateNode);
252opaque_generated_handle!(NNGramMatrixCalculation);
253opaque_generated_handle!(NNGramMatrixCalculationGradient);
254opaque_generated_handle!(NNGramMatrixCalculationGradientNode);
255opaque_generated_handle!(NNGramMatrixCalculationNode);
256opaque_generated_handle!(NNGridSample);
257opaque_generated_handle!(NNInitialGradient);
258opaque_generated_handle!(NNInitialGradientNode);
259opaque_generated_handle!(NNLabelsNode);
260opaque_generated_handle!(NNLanczosScaleNode);
261opaque_generated_handle!(NNLocalCorrelation);
262opaque_generated_handle!(NNLossGradient);
263opaque_generated_handle!(NNLossGradientNode);
264opaque_generated_handle!(NNMultiaryGradientState);
265opaque_generated_handle!(NNMultiaryGradientStateNode);
266opaque_generated_handle!(NNMultiplicationGradientNode);
267opaque_generated_handle!(NNMultiplicationNode);
268opaque_generated_handle!(NNNeuronDescriptor);
269opaque_generated_handle!(NNPad);
270opaque_generated_handle!(NNPadGradient);
271opaque_generated_handle!(NNPadGradientNode);
272opaque_generated_handle!(NNPadNode);
273opaque_generated_handle!(NNReduceBinary);
274opaque_generated_handle!(NNReduceColumnMax);
275opaque_generated_handle!(NNReduceColumnMean);
276opaque_generated_handle!(NNReduceColumnMin);
277opaque_generated_handle!(NNReduceColumnSum);
278opaque_generated_handle!(NNReduceFeatureChannelsAndWeightsMean);
279opaque_generated_handle!(NNReduceFeatureChannelsAndWeightsSum);
280opaque_generated_handle!(NNReduceFeatureChannelsArgumentMax);
281opaque_generated_handle!(NNReduceFeatureChannelsArgumentMin);
282opaque_generated_handle!(NNReduceFeatureChannelsMax);
283opaque_generated_handle!(NNReduceFeatureChannelsMean);
284opaque_generated_handle!(NNReduceFeatureChannelsMin);
285opaque_generated_handle!(NNReduceFeatureChannelsSum);
286opaque_generated_handle!(NNReduceRowMax);
287opaque_generated_handle!(NNReduceRowMean);
288opaque_generated_handle!(NNReduceRowMin);
289opaque_generated_handle!(NNReduceRowSum);
290opaque_generated_handle!(NNReduceUnary);
291opaque_generated_handle!(NNReductionColumnMaxNode);
292opaque_generated_handle!(NNReductionColumnMeanNode);
293opaque_generated_handle!(NNReductionColumnMinNode);
294opaque_generated_handle!(NNReductionColumnSumNode);
295opaque_generated_handle!(NNReductionFeatureChannelsArgumentMaxNode);
296opaque_generated_handle!(NNReductionFeatureChannelsArgumentMinNode);
297opaque_generated_handle!(NNReductionFeatureChannelsMaxNode);
298opaque_generated_handle!(NNReductionFeatureChannelsMeanNode);
299opaque_generated_handle!(NNReductionFeatureChannelsMinNode);
300opaque_generated_handle!(NNReductionFeatureChannelsSumNode);
301opaque_generated_handle!(NNReductionRowMaxNode);
302opaque_generated_handle!(NNReductionRowMeanNode);
303opaque_generated_handle!(NNReductionRowMinNode);
304opaque_generated_handle!(NNReductionRowSumNode);
305opaque_generated_handle!(NNReductionSpatialMeanGradientNode);
306opaque_generated_handle!(NNReductionSpatialMeanNode);
307opaque_generated_handle!(NNReshape);
308opaque_generated_handle!(NNReshapeGradient);
309opaque_generated_handle!(NNReshapeGradientNode);
310opaque_generated_handle!(NNReshapeNode);
311opaque_generated_handle!(NNResizeBilinear);
312opaque_generated_handle!(NNScaleNode);
313opaque_generated_handle!(NNSlice);
314opaque_generated_handle!(NNStateNode);
315opaque_generated_handle!(NNSubtractionGradientNode);
316opaque_generated_handle!(NNSubtractionNode);
317opaque_generated_handle!(NNUnaryReductionNode);
318opaque_generated_handle!(RnnMatrixInferenceLayer);
319opaque_generated_handle!(RnnMatrixTrainingLayer);
320opaque_generated_handle!(RnnMatrixTrainingState);
321opaque_generated_handle!(RnnRecurrentMatrixState);
322opaque_generated_handle!(CnnBatchNormalizationDataSource);
323opaque_generated_handle!(CnnConvolutionDataSource);
324opaque_generated_handle!(CnnGroupNormalizationDataSource);
325opaque_generated_handle!(CnnInstanceNormalizationDataSource);
326opaque_generated_handle!(Handle);
327opaque_generated_handle!(NNGramMatrixCallback);
328opaque_generated_handle!(NNLossCallback);
329opaque_generated_handle!(NNPadding);
330opaque_generated_handle!(NNTrainableNode);