Skip to main content

PTO-ARCH-DATA-TYPES-FORMAT-E5M2

PTO-ARCH-DATA-TYPES-FORMAT-E5M2

ASL pseudocode

This Operation comes directly from the instruction owner; the page does not rewrite its behavior.

// PTO-REQ-HARDWARE-NUMERIC-001: exact E5M2 encoding and finite values.
pure func E5M2NumericFormatDescriptor() => NumericFormatDescriptorbegin    return NumericFormatDescriptor {        available = TRUE, kind = NumericFormatKind_FixedBinary,        carrier_bits = 8, lane_bits = 8, lanes_per_carrier = 1,        sign_bits = 1, sign_bit = 7,        exponent_bits_min = 5, exponent_bits_max = 5,        fraction_bits_min = 2, fraction_bits_max = 2,        exponent_bias_available = TRUE, exponent_bias = 15,        required_low_zero_bits = 0, required_high_zero_bits = 0,        has_zero = TRUE, has_signed_zero = TRUE, has_subnormal = TRUE,        has_infinity = TRUE, has_quiet_nan = TRUE,        has_signaling_nan = TRUE    };end;
pure func E5M2FiniteDecomposition(value: bits(8))    => (boolean, boolean, Word, integer {-1074..1023})begin    let exponent = value[6:2];    let fraction = value[1:0];    if exponent == Ones{5} then        return (FALSE, FALSE, Zeros{PTO_XLEN}, 0);    elsif exponent == Zeros{5} then        if fraction == Zeros{2} then            return (TRUE, value[7] == '1', Zeros{PTO_XLEN}, 0);        else return (TRUE, value[7] == '1',                     ZeroExtend{PTO_XLEN}(fraction), -16);        end;    else return (TRUE, value[7] == '1',                 LSL(Zeros{PTO_XLEN} + 1, 2) +                     ZeroExtend{PTO_XLEN}(fraction),                 (UInt(exponent) - (15 + 2))                     as integer {-1074..1023});    end;end;pure func ClassifyE5M2(value: bits(8)) => NumericValueClassbegin    let exponent = value[6:2];    let fraction = value[1:0];    if exponent == Ones{5} then        if fraction == Zeros{2} then            if value[7] == '1' then return NumericValue_NegativeInfinity;            else return NumericValue_PositiveInfinity;            end;        elsif fraction[1] == '1' then return NumericValue_QuietNaN;        else return NumericValue_SignalingNaN;        end;    end;    return NumericValueClassFromFiniteSign(value[7],        exponent == Zeros{5} && fraction == Zeros{2},        exponent == Zeros{5} && fraction != Zeros{2});end;
pure func E5M2CanonicalNaN() => Wordbegin    return Zeros{PTO_XLEN} + 0x7e;end;
pure func E5M2SignedZeroEncodings() => (Word, Word)begin    return (Zeros{PTO_XLEN}, Zeros{PTO_XLEN} + 0x80);end;
View the complete ASL owner
// PTO-UNIT: {"id":"PTO-ARCH-DATA-TYPES-FORMAT-E5M2","surface":"arch","classification":["data-types","formats","e5m2"],"depends_on":["PTO-ARCH-DATA-TYPES-FORMAT-DESCRIPTOR"]}// DOC-BEGIN: operation// PTO-REQ-HARDWARE-NUMERIC-001: exact E5M2 encoding and finite values.
pure func E5M2NumericFormatDescriptor() => NumericFormatDescriptorbegin    return NumericFormatDescriptor {        available = TRUE, kind = NumericFormatKind_FixedBinary,        carrier_bits = 8, lane_bits = 8, lanes_per_carrier = 1,        sign_bits = 1, sign_bit = 7,        exponent_bits_min = 5, exponent_bits_max = 5,        fraction_bits_min = 2, fraction_bits_max = 2,        exponent_bias_available = TRUE, exponent_bias = 15,        required_low_zero_bits = 0, required_high_zero_bits = 0,        has_zero = TRUE, has_signed_zero = TRUE, has_subnormal = TRUE,        has_infinity = TRUE, has_quiet_nan = TRUE,        has_signaling_nan = TRUE    };end;
pure func E5M2FiniteDecomposition(value: bits(8))    => (boolean, boolean, Word, integer {-1074..1023})begin    let exponent = value[6:2];    let fraction = value[1:0];    if exponent == Ones{5} then        return (FALSE, FALSE, Zeros{PTO_XLEN}, 0);    elsif exponent == Zeros{5} then        if fraction == Zeros{2} then            return (TRUE, value[7] == '1', Zeros{PTO_XLEN}, 0);        else return (TRUE, value[7] == '1',                     ZeroExtend{PTO_XLEN}(fraction), -16);        end;    else return (TRUE, value[7] == '1',                 LSL(Zeros{PTO_XLEN} + 1, 2) +                     ZeroExtend{PTO_XLEN}(fraction),                 (UInt(exponent) - (15 + 2))                     as integer {-1074..1023});    end;end;pure func ClassifyE5M2(value: bits(8)) => NumericValueClassbegin    let exponent = value[6:2];    let fraction = value[1:0];    if exponent == Ones{5} then        if fraction == Zeros{2} then            if value[7] == '1' then return NumericValue_NegativeInfinity;            else return NumericValue_PositiveInfinity;            end;        elsif fraction[1] == '1' then return NumericValue_QuietNaN;        else return NumericValue_SignalingNaN;        end;    end;    return NumericValueClassFromFiniteSign(value[7],        exponent == Zeros{5} && fraction == Zeros{2},        exponent == Zeros{5} && fraction != Zeros{2});end;
pure func E5M2CanonicalNaN() => Wordbegin    return Zeros{PTO_XLEN} + 0x7e;end;
pure func E5M2SignedZeroEncodings() => (Word, Word)begin    return (Zeros{PTO_XLEN}, Zeros{PTO_XLEN} + 0x80);end;// DOC-END: operation

