1use std::fmt::{self, Display, Formatter};
2
3use num_enum::{IntoPrimitive, TryFromPrimitive};
4use singe_core::impl_enum_conversion;
5use singe_cusparse_sys as sys;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
11#[repr(u32)]
12pub enum PointerMode {
13 Host = sys::cusparsePointerMode_t::CUSPARSE_POINTER_MODE_HOST as _,
15 Device = sys::cusparsePointerMode_t::CUSPARSE_POINTER_MODE_DEVICE as _,
17}
18
19impl_enum_conversion!(sys::cusparsePointerMode_t, PointerMode);
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
23#[repr(u32)]
24pub enum Action {
25 Symbolic = sys::cusparseAction_t::CUSPARSE_ACTION_SYMBOLIC as _,
27 Numeric = sys::cusparseAction_t::CUSPARSE_ACTION_NUMERIC as _,
29}
30
31impl_enum_conversion!(sys::cusparseAction_t, Action);
32
33#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
48#[repr(u32)]
49pub enum MatrixType {
50 General = sys::cusparseMatrixType_t::CUSPARSE_MATRIX_TYPE_GENERAL as _,
52 Symmetric = sys::cusparseMatrixType_t::CUSPARSE_MATRIX_TYPE_SYMMETRIC as _,
54 Hermitian = sys::cusparseMatrixType_t::CUSPARSE_MATRIX_TYPE_HERMITIAN as _,
56 Triangular = sys::cusparseMatrixType_t::CUSPARSE_MATRIX_TYPE_TRIANGULAR as _,
58}
59
60impl_enum_conversion!(sys::cusparseMatrixType_t, MatrixType);
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
64#[repr(u32)]
65pub enum FillMode {
66 Lower = sys::cusparseFillMode_t::CUSPARSE_FILL_MODE_LOWER as _,
68 Upper = sys::cusparseFillMode_t::CUSPARSE_FILL_MODE_UPPER as _,
70}
71
72impl_enum_conversion!(sys::cusparseFillMode_t, FillMode);
73
74#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
80#[repr(u32)]
81pub enum DiagonalType {
82 NonUnit = sys::cusparseDiagType_t::CUSPARSE_DIAG_TYPE_NON_UNIT as _,
84 Unit = sys::cusparseDiagType_t::CUSPARSE_DIAG_TYPE_UNIT as _,
86}
87
88impl_enum_conversion!(sys::cusparseDiagType_t, DiagonalType);
89
90#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
92#[repr(u32)]
93pub enum IndexBase {
94 Zero = sys::cusparseIndexBase_t::CUSPARSE_INDEX_BASE_ZERO as _,
96 One = sys::cusparseIndexBase_t::CUSPARSE_INDEX_BASE_ONE as _,
98}
99
100impl_enum_conversion!(sys::cusparseIndexBase_t, IndexBase);
101
102#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
104#[repr(u32)]
105pub enum Operation {
106 NonTranspose = sys::cusparseOperation_t::CUSPARSE_OPERATION_NON_TRANSPOSE as _,
108 Transpose = sys::cusparseOperation_t::CUSPARSE_OPERATION_TRANSPOSE as _,
110 ConjugateTranspose = sys::cusparseOperation_t::CUSPARSE_OPERATION_CONJUGATE_TRANSPOSE as _,
112}
113
114impl Operation {
115 pub const HERMITIAN: Self = Self::ConjugateTranspose;
116}
117
118impl_enum_conversion!(sys::cusparseOperation_t, Operation);
119
120#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
123#[repr(u32)]
124pub enum Direction {
125 Row = sys::cusparseDirection_t::CUSPARSE_DIRECTION_ROW as _,
127 Column = sys::cusparseDirection_t::CUSPARSE_DIRECTION_COLUMN as _,
129}
130
131impl_enum_conversion!(sys::cusparseDirection_t, Direction);
132
133#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
134#[repr(u32)]
135pub enum ColorAlgorithm {
136 Algorithm0 = sys::cusparseColorAlg_t::CUSPARSE_COLOR_ALG0 as _,
137 Algorithm1 = sys::cusparseColorAlg_t::CUSPARSE_COLOR_ALG1 as _,
138}
139
140impl_enum_conversion!(sys::cusparseColorAlg_t, ColorAlgorithm);
141
142#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
143#[repr(u32)]
144pub enum CsrToCscAlgorithm {
145 Default = sys::cusparseCsr2CscAlg_t::CUSPARSE_CSR2CSC_ALG_DEFAULT as _,
146}
147
148impl_enum_conversion!(sys::cusparseCsr2CscAlg_t, CsrToCscAlgorithm);
149
150#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
152#[repr(u32)]
153pub enum Format {
154 Csr = sys::cusparseFormat_t::CUSPARSE_FORMAT_CSR as _,
156 Csc = sys::cusparseFormat_t::CUSPARSE_FORMAT_CSC as _,
158 Coo = sys::cusparseFormat_t::CUSPARSE_FORMAT_COO as _,
160 BlockedEll = sys::cusparseFormat_t::CUSPARSE_FORMAT_BLOCKED_ELL as _,
162 Bsr = sys::cusparseFormat_t::CUSPARSE_FORMAT_BSR as _,
164 SlicedEllpack = sys::cusparseFormat_t::CUSPARSE_FORMAT_SLICED_ELLPACK as _,
165}
166
167impl_enum_conversion!(sys::cusparseFormat_t, Format);
168
169#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
171#[repr(u32)]
172pub enum Order {
173 Column = sys::cusparseOrder_t::CUSPARSE_ORDER_COL as _,
175 Row = sys::cusparseOrder_t::CUSPARSE_ORDER_ROW as _,
177}
178
179impl_enum_conversion!(sys::cusparseOrder_t, Order);
180
181#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
183#[repr(u32)]
184pub enum IndexType {
185 I16 = sys::cusparseIndexType_t::CUSPARSE_INDEX_16U as _,
186 I32 = sys::cusparseIndexType_t::CUSPARSE_INDEX_32I as _,
188 I64 = sys::cusparseIndexType_t::CUSPARSE_INDEX_64I as _,
190}
191
192impl_enum_conversion!(sys::cusparseIndexType_t, IndexType);
193
194#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
195#[repr(u32)]
196pub enum SparseMatrixAttribute {
197 FillMode = sys::cusparseSpMatAttribute_t::CUSPARSE_SPMAT_FILL_MODE as _,
198 DiagonalType = sys::cusparseSpMatAttribute_t::CUSPARSE_SPMAT_DIAG_TYPE as _,
199}
200
201impl_enum_conversion!(sys::cusparseSpMatAttribute_t, SparseMatrixAttribute);
202
203pub trait IndexTypeLike: Copy + 'static {
204 fn index_type() -> IndexType;
205}
206
207impl IndexTypeLike for u16 {
208 fn index_type() -> IndexType {
209 IndexType::I16
210 }
211}
212
213impl IndexTypeLike for i32 {
214 fn index_type() -> IndexType {
215 IndexType::I32
216 }
217}
218
219impl IndexTypeLike for i64 {
220 fn index_type() -> IndexType {
221 IndexType::I64
222 }
223}
224
225#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
226#[repr(u32)]
227pub enum SpMvAlgorithm {
228 Default = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_ALG_DEFAULT as _,
229 Csr1 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_CSR_ALG1 as _,
230 Csr2 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_CSR_ALG2 as _,
231 Coo1 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_COO_ALG1 as _,
232 Coo2 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_COO_ALG2 as _,
233 Sell1 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_SELL_ALG1 as _,
234 Bsr1 = sys::cusparseSpMVAlg_t::CUSPARSE_SPMV_BSR_ALG1 as _,
235}
236
237impl_enum_conversion!(sys::cusparseSpMVAlg_t, SpMvAlgorithm);
238
239#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
240#[repr(u32)]
241pub enum SpSvAlgorithm {
242 Default = sys::cusparseSpSVAlg_t::CUSPARSE_SPSV_ALG_DEFAULT as _,
243}
244
245impl_enum_conversion!(sys::cusparseSpSVAlg_t, SpSvAlgorithm);
246
247#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
248#[repr(u32)]
249pub enum SpSvUpdate {
250 General = sys::cusparseSpSVUpdate_t::CUSPARSE_SPSV_UPDATE_GENERAL as _,
251 Diagonal = sys::cusparseSpSVUpdate_t::CUSPARSE_SPSV_UPDATE_DIAGONAL as _,
252}
253
254impl_enum_conversion!(sys::cusparseSpSVUpdate_t, SpSvUpdate);
255
256#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
257#[repr(u32)]
258pub enum SpSMAlgorithm {
259 Default = sys::cusparseSpSMAlg_t::CUSPARSE_SPSM_ALG_DEFAULT as _,
260}
261
262impl_enum_conversion!(sys::cusparseSpSMAlg_t, SpSMAlgorithm);
263
264#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
265#[repr(u32)]
266pub enum SpSmUpdate {
267 General = sys::cusparseSpSMUpdate_t::CUSPARSE_SPSM_UPDATE_GENERAL as _,
268 Diagonal = sys::cusparseSpSMUpdate_t::CUSPARSE_SPSM_UPDATE_DIAGONAL as _,
269}
270
271impl_enum_conversion!(sys::cusparseSpSMUpdate_t, SpSmUpdate);
272
273#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
274#[repr(u32)]
275pub enum SparseToDenseAlgorithm {
276 Default = sys::cusparseSparseToDenseAlg_t::CUSPARSE_SPARSETODENSE_ALG_DEFAULT as _,
277}
278
279impl_enum_conversion!(sys::cusparseSparseToDenseAlg_t, SparseToDenseAlgorithm);
280
281#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
282#[repr(u32)]
283pub enum DenseToSparseAlgorithm {
284 Default = sys::cusparseDenseToSparseAlg_t::CUSPARSE_DENSETOSPARSE_ALG_DEFAULT as _,
285}
286
287impl_enum_conversion!(sys::cusparseDenseToSparseAlg_t, DenseToSparseAlgorithm);
288
289#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
290#[repr(u32)]
291pub enum SpMmAlgorithm {
292 Default = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_ALG_DEFAULT as _,
293 Coo1 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_COO_ALG1 as _,
294 Coo2 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_COO_ALG2 as _,
295 Coo3 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_COO_ALG3 as _,
296 Coo4 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_COO_ALG4 as _,
297 Csr1 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_CSR_ALG1 as _,
298 Csr2 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_CSR_ALG2 as _,
299 Csr3 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_CSR_ALG3 as _,
300 BlockedEll1 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_BLOCKED_ELL_ALG1 as _,
301 Bsr1 = sys::cusparseSpMMAlg_t::CUSPARSE_SPMM_BSR_ALG1 as _,
302}
303
304impl_enum_conversion!(sys::cusparseSpMMAlg_t, SpMmAlgorithm);
305
306#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
307#[repr(u32)]
308pub enum SpMmOpAlgorithm {
309 Default = sys::cusparseSpMMOpAlg_t::CUSPARSE_SPMM_OP_ALG_DEFAULT as _,
310}
311
312impl_enum_conversion!(sys::cusparseSpMMOpAlg_t, SpMmOpAlgorithm);
313
314#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
315#[repr(u32)]
316pub enum SpGemmAlgorithm {
317 Default = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_DEFAULT as _,
318 CsrDeterministic = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_CSR_ALG_DETERMINITIC as _,
319 CsrNondeterministic = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_CSR_ALG_NONDETERMINITIC as _,
320 Algorithm1 = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_ALG1 as _,
321 Algorithm2 = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_ALG2 as _,
322 Algorithm3 = sys::cusparseSpGEMMAlg_t::CUSPARSE_SPGEMM_ALG3 as _,
323}
324
325impl_enum_conversion!(sys::cusparseSpGEMMAlg_t, SpGemmAlgorithm);
326
327#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive, IntoPrimitive)]
328#[repr(u32)]
329pub enum SddmmAlgorithm {
330 Default = sys::cusparseSDDMMAlg_t::CUSPARSE_SDDMM_ALG_DEFAULT as _,
331}
332
333impl_enum_conversion!(sys::cusparseSDDMMAlg_t, SddmmAlgorithm);
334
335impl Display for PointerMode {
336 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
337 match self {
338 Self::Host => write!(f, "CUSPARSE_POINTER_MODE_HOST"),
339 Self::Device => write!(f, "CUSPARSE_POINTER_MODE_DEVICE"),
340 }
341 }
342}
343
344impl Display for Action {
345 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
346 match self {
347 Self::Symbolic => write!(f, "CUSPARSE_ACTION_SYMBOLIC"),
348 Self::Numeric => write!(f, "CUSPARSE_ACTION_NUMERIC"),
349 }
350 }
351}
352
353impl Display for MatrixType {
354 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
355 match self {
356 Self::General => write!(f, "CUSPARSE_MATRIX_TYPE_GENERAL"),
357 Self::Symmetric => write!(f, "CUSPARSE_MATRIX_TYPE_SYMMETRIC"),
358 Self::Hermitian => write!(f, "CUSPARSE_MATRIX_TYPE_HERMITIAN"),
359 Self::Triangular => write!(f, "CUSPARSE_MATRIX_TYPE_TRIANGULAR"),
360 }
361 }
362}
363
364impl Display for FillMode {
365 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
366 match self {
367 Self::Lower => write!(f, "CUSPARSE_FILL_MODE_LOWER"),
368 Self::Upper => write!(f, "CUSPARSE_FILL_MODE_UPPER"),
369 }
370 }
371}
372
373impl Display for DiagonalType {
374 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
375 match self {
376 Self::NonUnit => write!(f, "CUSPARSE_DIAG_TYPE_NON_UNIT"),
377 Self::Unit => write!(f, "CUSPARSE_DIAG_TYPE_UNIT"),
378 }
379 }
380}
381
382impl Display for IndexBase {
383 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
384 match self {
385 Self::Zero => write!(f, "CUSPARSE_INDEX_BASE_ZERO"),
386 Self::One => write!(f, "CUSPARSE_INDEX_BASE_ONE"),
387 }
388 }
389}
390
391impl Display for Operation {
392 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
393 match self {
394 Self::NonTranspose => write!(f, "CUSPARSE_OPERATION_NON_TRANSPOSE"),
395 Self::Transpose => write!(f, "CUSPARSE_OPERATION_TRANSPOSE"),
396 Self::ConjugateTranspose => write!(f, "CUSPARSE_OPERATION_CONJUGATE_TRANSPOSE"),
397 }
398 }
399}
400
401impl Display for Direction {
402 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
403 match self {
404 Self::Row => write!(f, "CUSPARSE_DIRECTION_ROW"),
405 Self::Column => write!(f, "CUSPARSE_DIRECTION_COLUMN"),
406 }
407 }
408}
409
410impl Display for ColorAlgorithm {
411 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
412 match self {
413 Self::Algorithm0 => write!(f, "CUSPARSE_COLOR_ALG0"),
414 Self::Algorithm1 => write!(f, "CUSPARSE_COLOR_ALG1"),
415 }
416 }
417}
418
419impl Display for CsrToCscAlgorithm {
420 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
421 match self {
422 Self::Default => write!(f, "CUSPARSE_CSR2CSC_ALG_DEFAULT"),
423 }
424 }
425}
426
427impl Display for Format {
428 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
429 match self {
430 Self::Csr => write!(f, "CUSPARSE_FORMAT_CSR"),
431 Self::Csc => write!(f, "CUSPARSE_FORMAT_CSC"),
432 Self::Coo => write!(f, "CUSPARSE_FORMAT_COO"),
433 Self::BlockedEll => write!(f, "CUSPARSE_FORMAT_BLOCKED_ELL"),
434 Self::Bsr => write!(f, "CUSPARSE_FORMAT_BSR"),
435 Self::SlicedEllpack => write!(f, "CUSPARSE_FORMAT_SLICED_ELLPACK"),
436 }
437 }
438}
439
440impl Display for Order {
441 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
442 match self {
443 Self::Column => write!(f, "CUSPARSE_ORDER_COL"),
444 Self::Row => write!(f, "CUSPARSE_ORDER_ROW"),
445 }
446 }
447}
448
449impl Display for IndexType {
450 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
451 match self {
452 Self::I16 => write!(f, "CUSPARSE_INDEX_16U"),
453 Self::I32 => write!(f, "CUSPARSE_INDEX_32I"),
454 Self::I64 => write!(f, "CUSPARSE_INDEX_64I"),
455 }
456 }
457}
458
459impl Display for SparseMatrixAttribute {
460 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
461 match self {
462 Self::FillMode => write!(f, "CUSPARSE_SPMAT_FILL_MODE"),
463 Self::DiagonalType => write!(f, "CUSPARSE_SPMAT_DIAG_TYPE"),
464 }
465 }
466}
467
468impl Display for SpMvAlgorithm {
469 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
470 match self {
471 Self::Default => write!(f, "CUSPARSE_SPMV_ALG_DEFAULT"),
472 Self::Csr1 => write!(f, "CUSPARSE_SPMV_CSR_ALG1"),
473 Self::Csr2 => write!(f, "CUSPARSE_SPMV_CSR_ALG2"),
474 Self::Coo1 => write!(f, "CUSPARSE_SPMV_COO_ALG1"),
475 Self::Coo2 => write!(f, "CUSPARSE_SPMV_COO_ALG2"),
476 Self::Sell1 => write!(f, "CUSPARSE_SPMV_SELL_ALG1"),
477 Self::Bsr1 => write!(f, "CUSPARSE_SPMV_BSR_ALG1"),
478 }
479 }
480}
481
482impl Display for SpSvAlgorithm {
483 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
484 match self {
485 Self::Default => write!(f, "CUSPARSE_SPSV_ALG_DEFAULT"),
486 }
487 }
488}
489
490impl Display for SpSvUpdate {
491 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
492 match self {
493 Self::General => write!(f, "CUSPARSE_SPSV_UPDATE_GENERAL"),
494 Self::Diagonal => write!(f, "CUSPARSE_SPSV_UPDATE_DIAGONAL"),
495 }
496 }
497}
498
499impl Display for SpSMAlgorithm {
500 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
501 match self {
502 Self::Default => write!(f, "CUSPARSE_SPSM_ALG_DEFAULT"),
503 }
504 }
505}
506
507impl Display for SpSmUpdate {
508 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
509 match self {
510 Self::General => write!(f, "CUSPARSE_SPSM_UPDATE_GENERAL"),
511 Self::Diagonal => write!(f, "CUSPARSE_SPSM_UPDATE_DIAGONAL"),
512 }
513 }
514}
515
516impl Display for SparseToDenseAlgorithm {
517 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
518 match self {
519 Self::Default => write!(f, "CUSPARSE_SPARSETODENSE_ALG_DEFAULT"),
520 }
521 }
522}
523
524impl Display for DenseToSparseAlgorithm {
525 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
526 match self {
527 Self::Default => write!(f, "CUSPARSE_DENSETOSPARSE_ALG_DEFAULT"),
528 }
529 }
530}
531
532impl Display for SpMmAlgorithm {
533 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
534 match self {
535 Self::Default => write!(f, "CUSPARSE_SPMM_ALG_DEFAULT"),
536 Self::Coo1 => write!(f, "CUSPARSE_SPMM_COO_ALG1"),
537 Self::Coo2 => write!(f, "CUSPARSE_SPMM_COO_ALG2"),
538 Self::Coo3 => write!(f, "CUSPARSE_SPMM_COO_ALG3"),
539 Self::Coo4 => write!(f, "CUSPARSE_SPMM_COO_ALG4"),
540 Self::Csr1 => write!(f, "CUSPARSE_SPMM_CSR_ALG1"),
541 Self::Csr2 => write!(f, "CUSPARSE_SPMM_CSR_ALG2"),
542 Self::Csr3 => write!(f, "CUSPARSE_SPMM_CSR_ALG3"),
543 Self::BlockedEll1 => write!(f, "CUSPARSE_SPMM_BLOCKED_ELL_ALG1"),
544 Self::Bsr1 => write!(f, "CUSPARSE_SPMM_BSR_ALG1"),
545 }
546 }
547}
548
549impl Display for SpMmOpAlgorithm {
550 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
551 match self {
552 Self::Default => write!(f, "CUSPARSE_SPMM_OP_ALG_DEFAULT"),
553 }
554 }
555}
556
557impl Display for SpGemmAlgorithm {
558 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
559 match self {
560 Self::Default => write!(f, "CUSPARSE_SPGEMM_DEFAULT"),
561 Self::CsrDeterministic => {
562 write!(f, "CUSPARSE_SPGEMM_CSR_ALG_DETERMINITIC")
563 }
564 Self::CsrNondeterministic => {
565 write!(f, "CUSPARSE_SPGEMM_CSR_ALG_NONDETERMINITIC")
566 }
567 Self::Algorithm1 => write!(f, "CUSPARSE_SPGEMM_ALG1"),
568 Self::Algorithm2 => write!(f, "CUSPARSE_SPGEMM_ALG2"),
569 Self::Algorithm3 => write!(f, "CUSPARSE_SPGEMM_ALG3"),
570 }
571 }
572}
573
574impl Display for SddmmAlgorithm {
575 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
576 match self {
577 Self::Default => write!(f, "CUSPARSE_SDDMM_ALG_DEFAULT"),
578 }
579 }
580}