目的与范围
本单元是从 TileDataType 到各浮点或缩放格式描述符及精确有限值分解的中央分派器。
它为调用方提供统一的类型化入口,同时保留各格式文件对自身原始编码的所有权。
PTO-ARCH-DATA-TYPES-NUMERIC-FORMATS下面是该指令所有者中的 Operation;页面没有重写这段行为。
pure func TileNumericFormatDescriptor(data_type: TileDataType) => NumericFormatDescriptorbegin case data_type of when TileDataType_FP64 => return FP64NumericFormatDescriptor(); when TileDataType_FP32 => return FP32NumericFormatDescriptor(); when TileDataType_TF32 => return TF32NumericFormatDescriptor(); when TileDataType_HF32 => return HF32NumericFormatDescriptor(); when TileDataType_FP16 => return FP16NumericFormatDescriptor(); when TileDataType_BF16 => return BF16NumericFormatDescriptor(); when TileDataType_HiF8 => return HiF8NumericFormatDescriptor(); when TileDataType_E4M3 => return E4M3NumericFormatDescriptor(); when TileDataType_E5M2 => return E5M2NumericFormatDescriptor(); when TileDataType_E3M2 => return E3M2NumericFormatDescriptor(); when TileDataType_E2M3 => return E2M3NumericFormatDescriptor(); when TileDataType_E2M1X2 => return E2M1X2NumericFormatDescriptor(); when TileDataType_E1M2X2 => return E1M2X2NumericFormatDescriptor(); when TileDataType_E8M0 => return E8M0NumericFormatDescriptor(); when TileDataType_HiF4X2 => return HiF4X2NumericFormatDescriptor(); otherwise => return UnavailableNumericFormatDescriptor(); end;end;
pure func TileNumericFiniteDecomposition( data_type: TileDataType, value: Word) => (boolean, boolean, Word, integer {-1074..1023})begin case data_type of when TileDataType_FP64 => return FP64FiniteDecomposition(value); when TileDataType_FP32 => return FP32FiniteDecomposition(value[31:0]); when TileDataType_TF32 => return TF32FiniteDecomposition(value[31:0]); when TileDataType_HF32 => return HF32FiniteDecomposition(value[31:0]); when TileDataType_FP16 => return FP16FiniteDecomposition(value[15:0]); when TileDataType_BF16 => return BF16FiniteDecomposition(value[15:0]); when TileDataType_HiF8 => return HiF8FiniteDecomposition(value[7:0]); when TileDataType_E4M3 => return E4M3FiniteDecomposition(value[7:0]); when TileDataType_E5M2 => return E5M2FiniteDecomposition(value[7:0]); when TileDataType_E3M2 => return E3M2FiniteDecomposition(value[7:0]); when TileDataType_E2M3 => return E2M3FiniteDecomposition(value[7:0]); when TileDataType_E2M1X2 => return E2M1X2FiniteDecomposition(value); when TileDataType_E1M2X2 => return E1M2X2FiniteDecomposition(value); when TileDataType_E8M0 => return E8M0FiniteDecomposition(value[7:0]); when TileDataType_HiF4X2 => return HiF4X2FiniteDecomposition(value); otherwise => return (FALSE, FALSE, Zeros{PTO_XLEN}, 0); end;end;// PTO-UNIT: {"id":"PTO-ARCH-DATA-TYPES-NUMERIC-FORMATS","surface":"arch","classification":["data-types","numeric-formats"],"depends_on":["PTO-ARCH-DATA-TYPES-FORMAT-FP64","PTO-ARCH-DATA-TYPES-FORMAT-FP32","PTO-ARCH-DATA-TYPES-FORMAT-TF32","PTO-ARCH-DATA-TYPES-FORMAT-HF32","PTO-ARCH-DATA-TYPES-FORMAT-FP16","PTO-ARCH-DATA-TYPES-FORMAT-BF16","PTO-ARCH-DATA-TYPES-FORMAT-HIF8","PTO-ARCH-DATA-TYPES-FORMAT-E4M3","PTO-ARCH-DATA-TYPES-FORMAT-E5M2","PTO-ARCH-DATA-TYPES-FORMAT-E3M2","PTO-ARCH-DATA-TYPES-FORMAT-E2M3","PTO-ARCH-DATA-TYPES-FORMAT-E2M1X2","PTO-ARCH-DATA-TYPES-FORMAT-E1M2X2","PTO-ARCH-DATA-TYPES-FORMAT-E8M0","PTO-ARCH-DATA-TYPES-FORMAT-HIF4X2"]}
// NDF-BEGIN: PTO-NUMERIC-FINITE-DECOMPOSITION-001// ndf: kind=executable level=L3 layer=architecture status=accepted// Every valid finite floating or scale encoding MUST decompose without host// floating-point arithmetic into available, sign, integer significand, and// integer exponent such that its exact value is// (-1)^sign * UInt(significand) * 2^exponent. Invalid internal encodings,// infinities, NaNs, and integer Tile DataTypes MUST report unavailable.// NDF-END: PTO-NUMERIC-FINITE-DECOMPOSITION-001
// DOC-BEGIN: operationpure func TileNumericFormatDescriptor(data_type: TileDataType) => NumericFormatDescriptorbegin case data_type of when TileDataType_FP64 => return FP64NumericFormatDescriptor(); when TileDataType_FP32 => return FP32NumericFormatDescriptor(); when TileDataType_TF32 => return TF32NumericFormatDescriptor(); when TileDataType_HF32 => return HF32NumericFormatDescriptor(); when TileDataType_FP16 => return FP16NumericFormatDescriptor(); when TileDataType_BF16 => return BF16NumericFormatDescriptor(); when TileDataType_HiF8 => return HiF8NumericFormatDescriptor(); when TileDataType_E4M3 => return E4M3NumericFormatDescriptor(); when TileDataType_E5M2 => return E5M2NumericFormatDescriptor(); when TileDataType_E3M2 => return E3M2NumericFormatDescriptor(); when TileDataType_E2M3 => return E2M3NumericFormatDescriptor(); when TileDataType_E2M1X2 => return E2M1X2NumericFormatDescriptor(); when TileDataType_E1M2X2 => return E1M2X2NumericFormatDescriptor(); when TileDataType_E8M0 => return E8M0NumericFormatDescriptor(); when TileDataType_HiF4X2 => return HiF4X2NumericFormatDescriptor(); otherwise => return UnavailableNumericFormatDescriptor(); end;end;
pure func TileNumericFiniteDecomposition( data_type: TileDataType, value: Word) => (boolean, boolean, Word, integer {-1074..1023})begin case data_type of when TileDataType_FP64 => return FP64FiniteDecomposition(value); when TileDataType_FP32 => return FP32FiniteDecomposition(value[31:0]); when TileDataType_TF32 => return TF32FiniteDecomposition(value[31:0]); when TileDataType_HF32 => return HF32FiniteDecomposition(value[31:0]); when TileDataType_FP16 => return FP16FiniteDecomposition(value[15:0]); when TileDataType_BF16 => return BF16FiniteDecomposition(value[15:0]); when TileDataType_HiF8 => return HiF8FiniteDecomposition(value[7:0]); when TileDataType_E4M3 => return E4M3FiniteDecomposition(value[7:0]); when TileDataType_E5M2 => return E5M2FiniteDecomposition(value[7:0]); when TileDataType_E3M2 => return E3M2FiniteDecomposition(value[7:0]); when TileDataType_E2M3 => return E2M3FiniteDecomposition(value[7:0]); when TileDataType_E2M1X2 => return E2M1X2FiniteDecomposition(value); when TileDataType_E1M2X2 => return E1M2X2FiniteDecomposition(value); when TileDataType_E8M0 => return E8M0FiniteDecomposition(value[7:0]); when TileDataType_HiF4X2 => return HiF4X2FiniteDecomposition(value); otherwise => return (FALSE, FALSE, Zeros{PTO_XLEN}, 0); end;end;// DOC-END: operation
本单元是从 TileDataType 到各浮点或缩放格式描述符及精确有限值分解的中央分派器。
它为调用方提供统一的类型化入口,同时保留各格式文件对自身原始编码的所有权。
TileNumericFormatDescriptor 将从 FP64 到 HiF4X2 的所有已声明浮点与缩放数据类型分派到各自的格式描述符。TileNumericFiniteDecomposition 将同一组格式分派到精确有限值分解,并在需要时把 Word 载体缩窄到架构宽度。(-1)^sign * UInt(significand) * 2^exponent。有效的有限浮点或缩放编码无需宿主浮点算术即可完成分解。
无效内部编码、无穷大、NaN 和整数 TileDataType 成员都报告不可用。
没有匹配分支的描述符请求返回 UnavailableNumericFormatDescriptor;没有匹配分支的分解返回 (FALSE, FALSE, Zeros{PTO_XLEN}, 0)。
本单元不会用宿主算术重新解释返回结果;整数有效数和指数就是精确交换契约。
格式可用不等于操作受支持。使用方指令或命名配置可以进一步限制可接受的数据类型。
对于 TileDataType_TF32,分派器把 value[31:0] 传给 TF32FiniteDecomposition,因此必须为零的低位由 TF32 归属单元检查。
对于 TileDataType_S32,没有浮点分解分支,因此可用性为假,而不会构造一套整数分解。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
Every valid finite floating or scale encoding MUST decompose without host floating-point arithmetic into available, sign, integer significand, and integer exponent such that its exact value is (-1)^sign * UInt(significand) * 2^exponent. Invalid internal encodings, infinities, NaNs, and integer Tile DataTypes MUST report unavailable.
PTO-NUMERIC-FINITE-DECOMPOSITION-001asl/arch/data-types/numeric-formats.asl101bbe4d0efa238d214cdf20cb2f9b7a413f86aa12ff1ae1be9638c4ade90c8dbdffd42ab571a4627c020005aa1209162ae9149a2c29a11026a172c29e569c4227 matching entries
PTO-AVS-ARCH-BF16-DECOMP-001tests/asl/arch/data-types/formats/bf16/arch-bound-bf16-decomp-001.asl0365cd116d6e360bc1dea6039b3adab8593befce550a249064f8d8bbb4d15892PTO-AVS-ARCH-DATA-TYPES-NUMERIC-FORMATS-STATIC-001tests/asl/arch/data-types/numeric-formats/arch-static-numeric-formats-contract-001.asle6738ca59f37ba185651eb5ff47cb0a81af55a65c777e4fe14bb0fb5bf077c4dPTO-AVS-ARCH-E1M2X2-DECOMP-001tests/asl/arch/data-types/formats/e1m2x2/arch-bound-e1m2x2-decomp-001.asl9e2a311c3d634ca04a1dd6c34207350941bcdc1917cb5f2e73ee4479d7a7da52PTO-AVS-ARCH-E2M1X2-DECOMP-001tests/asl/arch/data-types/formats/e2m1x2/arch-bound-e2m1x2-decomp-001.asldb698d1b685e9f471ba4a645ef2c71074409a5870be0ee51fc893771037f7d44PTO-AVS-ARCH-E2M3-DECOMP-001tests/asl/arch/data-types/formats/e2m3/arch-bound-e2m3-decomp-001.asl7246c364910390b5295c75c485ae7b28394678d8e292eed3ab525300aaad0e8ePTO-AVS-ARCH-E3M2-DECOMP-001tests/asl/arch/data-types/formats/e3m2/arch-bound-e3m2-decomp-001.asle942008d7104703a8ee6e304e04dcca247d221b2a2a5f536a86cbcbb1bef2b93PTO-AVS-ARCH-E4M3-DECOMP-001tests/asl/arch/data-types/formats/e4m3/arch-bound-e4m3-decomp-001.aslfefdb43f96bc09e0d33caeb9f35974ceafbfe71e8a3cf973c11991e0675e9a12PTO-AVS-ARCH-E5M2-DECOMP-001tests/asl/arch/data-types/formats/e5m2/arch-bound-e5m2-decomp-001.asl9745706b5e7a10d79b339a0cc33000683dfb8ea7d66a42f95117ae033727b2f7PTO-AVS-ARCH-E8M0-DECOMP-001tests/asl/arch/data-types/formats/e8m0/arch-bound-e8m0-decomp-001.asld20f3428e308a827e0e46c767bcc5cd2ab667090bb87fe87e8d44838124bb52aPTO-AVS-ARCH-FP16-DECOMP-001tests/asl/arch/data-types/formats/fp16/arch-bound-fp16-decomp-001.asla550875163e6eb9906daa7056488a041b5a5fdf18efcfaacfb3ed217ea4c8ef1PTO-AVS-ARCH-FP32-DECOMP-001tests/asl/arch/data-types/formats/fp32/arch-bound-fp32-decomp-001.asle763f8d37a2fe64dda3bf18368ff96109fa79723763c2a2eb8dbc9d7d582d7dbPTO-AVS-ARCH-FP64-DECOMP-001tests/asl/arch/data-types/formats/fp64/arch-bound-fp64-decomp-001.asl3b7db0a37c8f559843133794170f537da60226be7a810781e19068347e590634PTO-AVS-ARCH-HF32-DECOMP-001tests/asl/arch/data-types/formats/hf32/arch-bound-hf32-decomp-001.aslcef393390518bc68c53ecaf8e61e663dfedb39fe6be9b185d658678334f674e7PTO-AVS-ARCH-HIF4X2-DECOMP-001tests/asl/arch/data-types/formats/hif4x2/arch-bound-hif4x2-decomp-001.asld18caabbe5124c6ee837f6efcaeb40c4271a3f6f3331927aba34d61f1195082fPTO-AVS-ARCH-HIF8-DECOMP-001tests/asl/arch/data-types/formats/hif8/arch-bound-hif8-decomp-001.asl12250e47f7ee38605ce521d2db8c778afd485227af4e450ad82194d08a15eb16PTO-AVS-ARCH-NUMERIC-FORMATS-DOMAIN-001tests/asl/arch/data-types/numeric-formats/arch-bound-numeric-formats-domain-001.aslc7b1f56fb35f44e0e50f09f523979d377ca88f340f1b3f10f874de6ebfe9e9e0PTO-AVS-ARCH-TF32-DECOMP-001tests/asl/arch/data-types/formats/tf32/arch-bound-tf32-decomp-001.asl2b011596bc0e6d292dcee10a65971c514db4d829beae9d0b438ac7cf098b9e57PTO-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.md4fa14704464afe3ea85b98835f2f6e7d6fa832a1f297100f41414cd3faf66924Loading ADR-0048…
ADR-0048docs/status/decisions/0048-numeric-format-value-classification.mdce3ecd1851e22b5517d07076ab8bd2db36b6b4582111c761db19240275853d9cLoading ADR-0049…
ADR-0049docs/status/decisions/0049-hardware-subnormal-policy.mdac969b6247bbaa16e480ae96c9f227f68ffa859d06121df838c8d3b6f141ca3aLoading ADR-0050…
ADR-0050docs/status/decisions/0050-hardware-special-value-checkpoint.md08cfdeb16bf245980c9db849994e181e5079efc53475762cdad1df9f555993b5{
"classification": [
"data-types",
"numeric-formats"
],
"documentation": "docs/arch/data-types/numeric-formats.md",
"id": "PTO-ARCH-DATA-TYPES-NUMERIC-FORMATS",
"mnemonic": null,
"readiness_subjects": [
"ADR-0040",
"ADR-0043",
"ADR-0048",
"ADR-0049",
"ADR-0050"
],
"semantic_tests": [
"PTO-AVS-ARCH-NUMERIC-FORMATS-DOMAIN-001"
],
"source": "asl/arch/data-types/numeric-formats.asl",
"surface": "arch",
"tests": [
"PTO-AVS-ARCH-DATA-TYPES-NUMERIC-FORMATS-STATIC-001",
"PTO-AVS-ARCH-NUMERIC-FORMATS-DOMAIN-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd86812101bbe4d0efa238d214cdf20cb2f9b7a413f86aa12ff1ae1be9638c4ade90c8d2d1d1522ffd0432b929435ddc43a54bffb00dfe3a9f9e1e238bead7ff0c9d3baasl/arch/data-types/numeric-formats.aslasl/arch/data-types/numeric-formats.asl