Architecture behavior

purpose scope

Purpose and scope

E5M2 is an assigned PTO numeric format. This page helps a reader connect its carrier layout, finite-value decomposition, and value classification; the exact contract remains in E5M2NumericFormatDescriptor, E5M2FiniteDecomposition, and ClassifyE5M2 in the ASL owner.

concepts state

Carrier and fields

The descriptor uses a 8-bit carrier, a 8-bit logical lane, and 1 lane(s) per carrier. The lane has one sign bit at position 7, 5 exponent bit(s), 2 fraction bit(s), and exponent bias 15.

No carrier bits are constrained outside the sign, exponent, and fraction fields.

rules interactions

Decomposition and classification

E5M2FiniteDecomposition reports whether a finite decomposition is available and, when available, returns the sign, an integer significand, and a binary exponent. ClassifyE5M2 separately assigns the raw lane to zero, subnormal, normal, infinity, or NaN classes supported by this format.

It has signed zero, subnormals, infinities, quiet NaNs, and signaling NaNs. An all-one exponent is not a finite decomposition; a zero fraction selects infinity and a nonzero fraction selects a NaN class.

boundaries

Boundaries and exact encodings

0x00 and 0x80 are positive and negative zero; 0x7e is the canonical quiet NaN.

The finite-decomposition function reports availability with its returned tuple; value classification is a separate function result.

example usage

illustrative reading example

This example illustrates how to read the functions; it does not add an encoding rule.

For example, 0x01 decomposes to positive significand 1 with exponent -16, while 0x7c is positive infinity and has no finite decomposition.

NDF clauses

Bodies come from owning ASL. Dragging or buttons change only this page-session view order.

No NDF clause is attached to this unit.

Evidence index

8 matching entries

Executable evidence2
  • PTO-ARCH-DATA-TYPES-FORMAT-E5M2 compiles as an independent normative unit
    1. surfaceARCH
    2. ownerPTO-ARCH-DATA-TYPES-FORMAT-E5M2
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-DATA-TYPES-FORMAT-E5M2-STATIC-001
    Path
    tests/asl/arch/data-types/formats/e5m2/arch-static-e5m2-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    c56b851d56fa549f09d1b10defd3bece9466ac4392ccbac10afd56fbeec3a8ef
    Open exact source ↗ for PTO-AVS-ARCH-DATA-TYPES-FORMAT-E5M2-STATIC-001
  • E5M2 exposes its exact descriptor and finite-value decomposition.
    1. surfaceARCH
    2. ownerPTO-ARCH-DATA-TYPES-FORMAT-E5M2
    3. categoryBOUNDARY
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-E5M2-DECOMP-001
    Path
    tests/asl/arch/data-types/formats/e5m2/arch-bound-e5m2-decomp-001.asl
    Kind / role
    boundary
    Requirements
    PTO-NUMERIC-FINITE-DECOMPOSITION-001
    Pass condition
    Field metadata, finite boundaries, unavailable special values, and existing value-class rules agree.
    SHA-256
    9745706b5e7a10d79b339a0cc33000683dfb8ea7d66a42f95117ae033727b2f7
    Open exact source ↗ for PTO-AVS-ARCH-E5M2-DECOMP-001
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-TRACEABILITY
    Path
    spec/evidence/release-traceability-readiness.json
    Kind / role
    ASL/NDF/documentation/AVS traceability
    SHA-256
    c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Path
    spec/evidence/instruction-contract-closure.json
    Kind / role
    mnemonic and encoding contract closure
    SHA-256
    3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-GATE-READINESS
    Path
    spec/evidence/release-gate-readiness.json
    Kind / role
    exact-head gate readiness
    SHA-256
    a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST
