The complete ASL owner is shown directly below.
12type TileHand of enumeration {3 TileHand_T,4 TileHand_U,5 TileHand_M,6 TileHand_N7};8
9type TileDataType of enumeration {10 TileDataType_FP64,11 TileDataType_FP32,12 TileDataType_TF32,13 TileDataType_HF32,14 TileDataType_FP16,15 TileDataType_BF16,16 TileDataType_HiF8,17 TileDataType_E4M3,18 TileDataType_E5M2,19 TileDataType_E3M2,20 TileDataType_E2M3,21 TileDataType_E2M1X2,22 TileDataType_E1M2X2,23 TileDataType_E8M0,24 TileDataType_HiF4X2,25 TileDataType_S64,26 TileDataType_S32,27 TileDataType_S16,28 TileDataType_S8,29 TileDataType_S4X2,30 TileDataType_U64,31 TileDataType_U32,32 TileDataType_U16,33 TileDataType_U8,34 TileDataType_U4X235};36
37type TileDataTypeEncoding of bits(5);38
39pure func TileDataTypeEncodingValid(encoded: TileDataTypeEncoding) => boolean40begin41 let code = UInt(encoded);42 return code <= 14 || (16 <= code && code <= 20) ||43 (24 <= code && code <= 28);44end;45
46pure func TileDataTypeFromEncoding(encoded: TileDataTypeEncoding) => TileDataType47begin48 assert TileDataTypeEncodingValid(encoded);49 case UInt(encoded) of50 when 0 => return TileDataType_FP64;51 when 1 => return TileDataType_FP32;52 when 2 => return TileDataType_TF32;53 when 3 => return TileDataType_HF32;54 when 4 => return TileDataType_FP16;55 when 5 => return TileDataType_BF16;56 when 6 => return TileDataType_HiF8;57 when 7 => return TileDataType_E4M3;58 when 8 => return TileDataType_E5M2;59 when 9 => return TileDataType_E3M2;60 when 10 => return TileDataType_E2M3;61 when 11 => return TileDataType_E2M1X2;62 when 12 => return TileDataType_E1M2X2;63 when 13 => return TileDataType_E8M0;64 when 14 => return TileDataType_HiF4X2;65 when 16 => return TileDataType_S64;66 when 17 => return TileDataType_S32;67 when 18 => return TileDataType_S16;68 when 19 => return TileDataType_S8;69 when 20 => return TileDataType_S4X2;70 when 24 => return TileDataType_U64;71 when 25 => return TileDataType_U32;72 when 26 => return TileDataType_U16;73 when 27 => return TileDataType_U8;74 when 28 => return TileDataType_U4X2;75 otherwise => unreachable;76 end;77end;78
79pure func TileDataTypeToEncoding(data_type: TileDataType)80 => TileDataTypeEncoding81begin82 case data_type of83 when TileDataType_FP64 => return Zeros{5};84 when TileDataType_FP32 => return Zeros{5} + 1;85 when TileDataType_TF32 => return Zeros{5} + 2;86 when TileDataType_HF32 => return Zeros{5} + 3;87 when TileDataType_FP16 => return Zeros{5} + 4;88 when TileDataType_BF16 => return Zeros{5} + 5;89 when TileDataType_HiF8 => return Zeros{5} + 6;90 when TileDataType_E4M3 => return Zeros{5} + 7;91 when TileDataType_E5M2 => return Zeros{5} + 8;92 when TileDataType_E3M2 => return Zeros{5} + 9;93 when TileDataType_E2M3 => return Zeros{5} + 10;94 when TileDataType_E2M1X2 => return Zeros{5} + 11;95 when TileDataType_E1M2X2 => return Zeros{5} + 12;96 when TileDataType_E8M0 => return Zeros{5} + 13;97 when TileDataType_HiF4X2 => return Zeros{5} + 14;98 when TileDataType_S64 => return Zeros{5} + 16;99 when TileDataType_S32 => return Zeros{5} + 17;100 when TileDataType_S16 => return Zeros{5} + 18;101 when TileDataType_S8 => return Zeros{5} + 19;102 when TileDataType_S4X2 => return Zeros{5} + 20;103 when TileDataType_U64 => return Zeros{5} + 24;104 when TileDataType_U32 => return Zeros{5} + 25;105 when TileDataType_U16 => return Zeros{5} + 26;106 when TileDataType_U8 => return Zeros{5} + 27;107 when TileDataType_U4X2 => return Zeros{5} + 28;108 end;109end;110111112constant DTYPE_NONE = '11111';113
114type TileDataLayout of enumeration {115 TileDataLayout_NORM,116 TileDataLayout_ND2DN,117 TileDataLayout_ND2ZN,118 TileDataLayout_ND2NZ,119 TileDataLayout_DN2ND,120 TileDataLayout_DN2ZN,121 TileDataLayout_DN2NZ,122 TileDataLayout_ZN2ND,123 TileDataLayout_ZN2DN,124 TileDataLayout_ZN2NZ,125 TileDataLayout_NZ2ND,126 TileDataLayout_NZ2DN,127 TileDataLayout_NZ2ZN,128 TileDataLayout_ND2M32,129 TileDataLayout_ND2M16,130 TileDataLayout_ND2N8,131 TileDataLayout_M322ND,132 TileDataLayout_M162ND,133 TileDataLayout_N82ND134};135
136type TilePadValue of enumeration {137 TilePad_Zero,138 TilePad_Max,139 TilePad_Min,140 TilePad_Null141};142
143type TileLayout of enumeration {144 TileLayout_RowMajor,145 TileLayout_ColumnMajor,146 TileLayout_ZN,147 TileLayout_NZ,148 TileLayout_CUBE_M16,149 TileLayout_CUBE_M32,150 TileLayout_CUBE_N8,151 152 153 154 TileLayout_ImplementationDefined155};156
157type TileLocation of enumeration {158 TileLocation_Vector,159 TileLocation_Matrix,160 TileLocation_Memory,161 TileLocation_Any162};163