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 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_FP8: 36 return sizeof(uint8_t); 37 case RTE_ML_IO_TYPE_FP16: 38 return sizeof(uint8_t) * 2; 39 case RTE_ML_IO_TYPE_FP32: 40 return sizeof(uint8_t) * 4; 41 case RTE_ML_IO_TYPE_BFLOAT16: 42 return sizeof(uint8_t) * 2; 43 default: 44 return -EINVAL; 45 } 46 } 47 48 void 49 rte_ml_io_type_to_str(enum rte_ml_io_type type, char *str, int len) 50 { 51 switch (type) { 52 case RTE_ML_IO_TYPE_UNKNOWN: 53 rte_strlcpy(str, "unknown", len); 54 break; 55 case RTE_ML_IO_TYPE_INT8: 56 rte_strlcpy(str, "int8", len); 57 break; 58 case RTE_ML_IO_TYPE_UINT8: 59 rte_strlcpy(str, "uint8", len); 60 break; 61 case RTE_ML_IO_TYPE_INT16: 62 rte_strlcpy(str, "int16", len); 63 break; 64 case RTE_ML_IO_TYPE_UINT16: 65 rte_strlcpy(str, "uint16", len); 66 break; 67 case RTE_ML_IO_TYPE_INT32: 68 rte_strlcpy(str, "int32", len); 69 break; 70 case RTE_ML_IO_TYPE_UINT32: 71 rte_strlcpy(str, "uint32", len); 72 break; 73 case RTE_ML_IO_TYPE_FP8: 74 rte_strlcpy(str, "float8", len); 75 break; 76 case RTE_ML_IO_TYPE_FP16: 77 rte_strlcpy(str, "float16", len); 78 break; 79 case RTE_ML_IO_TYPE_FP32: 80 rte_strlcpy(str, "float32", len); 81 break; 82 case RTE_ML_IO_TYPE_BFLOAT16: 83 rte_strlcpy(str, "bfloat16", len); 84 break; 85 default: 86 rte_strlcpy(str, "invalid", len); 87 } 88 } 89 90 void 91 rte_ml_io_format_to_str(enum rte_ml_io_format format, char *str, int len) 92 { 93 switch (format) { 94 case RTE_ML_IO_FORMAT_NCHW: 95 rte_strlcpy(str, "NCHW", len); 96 break; 97 case RTE_ML_IO_FORMAT_NHWC: 98 rte_strlcpy(str, "NHWC", len); 99 break; 100 case RTE_ML_IO_FORMAT_CHWN: 101 rte_strlcpy(str, "CHWN", len); 102 break; 103 case RTE_ML_IO_FORMAT_3D: 104 rte_strlcpy(str, "3D", len); 105 break; 106 case RTE_ML_IO_FORMAT_2D: 107 rte_strlcpy(str, "Matrix", len); 108 break; 109 case RTE_ML_IO_FORMAT_1D: 110 rte_strlcpy(str, "Vector", len); 111 break; 112 case RTE_ML_IO_FORMAT_SCALAR: 113 rte_strlcpy(str, "Scalar", len); 114 break; 115 default: 116 rte_strlcpy(str, "invalid", len); 117 } 118 } 119