Skip to main content

PTO-SCALAR-MODEL-DISPATCH-DECODE

PTO-SCALAR-MODEL-DISPATCH-DECODE

ASL pseudocode

The complete ASL owner is shown directly below.

// PTO-UNIT: {"id":"PTO-SCALAR-MODEL-DISPATCH-DECODE","surface":"scalar","classification":["model","dispatch","decode"],"depends_on":["generated:decoders","PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"]}// PTO-REQ-SCALAR-DISPATCH-001, PTO-REQ-SCALAR-CONSTRAINT-001: decoded scalar// execution with catalog-generated form and family legality.//// Every accepted scalar family has a form-to-effect binding. Unknown or// operand-illegal encodings are rejected; there is no silent unsupported path.
type ScalarExecutionStatus of enumeration {    ScalarExecution_Executed,    ScalarExecution_Rejected};
pure func ScalarHandlerWritesTPC(handler: ScalarSemanticHandler) => booleanbegin    return handler == ScalarHandler_JumpRelative ||           handler == ScalarHandler_JumpRegister ||           handler == ScalarHandler_ArchitectureEnterRequest;end;
pure func ScalarDecodedSelector(instruction: bits(48),                                form: integer {0..PTO_SCALAR_FORM_COUNT-1},                                field: ScalarOperandField) => Reg5Selectorbegin    let raw = DecodeScalarOperandRaw(instruction, form, field);    return UInt(raw[4:0]) as Reg5Selector;end;
pure func ScalarDecodedWord(instruction: bits(48),                            form: integer {0..PTO_SCALAR_FORM_COUNT-1},                            field: ScalarOperandField) => Wordbegin    let raw = DecodeScalarOperandRaw(instruction, form, field);    if ScalarOperandSignedness(form, field) == ScalarField_Signed then        case ScalarOperandWidth(form, field) of            when 5  => return SignExtend{PTO_XLEN}(raw[4:0]);            when 12 => return SignExtend{PTO_XLEN}(raw[11:0]);            when 17 => return SignExtend{PTO_XLEN}(raw[16:0]);            when 22 => return SignExtend{PTO_XLEN}(raw[21:0]);            when 24 => return SignExtend{PTO_XLEN}(raw[23:0]);            when 29 => return SignExtend{PTO_XLEN}(raw[28:0]);            when 32 => return SignExtend{PTO_XLEN}(raw[31:0]);            otherwise => unreachable;        end;    end;    return ZeroExtend{PTO_XLEN}(raw);end;
pure func ScalarDecodedBits19(instruction: bits(48),                              form: integer {0..PTO_SCALAR_FORM_COUNT-1},                              field: ScalarOperandField) => bits(19)begin    return DecodeScalarOperandRaw(instruction, form, field)[18:0];end;
pure func ScalarDecodedBits20(instruction: bits(48),                              form: integer {0..PTO_SCALAR_FORM_COUNT-1},                              field: ScalarOperandField) => bits(20)begin    return DecodeScalarOperandRaw(instruction, form, field)[19:0];end;
pure func ScalarDecodedBits4(instruction: bits(48),                             form: integer {0..PTO_SCALAR_FORM_COUNT-1},                             field: ScalarOperandField) => bits(4)begin    return DecodeScalarOperandRaw(instruction, form, field)[3:0];end;
pure func ScalarDecodedBits5(instruction: bits(48),                             form: integer {0..PTO_SCALAR_FORM_COUNT-1},                             field: ScalarOperandField) => bits(5)begin    return DecodeScalarOperandRaw(instruction, form, field)[4:0];end;
pure func ScalarDecodedSystemRegisterAddress(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    field: ScalarOperandField) => SystemRegisterAddressbegin    return DecodeScalarOperandRaw(instruction, form, field)[23:0];end;
pure func ScalarDecodedBoolean(instruction: bits(48),                               form: integer {0..PTO_SCALAR_FORM_COUNT-1},                               field: ScalarOperandField) => booleanbegin    return DecodeScalarOperandRaw(instruction, form, field)[0] == '1';end;
pure func ScalarDecodedMemoryOrder(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1})    => MemoryOrderbegin    let acquire = ScalarDecodedBoolean(instruction, form, ScalarField_aq);    let release = ScalarDecodedBoolean(instruction, form, ScalarField_rl);    if acquire && release then return MemoryOrder_AcquireRelease;    elsif acquire then return MemoryOrder_Acquire;    elsif release then return MemoryOrder_Release;    else return MemoryOrder_Relaxed;    end;end;
readonly func ScalarDecodedAtomicAddress(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    field: ScalarOperandField) => Wordbegin    let address = ReadDecodedScalarRegister(instruction, form, field);    let far = ScalarDecodedBoolean(instruction, form, ScalarField_far);    return AtomicAddress(address, far);end;
pure func ScalarDecodedBits32(instruction: bits(48),                              form: integer {0..PTO_SCALAR_FORM_COUNT-1},                              field: ScalarOperandField) => bits(32)begin    return DecodeScalarOperandRaw(instruction, form, field)[31:0];end;
pure func ScalarDecodedUInt6(instruction: bits(48),                             form: integer {0..PTO_SCALAR_FORM_COUNT-1},                             field: ScalarOperandField) => integer {0..63}begin    return UInt(DecodeScalarOperandRaw(instruction, form, field)[5:0]);end;
pure func ScalarDecodedUInt7(instruction: bits(48),                             form: integer {0..PTO_SCALAR_FORM_COUNT-1},                             field: ScalarOperandField) => integer {0..127}begin    return UInt(DecodeScalarOperandRaw(instruction, form, field)[6:0]);end;
pure func ScalarDecodedBitfieldWidth(instruction: bits(48),                                     form: integer {0..PTO_SCALAR_FORM_COUNT-1})                                     => integer {1..64}begin    return UInt(DecodeScalarOperandRaw(instruction, form, ScalarField_imml)[5:0]) + 1;end;
pure func DecodeScalarBinaryRightModifier(raw: bits(2))                                           => ScalarRightModifierbegin    case raw of        when '00' => return ScalarRight_SignedWord;        when '01' => return ScalarRight_UnsignedWord;        when '10' => return ScalarRight_NegateOrNot;        when '11' => return ScalarRight_None;    end;end;
pure func DecodeScalarComparisonRightModifier(raw: bits(2))                                               => ScalarRightModifierbegin    case raw of        when '00' => return ScalarRight_None;        when '01' => return ScalarRight_SignedWord;        when '10' => return ScalarRight_UnsignedWord;        when '11' => return ScalarRight_NegateOrNot;    end;end;
pure func DecodeScalarSelectRightModifier(raw: bits(2))                                          => ScalarRightModifierbegin    if raw == '11' then        return ScalarRight_NegateOrNot;    else        return ScalarRight_None;    end;end;
pure func DecodeScalarAddressRightModifier(raw: bits(2))                                           => ScalarRightModifierbegin    case raw of        when '00' => return ScalarRight_None;        when '01' => return ScalarRight_SignedWord;        when '10' => return ScalarRight_UnsignedWord;        when '11' => return ScalarRight_NegateOrNot;    end;end;
pure func ScalarDecodedBinaryRightModifier(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1})    => ScalarRightModifierbegin    let raw = DecodeScalarOperandRaw(        instruction,        form,        ScalarField_SrcRType)[1:0];    return DecodeScalarBinaryRightModifier(raw);end;
pure func ScalarDecodedComparisonRightModifier(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1})    => ScalarRightModifierbegin    let raw = DecodeScalarOperandRaw(        instruction,        form,        ScalarField_SrcRType)[1:0];    return DecodeScalarComparisonRightModifier(raw);end;
pure func ScalarDecodedSelectRightModifier(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1})    => ScalarRightModifierbegin    let raw = DecodeScalarOperandRaw(        instruction,        form,        ScalarField_SrcRType)[1:0];    return DecodeScalarSelectRightModifier(raw);end;
pure func ScalarDecodedAddressRightModifier(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1})    => ScalarRightModifierbegin    let raw = DecodeScalarOperandRaw(        instruction,        form,        ScalarField_SrcRType)[1:0];    return DecodeScalarAddressRightModifier(raw);end;
readonly func ReadDecodedScalarRegister(instruction: bits(48),                                        form: integer {0..PTO_SCALAR_FORM_COUNT-1},                                        field: ScalarOperandField) => Wordbegin    return ReadScalarRegisterOperand(ScalarDecodedSelector(instruction, form, field));end;

