目的与范围
目的与范围
本单元拥有 Tile 操作手、公开的五位数据类型命名空间、Tile 数据布局与存储布局枚举、填充值以及位置意图。
它构成已编码 DataType 字段与数值/Tile 执行归属单元所使用类型化值之间的边界。
PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES下面直接显示完整的 ASL 所有者。
// PTO-UNIT: {"id":"PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES","surface":"arch","classification":["data-types","tile-data-types"],"depends_on":["PTO-ARCH-FEATURES-MX-FORMATS"],"field_domains":[{"id":"PTO-FIELD-BLOCK-DATATYPE","width":5,"role":"Selects the Tile element data type carried by Block data attributes and typed Block starts.","zero_meaning":"Code zero selects FP64; zero never means absent, inherited, NONE, or NULL.","assigned":[{"value":0,"meaning":"FP64"},{"value":1,"meaning":"FP32"},{"value":2,"meaning":"TF32"},{"value":3,"meaning":"HF32"},{"value":4,"meaning":"FP16"},{"value":5,"meaning":"BF16"},{"value":6,"meaning":"HiF8"},{"value":7,"meaning":"E4M3"},{"value":8,"meaning":"E5M2"},{"value":9,"meaning":"E3M2"},{"value":10,"meaning":"E2M3"},{"value":11,"meaning":"E2M1X2"},{"value":12,"meaning":"E1M2X2"},{"value":13,"meaning":"E8M0"},{"value":14,"meaning":"HiF4X2"},{"value":16,"meaning":"S64"},{"value":17,"meaning":"S32"},{"value":18,"meaning":"S16"},{"value":19,"meaning":"S8"},{"value":20,"meaning":"S4X2"},{"value":24,"meaning":"U64"},{"value":25,"meaning":"U32"},{"value":26,"meaning":"U16"},{"value":27,"meaning":"U8"},{"value":28,"meaning":"U4X2"}],"reserved":[15,21,22,23,29,30,31],"rejection":"Reserved values are held for future extension and reject before architectural effects."}]}type TileHand of enumeration { TileHand_T, TileHand_U, TileHand_M, TileHand_N};
type TileDataType of enumeration { TileDataType_FP64, TileDataType_FP32, TileDataType_TF32, TileDataType_HF32, TileDataType_FP16, TileDataType_BF16, TileDataType_HiF8, TileDataType_E4M3, TileDataType_E5M2, TileDataType_E3M2, TileDataType_E2M3, TileDataType_E2M1X2, TileDataType_E1M2X2, TileDataType_E8M0, TileDataType_HiF4X2, TileDataType_S64, TileDataType_S32, TileDataType_S16, TileDataType_S8, TileDataType_S4X2, TileDataType_U64, TileDataType_U32, TileDataType_U16, TileDataType_U8, TileDataType_U4X2};
type TileDataTypeEncoding of bits(5);
pure func TileDataTypeEncodingValid(encoded: TileDataTypeEncoding) => booleanbegin let code = UInt(encoded); return code <= 14 || (16 <= code && code <= 20) || (24 <= code && code <= 28);end;
pure func TileDataTypeFromEncoding(encoded: TileDataTypeEncoding) => TileDataTypebegin assert TileDataTypeEncodingValid(encoded); case UInt(encoded) of when 0 => return TileDataType_FP64; when 1 => return TileDataType_FP32; when 2 => return TileDataType_TF32; when 3 => return TileDataType_HF32; when 4 => return TileDataType_FP16; when 5 => return TileDataType_BF16; when 6 => return TileDataType_HiF8; when 7 => return TileDataType_E4M3; when 8 => return TileDataType_E5M2; when 9 => return TileDataType_E3M2; when 10 => return TileDataType_E2M3; when 11 => return TileDataType_E2M1X2; when 12 => return TileDataType_E1M2X2; when 13 => return TileDataType_E8M0; when 14 => return TileDataType_HiF4X2; when 16 => return TileDataType_S64; when 17 => return TileDataType_S32; when 18 => return TileDataType_S16; when 19 => return TileDataType_S8; when 20 => return TileDataType_S4X2; when 24 => return TileDataType_U64; when 25 => return TileDataType_U32; when 26 => return TileDataType_U16; when 27 => return TileDataType_U8; when 28 => return TileDataType_U4X2; otherwise => unreachable; end;end;
pure func TileDataTypeToEncoding(data_type: TileDataType) => TileDataTypeEncodingbegin case data_type of when TileDataType_FP64 => return Zeros{5}; when TileDataType_FP32 => return Zeros{5} + 1; when TileDataType_TF32 => return Zeros{5} + 2; when TileDataType_HF32 => return Zeros{5} + 3; when TileDataType_FP16 => return Zeros{5} + 4; when TileDataType_BF16 => return Zeros{5} + 5; when TileDataType_HiF8 => return Zeros{5} + 6; when TileDataType_E4M3 => return Zeros{5} + 7; when TileDataType_E5M2 => return Zeros{5} + 8; when TileDataType_E3M2 => return Zeros{5} + 9; when TileDataType_E2M3 => return Zeros{5} + 10; when TileDataType_E2M1X2 => return Zeros{5} + 11; when TileDataType_E1M2X2 => return Zeros{5} + 12; when TileDataType_E8M0 => return Zeros{5} + 13; when TileDataType_HiF4X2 => return Zeros{5} + 14; when TileDataType_S64 => return Zeros{5} + 16; when TileDataType_S32 => return Zeros{5} + 17; when TileDataType_S16 => return Zeros{5} + 18; when TileDataType_S8 => return Zeros{5} + 19; when TileDataType_S4X2 => return Zeros{5} + 20; when TileDataType_U64 => return Zeros{5} + 24; when TileDataType_U32 => return Zeros{5} + 25; when TileDataType_U16 => return Zeros{5} + 26; when TileDataType_U8 => return Zeros{5} + 27; when TileDataType_U4X2 => return Zeros{5} + 28; end;end;// Encoded DataType 31 is a field-level sentinel. It is deliberately not a// TileDataType and therefore has no width, format, or arithmetic semantics.constant DTYPE_NONE = '11111';
type TileDataLayout of enumeration { TileDataLayout_NORM, TileDataLayout_ND2DN, TileDataLayout_ND2ZN, TileDataLayout_ND2NZ, TileDataLayout_DN2ND, TileDataLayout_DN2ZN, TileDataLayout_DN2NZ, TileDataLayout_ZN2ND, TileDataLayout_ZN2DN, TileDataLayout_ZN2NZ, TileDataLayout_NZ2ND, TileDataLayout_NZ2DN, TileDataLayout_NZ2ZN, TileDataLayout_ND2M32, TileDataLayout_ND2M16, TileDataLayout_ND2N8, TileDataLayout_M322ND, TileDataLayout_M162ND, TileDataLayout_N82ND};
type TilePadValue of enumeration { TilePad_Zero, TilePad_Max, TilePad_Min, TilePad_Null};
type TileLayout of enumeration { TileLayout_RowMajor, TileLayout_ColumnMajor, TileLayout_ZN, TileLayout_NZ, TileLayout_CUBE_M16, TileLayout_CUBE_M32, TileLayout_CUBE_N8, // Non-architectural model fixtures may use this value to prove that // generic execution rejects an opaque implementation layout. No // assigned B.DATR Layout code maps to it. TileLayout_ImplementationDefined};
type TileLocation of enumeration { TileLocation_Vector, TileLocation_Matrix, TileLocation_Memory, TileLocation_Any};
本单元拥有 Tile 操作手、公开的五位数据类型命名空间、Tile 数据布局与存储布局枚举、填充值以及位置意图。
它构成已编码 DataType 字段与数值/Tile 执行归属单元所使用类型化值之间的边界。
TileHand 命名 T、U、M 和 N;TileDataType 包含 15 个浮点/缩放成员、五个有符号整数成员和五个无符号整数成员。TileDataTypeEncoding 的类型为 bits(5)。编码 0..14、16..20 和 24..28 已分配;15、21..23 和 29..31 保留。TileDataLayout、物理 TileLayout、TilePadValue 和 TileLocation 命名空间。TileDataTypeEncodingValid 只接受三个已分配编码范围;TileDataTypeFromEncoding 要求先确认编码有效再进行映射。
TileDataTypeToEncoding 提供反向映射。编码 0 表示 TileDataType_FP64,不表示缺省、继承或不存在。
DTYPE_NONE 使用编码 31,但只作为字段级哨兵值;它有意不属于 TileDataType,也没有宽度、格式或算术语义。
保留的数据类型编码会在产生架构效果之前被拒绝,并留待未来扩展。
TileLayout_ImplementationDefined 只供非架构模型夹具使用;没有已分配的 B.DATR 布局编码映射到它。
编码 2 通过验证并映射到 TileDataType_TF32;编码 31 不映射到任何数据类型,即使独立的 DTYPE_NONE 哨兵值使用同一比特模式。
数据类型解码完成后,可查阅 TileNumericFormatDescriptor 获取格式元数据,再查阅使用该类型的指令以确认操作支持范围。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
9 matching entries
PTO-AVS-ARCH-DATA-TYPES-TILE-DATA-TYPES-STATIC-001tests/asl/arch/data-types/tile-data-types/arch-static-tile-data-types-contract-001.asld2aa8456cd110c21da0482089100b4a36875d8b2934f4dba025673e2ca2504e1PTO-AVS-ARCH-TILEDATATYPE-RESERVED-001tests/asl/arch/data-types/tile-data-types/arch-bound-tiledatatype-reserved-001.aslae260e537714dc2a32494f6435b7475871a8bffdda8787fb05cfdac3e799975cPTO-EVIDENCE-RELEASE-TRACEABILITYPTO-EVIDENCE-RELEASE-TRACEABILITYspec/evidence/release-traceability-readiness.jsonc7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3ePTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREspec/evidence/instruction-contract-closure.json3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106aPTO-EVIDENCE-ARCHITECTURE-READINESSPTO-EVIDENCE-ARCHITECTURE-READINESSspec/evidence/architecture-readiness.json4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004PTO-EVIDENCE-RELEASE-GATE-READINESSPTO-EVIDENCE-RELEASE-GATE-READINESSspec/evidence/release-gate-readiness.jsona0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0PTO-EVIDENCE-RELEASE-MANIFESTPTO-EVIDENCE-RELEASE-MANIFESTspec/release-manifest.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0040…
ADR-0040docs/status/decisions/0040-numeric-format-namespace-ownership.mdd4383e3d07be37218f7d060e0b4d8f2aa610684aadfb128583980e2f4ecf3b92Loading ADR-0043…
ADR-0043docs/status/decisions/0043-public-numeric-type-identity-and-availability.md4fa14704464afe3ea85b98835f2f6e7d6fa832a1f297100f41414cd3faf66924{
"classification": [
"data-types",
"tile-data-types"
],
"documentation": "docs/arch/data-types/tile-data-types.md",
"id": "PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES",
"mnemonic": null,
"readiness_subjects": [
"ADR-0040",
"ADR-0043"
],
"semantic_tests": [
"PTO-AVS-ARCH-TILEDATATYPE-RESERVED-001"
],
"source": "asl/arch/data-types/tile-data-types.asl",
"surface": "arch",
"tests": [
"PTO-AVS-ARCH-DATA-TYPES-TILE-DATA-TYPES-STATIC-001",
"PTO-AVS-ARCH-TILEDATATYPE-RESERVED-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd868125e501f8c7040c336e0102e24b702ba7769a4547e97213a8c42566fc677e60086e009a83f914bb625d360121ab2ee03ca27ab0d6d6c6efae647d6ec9d57fce2e2asl/arch/data-types/tile-data-types.asl