1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2022 Marvell.
3 */
4
5 #include <errno.h>
6 #include <stdint.h>
7
8 #include <rte_mldev.h>
9 #include <rte_string_fns.h>
10
11 #include "mldev_utils.h"
12
13 /* Description:
14 * This file implements Machine Learning utility routines, except type conversion routines.
15 */
16
17 int
rte_ml_io_type_size_get(enum rte_ml_io_type type)18 rte_ml_io_type_size_get(enum rte_ml_io_type type)
19 {
20 switch (type) {
21 case RTE_ML_IO_TYPE_UNKNOWN:
22 return -EINVAL;
23 case RTE_ML_IO_TYPE_INT8:
24 return sizeof(int8_t);
25 case RTE_ML_IO_TYPE_UINT8:
26 return sizeof(uint8_t);
27 case RTE_ML_IO_TYPE_INT16:
28 return sizeof(int16_t);
29 case RTE_ML_IO_TYPE_UINT16:
30 return sizeof(uint16_t);
31 case RTE_ML_IO_TYPE_INT32:
32 return sizeof(int32_t);
33 case RTE_ML_IO_TYPE_UINT32:
34 return sizeof(uint32_t);
35 case RTE_ML_IO_TYPE_INT64:
36 return sizeof(int64_t);
37 case RTE_ML_IO_TYPE_UINT64:
38 return sizeof(uint64_t);
39 case RTE_ML_IO_TYPE_FP8:
40 return sizeof(uint8_t);
41 case RTE_ML_IO_TYPE_FP16:
42 return sizeof(uint8_t) * 2;
43 case RTE_ML_IO_TYPE_FP32:
44 return sizeof(uint8_t) * 4;
45 case RTE_ML_IO_TYPE_BFLOAT16:
46 return sizeof(uint8_t) * 2;
47 default:
48 return -EINVAL;
49 }
50 }
51
52 void
rte_ml_io_type_to_str(enum rte_ml_io_type type,char * str,int len)53 rte_ml_io_type_to_str(enum rte_ml_io_type type, char *str, int len)
54 {
55 switch (type) {
56 case RTE_ML_IO_TYPE_UNKNOWN:
57 rte_strlcpy(str, "unknown", len);
58 break;
59 case RTE_ML_IO_TYPE_INT8:
60 rte_strlcpy(str, "int8", len);
61 break;
62 case RTE_ML_IO_TYPE_UINT8:
63 rte_strlcpy(str, "uint8", len);
64 break;
65 case RTE_ML_IO_TYPE_INT16:
66 rte_strlcpy(str, "int16", len);
67 break;
68 case RTE_ML_IO_TYPE_UINT16:
69 rte_strlcpy(str, "uint16", len);
70 break;
71 case RTE_ML_IO_TYPE_INT32:
72 rte_strlcpy(str, "int32", len);
73 break;
74 case RTE_ML_IO_TYPE_UINT32:
75 rte_strlcpy(str, "uint32", len);
76 break;
77 case RTE_ML_IO_TYPE_FP8:
78 rte_strlcpy(str, "float8", len);
79 break;
80 case RTE_ML_IO_TYPE_FP16:
81 rte_strlcpy(str, "float16", len);
82 break;
83 case RTE_ML_IO_TYPE_FP32:
84 rte_strlcpy(str, "float32", len);
85 break;
86 case RTE_ML_IO_TYPE_BFLOAT16:
87 rte_strlcpy(str, "bfloat16", len);
88 break;
89 default:
90 rte_strlcpy(str, "invalid", len);
91 }
92 }
93