Architecture behavior

This internal model unit is documented through its normative ASL/NDF owners and validation evidence; it has no reader-guide migration target.

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

6 matching entries

Executable evidence1
  • PTO-SCALAR-MODEL-DISPATCH-DECODE compiles as an independent normative unit
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-DISPATCH-DECODE
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-SCALAR-MODEL-DISPATCH-DECODE-STATIC-001
    Path
    tests/asl/scalar/model/dispatch/decode/scalar-static-decode-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    b2e0ae1c9bf67f177f4f29a549be5b1285a3d3e6d205b389268145334967acf9
    Open exact source ↗ for PTO-AVS-SCALAR-MODEL-DISPATCH-DECODE-STATIC-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

Unit metadata

Open 4 generated metadata fields
id
PTO-SCALAR-MODEL-DISPATCH-DECODE
surface
scalar
classification
[
  "model",
  "dispatch",
  "decode"
]
depends_on
[
  "generated:decoders",
  "PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"
]
Open generated traceability record
{
  "classification": [
    "model",
    "dispatch",
    "decode"
  ],
  "documentation": "docs/scalar/model/dispatch/decode.md",
  "id": "PTO-SCALAR-MODEL-DISPATCH-DECODE",
  "mnemonic": null,
  "readiness_subjects": [],
  "semantic_tests": [],
  "source": "asl/scalar/model/dispatch/decode.asl",
  "surface": "scalar",
  "tests": [
    "PTO-AVS-SCALAR-MODEL-DISPATCH-DECODE-STATIC-001"
  ]
}

Sources and release identity

Show commit, paths, hashes, version, and canonical owners
Release
0.58.5 · Release candidate
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
212dce7a845a9477d78302be500e95a97cb3ceb037a1ac983a87145d334e520d
Generated documentation
docs/scalar/model/dispatch/decode.md · embedded in this page
Documentation SHA-256
93ab3bb3b33b835ba28a928917fecfa9b650f582b0e9fcdbcf0cc64cb6227167

Exact owners