Decision history1
  • Numeric format value classification · accepted
    1. decision recordADR
    2. case0048

    Decision record

    Loading ADR-0048…

    Sources and references
    Complete stable ID
    ADR-0048
    Path
    docs/status/decisions/0048-numeric-format-value-classification.md
    Affected units
    PTO-ARCH-DATA-TYPES-FORMAT-BF16, PTO-ARCH-DATA-TYPES-FORMAT-DESCRIPTOR, PTO-ARCH-DATA-TYPES-FORMAT-E1M2X2, PTO-ARCH-DATA-TYPES-FORMAT-E2M1X2, PTO-ARCH-DATA-TYPES-FORMAT-E2M3, PTO-ARCH-DATA-TYPES-FORMAT-E3M2, PTO-ARCH-DATA-TYPES-FORMAT-E4M3, PTO-ARCH-DATA-TYPES-FORMAT-E5M2, PTO-ARCH-DATA-TYPES-FORMAT-E8M0, PTO-ARCH-DATA-TYPES-FORMAT-FP16, PTO-ARCH-DATA-TYPES-FORMAT-FP32, PTO-ARCH-DATA-TYPES-FORMAT-FP64, PTO-ARCH-DATA-TYPES-FORMAT-HF32, PTO-ARCH-DATA-TYPES-FORMAT-HIF4X2, PTO-ARCH-DATA-TYPES-FORMAT-HIF8, PTO-ARCH-DATA-TYPES-FORMAT-TF32, PTO-ARCH-DATA-TYPES-NUMERIC-CLASSIFICATION, PTO-ARCH-DATA-TYPES-NUMERIC-FORMATS, PTO-SCALAR-FMAX, PTO-SCALAR-FMIN, PTO-SCALAR-MODEL-FSU-PROFILE, PTO-TILE-MODEL-EXECUTION-COMPARISON, PTO-TILE-MODEL-EXECUTION-FUSED-MULTIPLY-ADD, PTO-TILE-MODEL-EXECUTION-UNARY, PTO-TILE-MODEL-NUMERIC-FORMATS, PTO-TILE-MODEL-ORDERING-SORTING, PTO-TILE-TMAX, PTO-TILE-TMIN
    Affected NDF
    PTO-FMAX-DECISION-BINDING-001, PTO-FMIN-DECISION-BINDING-001, PTO-NUMERIC-FINITE-DECOMPOSITION-001, PTO-NUMERIC-FORMAT-DESCRIPTOR-001, PTO-TMAX-CONTRACT-001, PTO-TMIN-CONTRACT-001
    SHA-256
    ce3ecd1851e22b5517d07076ab8bd2db36b6b4582111c761db19240275853d9c
    Open exact decision source ↗ for ADR-0048

Unit metadata

Open 4 generated metadata fields
id
PTO-ARCH-DATA-TYPES-FORMAT-E5M2
surface
arch
classification
[
  "data-types",
  "formats",
  "e5m2"
]
depends_on
[
  "PTO-ARCH-DATA-TYPES-FORMAT-DESCRIPTOR"
]
Open generated traceability record
{
  "classification": [
    "data-types",
    "formats",
    "e5m2"
  ],
  "documentation": "docs/arch/data-types/formats/e5m2.md",
  "id": "PTO-ARCH-DATA-TYPES-FORMAT-E5M2",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0048"
  ],
  "semantic_tests": [
    "PTO-AVS-ARCH-E5M2-DECOMP-001"
  ],
  "source": "asl/arch/data-types/formats/e5m2.asl",
  "surface": "arch",
  "tests": [
    "PTO-AVS-ARCH-DATA-TYPES-FORMAT-E5M2-STATIC-001",
    "PTO-AVS-ARCH-E5M2-DECOMP-001"
  ]
}

Sources and release identity

Show commit, paths, hashes, version, and canonical owners
Release
0.58.5 · Release candidate
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
139580a9effcd0f37e3bcd0b91ed1b7df05bcba1713aebd2570282c1920a2a40
Generated documentation
docs/arch/data-types/formats/e5m2.md · embedded in this page
Documentation SHA-256
a9ff0108569f1ffdd7e6784d31a45be3418d6c98d90f65a4ad6681aa13cd7122

Exact owners