目的与范围
目的与范围
本单元在特殊 NaN 和带符号零情况处理完毕后,为命名硬件数值配置提供普通浮点排序键以及最小值/最大值选择。
返回的可用性位会明确标出不支持的数据类型,而不会为所有 TileDataType 强行规定顺序。
PTO-ARCH-FEATURES-MINMAX-PROFILE下面直接显示完整的 ASL 所有者。
// PTO-UNIT: {"id":"PTO-ARCH-FEATURES-MINMAX-PROFILE","surface":"arch","classification":["features","minmax-profile"],"depends_on":["PTO-ARCH-FEATURES-MX-FORMATS"]}// Convert an assigned binary floating carrier into a monotonically increasing// unsigned key. NaNs and signed-zero ties are resolved before this helper is// called. The returned availability bit keeps unsupported formats explicit.pure func HardwareNumericFloatingOrderKey( data_type: TileDataType, value: Word) => (boolean, Word)begin if !TileNumericEncodingValid(data_type, value) then return (FALSE, Zeros{PTO_XLEN}); end;
case data_type of when TileDataType_FP64 => if value[63] == '1' then return (TRUE, NOT(value)); else return (TRUE, value XOR (Zeros{PTO_XLEN} + 0x8000000000000000)); end; when TileDataType_FP32, TileDataType_TF32, TileDataType_HF32 => let raw = value[31:0]; let key = if raw[31] == '1' then NOT(raw) else raw XOR (Zeros{32} + 0x80000000); return (TRUE, ZeroExtend{PTO_XLEN}(key)); when TileDataType_FP16, TileDataType_BF16 => let raw = value[15:0]; let key = if raw[15] == '1' then NOT(raw) else raw XOR (Zeros{16} + 0x8000); return (TRUE, ZeroExtend{PTO_XLEN}(key)); when TileDataType_E4M3, TileDataType_E5M2 => let raw = value[7:0]; let key = if raw[7] == '1' then NOT(raw) else raw XOR (Zeros{8} + 0x80); return (TRUE, ZeroExtend{PTO_XLEN}(key)); otherwise => return (FALSE, Zeros{PTO_XLEN}); end;end;
// Return availability, selected raw carrier, and invalid-condition status.// Special NaN and zero rules have priority over ordinary numeric ordering.pure func HardwareNumericFloatingMinMax( maximum: boolean, data_type: TileDataType, left: Word, right: Word) => (boolean, Word, boolean)begin let (special, special_result, invalid) = HardwareNumericMinMaxSpecial(maximum, data_type, left, right); if special then return (TRUE, special_result, invalid); end;
let (left_available, left_key) = HardwareNumericFloatingOrderKey(data_type, left); let (right_available, right_key) = HardwareNumericFloatingOrderKey(data_type, right); if !left_available || !right_available then return (FALSE, Zeros{PTO_XLEN}, FALSE); end;
if maximum then if UInt(left_key) >= UInt(right_key) then return (TRUE, left, FALSE); else return (TRUE, right, FALSE); end; elsif UInt(left_key) <= UInt(right_key) then return (TRUE, left, FALSE); else return (TRUE, right, FALSE); end;end;
本单元在特殊 NaN 和带符号零情况处理完毕后,为命名硬件数值配置提供普通浮点排序键以及最小值/最大值选择。
返回的可用性位会明确标出不支持的数据类型,而不会为所有 TileDataType 强行规定顺序。
HardwareNumericFloatingOrderKey 验证载体,并将受支持的二进制浮点编码映射为单调递增的无符号键。HardwareNumericFloatingMinMax 先调用 HardwareNumericMinMaxSpecial,只有两个操作数都不是特殊情况时才比较普通排序键。排序键辅助函数支持 FP64;FP32、TF32 和 HF32;FP16 和 BF16;以及 E4M3 和 E5M2。
无效编码和其他数据类型都返回不可用,并附带零占位键。
求最大值时选择较大的无符号键,求最小值时选择较小的键;键相等时选择左侧原始载体。
NaN 和带符号零相等时的行为不由普通排序键推导,而是在比较前由 HardwareNumericMinMaxSpecial 处理。
这是命名配置的实现,不对返回不可用的格式作出可移植的排序承诺。
对于两个有效的正 FP32 正规数,翻转符号位后得到的键与数值顺序一致,因此最小值或最大值会选择相应原始载体。
若任一操作数是无效 TF32 载体,普通键选择会报告不可用,而不会静默比较高位。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
10 matching entries
PTO-AVS-ARCH-FEATURES-MINMAX-PROFILE-STATIC-001tests/asl/arch/features/minmax-profile/arch-static-minmax-profile-contract-001.asl8f882a47dc18ee178fbd38297d9b938ce73dbd0b0d54b5788ffc8b6104c8bffcPTO-AVS-ARCH-MINMAX-AVAILABILITY-BOUND-002tests/asl/arch/features/minmax-profile/arch-bound-minmax-availability-002.asl9e431386d0ee57e6dbb5eb8ac03abacde6daa2d58b1d1ca9a924df3d9df22addPTO-AVS-ARCH-MINMAX-ORDER-KEYS-EXEC-001tests/asl/arch/features/minmax-profile/arch-exec-minmax-order-keys-001.asl605a42427e2a7f408170fc0537474f377092e75619ce04138774c5ead7ed196fPTO-AVS-ARCH-MINMAX-ORDERING-TIES-EXEC-004tests/asl/arch/features/minmax-profile/arch-exec-minmax-ordering-ties-004.asl71b617cf8a6faeb890d723d976f4292a774c1d15b2092989f42b0e03888ed649PTO-AVS-ARCH-MINMAX-SPECIAL-DELEGATION-EXEC-003tests/asl/arch/features/minmax-profile/arch-exec-minmax-special-delegation-003.asl237fa58d299f4b47d027ca9e63daa7914a0d8e1cc0c514aff5b06566f831c140PTO-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.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8{
"classification": [
"features",
"minmax-profile"
],
"documentation": "docs/arch/features/minmax-profile.md",
"id": "PTO-ARCH-FEATURES-MINMAX-PROFILE",
"mnemonic": null,
"readiness_subjects": [],
"semantic_tests": [
"PTO-AVS-ARCH-MINMAX-AVAILABILITY-BOUND-002",
"PTO-AVS-ARCH-MINMAX-ORDER-KEYS-EXEC-001",
"PTO-AVS-ARCH-MINMAX-ORDERING-TIES-EXEC-004",
"PTO-AVS-ARCH-MINMAX-SPECIAL-DELEGATION-EXEC-003"
],
"source": "asl/arch/features/minmax-profile.asl",
"surface": "arch",
"tests": [
"PTO-AVS-ARCH-FEATURES-MINMAX-PROFILE-STATIC-001",
"PTO-AVS-ARCH-MINMAX-AVAILABILITY-BOUND-002",
"PTO-AVS-ARCH-MINMAX-ORDER-KEYS-EXEC-001",
"PTO-AVS-ARCH-MINMAX-ORDERING-TIES-EXEC-004",
"PTO-AVS-ARCH-MINMAX-SPECIAL-DELEGATION-EXEC-003"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd8681211a35922a15d2222796ba5fa2735cd600f82d767dd171cefb468bf18298fe1a4ad5f6f7b4212062d04d0033c11e547c61640c81480cc7e0a2bf7f6cb72639288asl/arch/features/minmax-profile.asl