跳到主要内容
页面框架已切换为简体中文。尚未完成本地化的交互标签暂时使用英文;ASL/NDF 源、稳定标识和证据在所有语言中保持原文。

PTO-SCALAR-MODEL-DISPATCH-AMO

PTO-SCALAR-MODEL-DISPATCH-AMO

ASL 伪代码

下面直接显示完整的 ASL 所有者。

// PTO-UNIT: {"id":"PTO-SCALAR-MODEL-DISPATCH-AMO","surface":"scalar","classification":["model","dispatch","amo"],"depends_on":["PTO-SCALAR-MODEL-DISPATCH-DECODE","PTO-SCALAR-MODEL-AMO-SEMANTICS","PTO-SCALAR-CASB","PTO-SCALAR-CASD","PTO-SCALAR-CASH","PTO-SCALAR-CASW","PTO-SCALAR-DMA","PTO-SCALAR-HL-CASB","PTO-SCALAR-HL-CASD","PTO-SCALAR-HL-CASH","PTO-SCALAR-HL-CASW","PTO-SCALAR-LD-ADD","PTO-SCALAR-LD-AND","PTO-SCALAR-LD-OR","PTO-SCALAR-LD-SMAX","PTO-SCALAR-LD-SMIN","PTO-SCALAR-LD-UMAX","PTO-SCALAR-LD-UMIN","PTO-SCALAR-LD-XOR","PTO-SCALAR-LR-B","PTO-SCALAR-LR-D","PTO-SCALAR-LR-H","PTO-SCALAR-LR-W","PTO-SCALAR-LW-ADD","PTO-SCALAR-LW-AND","PTO-SCALAR-LW-OR","PTO-SCALAR-LW-SMAX","PTO-SCALAR-LW-SMIN","PTO-SCALAR-LW-UMAX","PTO-SCALAR-LW-UMIN","PTO-SCALAR-LW-XOR","PTO-SCALAR-SC-B","PTO-SCALAR-SC-D","PTO-SCALAR-SC-H","PTO-SCALAR-SC-W","PTO-SCALAR-SD-ADD","PTO-SCALAR-SD-AND","PTO-SCALAR-SD-OR","PTO-SCALAR-SD-SMAX","PTO-SCALAR-SD-SMIN","PTO-SCALAR-SD-UMAX","PTO-SCALAR-SD-UMIN","PTO-SCALAR-SD-XOR","PTO-SCALAR-SW-ADD","PTO-SCALAR-SW-AND","PTO-SCALAR-SW-OR","PTO-SCALAR-SW-SMAX","PTO-SCALAR-SW-SMIN","PTO-SCALAR-SW-UMAX","PTO-SCALAR-SW-UMIN","PTO-SCALAR-SW-XOR","PTO-SCALAR-SWAPB","PTO-SCALAR-SWAPD","PTO-SCALAR-SWAPH","PTO-SCALAR-SWAPW"]}pure func ScalarAtomicOperationForOperation(operation: ScalarOperation)        => AtomicOperationbegin    case operation of        when ScalarOperation_LD_ADD, ScalarOperation_LW_ADD,             ScalarOperation_SD_ADD, ScalarOperation_SW_ADD =>            return Atomic_ADD;        when ScalarOperation_LD_AND, ScalarOperation_LW_AND,             ScalarOperation_SD_AND, ScalarOperation_SW_AND =>            return Atomic_AND;        when ScalarOperation_LD_OR, ScalarOperation_LW_OR,             ScalarOperation_SD_OR, ScalarOperation_SW_OR =>            return Atomic_OR;        when ScalarOperation_LD_XOR, ScalarOperation_LW_XOR,             ScalarOperation_SD_XOR, ScalarOperation_SW_XOR =>            return Atomic_XOR;        when ScalarOperation_LD_SMIN, ScalarOperation_LW_SMIN,             ScalarOperation_SD_SMIN, ScalarOperation_SW_SMIN =>            return Atomic_SMIN;        when ScalarOperation_LD_SMAX, ScalarOperation_LW_SMAX,             ScalarOperation_SD_SMAX, ScalarOperation_SW_SMAX =>            return Atomic_SMAX;        when ScalarOperation_LD_UMIN, ScalarOperation_LW_UMIN,             ScalarOperation_SD_UMIN, ScalarOperation_SW_UMIN =>            return Atomic_UMIN;        when ScalarOperation_LD_UMAX, ScalarOperation_LW_UMAX,             ScalarOperation_SD_UMAX, ScalarOperation_SW_UMAX =>            return Atomic_UMAX;        otherwise => unreachable;    end;end;
func ExecuteDecodedLoadReserved(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    size_bytes: integer {1,2,4,8})begin    let old_value = LoadReserved(        ScalarDecodedAtomicAddress(instruction, form, ScalarField_SrcL),        size_bytes, ScalarDecodedMemoryOrder(instruction, form));    if _LastFault == Fault_None then        WriteScalarDestination(            ScalarDecodedSelector(instruction, form, ScalarField_RegDst),            NormalizeAtomicReturn(old_value, size_bytes));    end;end;
func ExecuteDecodedStoreConditional(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    size_bytes: integer {1,2,4,8})begin    let status = StoreConditional(        ScalarDecodedAtomicAddress(instruction, form, ScalarField_SrcR),        size_bytes,        ReadDecodedScalarRegister(instruction, form, ScalarField_SrcL),        ScalarDecodedMemoryOrder(instruction, form));    if _LastFault == Fault_None then        WriteScalarDestination(            ScalarDecodedSelector(instruction, form, ScalarField_RegDst), status);    end;end;
func ExecuteDecodedAtomicReadModifyWrite(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    operation: AtomicOperation, size_bytes: integer {1,2,4,8},    write_result: boolean)begin    let old_value = AtomicReadModifyWrite(        ScalarDecodedAtomicAddress(instruction, form, ScalarField_SrcL),        size_bytes, operation,        ReadDecodedScalarRegister(instruction, form, ScalarField_SrcR),        ScalarDecodedMemoryOrder(instruction, form));    if write_result && _LastFault == Fault_None then        WriteScalarDestination(            ScalarDecodedSelector(instruction, form, ScalarField_RegDst),            NormalizeAtomicReturn(old_value, size_bytes));    end;end;
func ExecuteDecodedCompareAndSwap(    instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1},    size_bytes: integer {1,2,4,8})begin    let old_value = CompareAndSwap(        ScalarDecodedAtomicAddress(instruction, form, ScalarField_SrcL),        size_bytes,        ReadDecodedScalarRegister(instruction, form, ScalarField_SrcR),        ReadDecodedScalarRegister(instruction, form, ScalarField_SrcD),        ScalarDecodedMemoryOrder(instruction, form));    if _LastFault == Fault_None then        WriteScalarDestination(            ScalarDecodedSelector(instruction, form, ScalarField_RegDst),            NormalizeAtomicReturn(old_value, size_bytes));    end;end;
func ExecuteDecodedAMOForm(instruction: bits(48),                           form: integer {0..PTO_SCALAR_FORM_COUNT-1})begin    let operation = ScalarOperationOfForm(form);    case operation of        when ScalarOperation_DMA =>            ExecuteScalarDMACopy64(                ReadDecodedScalarRegister(instruction, form, ScalarField_SrcL),                ReadDecodedScalarRegister(instruction, form, ScalarField_SrcR));        when ScalarOperation_LR_B =>            ExecuteDecodedLoadReserved(instruction, form, 1);        when ScalarOperation_LR_H =>            ExecuteDecodedLoadReserved(instruction, form, 2);        when ScalarOperation_LR_W =>            ExecuteDecodedLoadReserved(instruction, form, 4);        when ScalarOperation_LR_D =>            ExecuteDecodedLoadReserved(instruction, form, 8);
        when ScalarOperation_SC_B =>            ExecuteDecodedStoreConditional(instruction, form, 1);        when ScalarOperation_SC_H =>            ExecuteDecodedStoreConditional(instruction, form, 2);        when ScalarOperation_SC_W =>            ExecuteDecodedStoreConditional(instruction, form, 4);        when ScalarOperation_SC_D =>            ExecuteDecodedStoreConditional(instruction, form, 8);
        when ScalarOperation_SWAPB =>            ExecuteDecodedAtomicReadModifyWrite(                instruction, form, Atomic_SWAP, 1, TRUE);        when ScalarOperation_SWAPH =>            ExecuteDecodedAtomicReadModifyWrite(                instruction, form, Atomic_SWAP, 2, TRUE);        when ScalarOperation_SWAPW =>            ExecuteDecodedAtomicReadModifyWrite(                instruction, form, Atomic_SWAP, 4, TRUE);        when ScalarOperation_SWAPD =>            ExecuteDecodedAtomicReadModifyWrite(                instruction, form, Atomic_SWAP, 8, TRUE);
        when ScalarOperation_CASB, ScalarOperation_HL_CASB =>            ExecuteDecodedCompareAndSwap(instruction, form, 1);        when ScalarOperation_CASH, ScalarOperation_HL_CASH =>            ExecuteDecodedCompareAndSwap(instruction, form, 2);        when ScalarOperation_CASW, ScalarOperation_HL_CASW =>            ExecuteDecodedCompareAndSwap(instruction, form, 4);        when ScalarOperation_CASD, ScalarOperation_HL_CASD =>            ExecuteDecodedCompareAndSwap(instruction, form, 8);
        when ScalarOperation_LW_ADD, ScalarOperation_LW_AND,             ScalarOperation_LW_OR, ScalarOperation_LW_XOR,             ScalarOperation_LW_SMIN, ScalarOperation_LW_SMAX,             ScalarOperation_LW_UMIN, ScalarOperation_LW_UMAX =>            ExecuteDecodedAtomicReadModifyWrite(instruction, form,                ScalarAtomicOperationForOperation(operation), 4, TRUE);        when ScalarOperation_LD_ADD, ScalarOperation_LD_AND,             ScalarOperation_LD_OR, ScalarOperation_LD_XOR,             ScalarOperation_LD_SMIN, ScalarOperation_LD_SMAX,             ScalarOperation_LD_UMIN, ScalarOperation_LD_UMAX =>            ExecuteDecodedAtomicReadModifyWrite(instruction, form,                ScalarAtomicOperationForOperation(operation), 8, TRUE);        when ScalarOperation_SW_ADD, ScalarOperation_SW_AND,             ScalarOperation_SW_OR, ScalarOperation_SW_XOR,             ScalarOperation_SW_SMIN, ScalarOperation_SW_SMAX,             ScalarOperation_SW_UMIN, ScalarOperation_SW_UMAX =>            ExecuteDecodedAtomicReadModifyWrite(instruction, form,                ScalarAtomicOperationForOperation(operation), 4, FALSE);        when ScalarOperation_SD_ADD, ScalarOperation_SD_AND,             ScalarOperation_SD_OR, ScalarOperation_SD_XOR,             ScalarOperation_SD_SMIN, ScalarOperation_SD_SMAX,             ScalarOperation_SD_UMIN, ScalarOperation_SD_UMAX =>            ExecuteDecodedAtomicReadModifyWrite(instruction, form,                ScalarAtomicOperationForOperation(operation), 8, FALSE);
        otherwise => unreachable;    end;end;

架构行为

该内部模型单元不在双语读者指南迁移范围内;请直接阅读本页的 ASL/NDF 所有者与验证证据。

NDF 条款

正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。

No NDF clause is attached to this unit.

Evidence index

9 matching entries

Executable evidence4
  • Covers Canonical Scalar AMO Aliases.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-DISPATCH-AMO
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-SCALAR-AMO-ALIASES-001
    Path
    tests/asl/scalar/model/dispatch/amo/scalar-exec-aliases-001.asl
    Kind / role
    execution
    Pass condition
    ValidateCanonicalScalarAMOAliases completes without assertion failure
    SHA-256
    209f07235301271daf400e4c1818fe905a0adecf0b26dcda993664ea9bae4772
    Open exact source ↗ for PTO-AVS-SCALAR-AMO-ALIASES-001
  • Covers Canonical Scalar AMO Effects.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-DISPATCH-AMO
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-SCALAR-AMO-EFFECTS-001
    Path
    tests/asl/scalar/model/dispatch/amo/scalar-exec-effects-001.asl
    Kind / role
    execution
    Pass condition
    ValidateCanonicalScalarAMOEffects completes without assertion failure
    SHA-256
    cec887e71586ff97ec3e3c00ff85f6153932f8afe8c18fb900df8efa0e8c507b
    Open exact source ↗ for PTO-AVS-SCALAR-AMO-EFFECTS-001
  • Covers Canonical Scalar AMO Totality.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-DISPATCH-AMO
    3. categoryBOUNDARY
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-SCALAR-AMO-TOTALITY-001
    Path
    tests/asl/scalar/model/dispatch/amo/scalar-bound-totality-001.asl
    Kind / role
    boundary
    Pass condition
    ValidateCanonicalScalarAMOTotality completes without assertion failure
    SHA-256
    d9e1536e01308b9aa83467e048b705b1138a4fd7e6b64844541796df6c48129d
    Open exact source ↗ for PTO-AVS-SCALAR-AMO-TOTALITY-001
  • PTO-SCALAR-MODEL-DISPATCH-AMO compiles as an independent normative unit
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-DISPATCH-AMO
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-SCALAR-MODEL-DISPATCH-AMO-STATIC-001
    Path
    tests/asl/scalar/model/dispatch/amo/scalar-static-amo-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    e7c5d112f6f2d8279ef596209679acb231e848122564f8830437ba6062b8a64c
    Open exact source ↗ for PTO-AVS-SCALAR-MODEL-DISPATCH-AMO-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-AMO
surface
scalar
classification
[
  "model",
  "dispatch",
  "amo"
]
depends_on
[
  "PTO-SCALAR-MODEL-DISPATCH-DECODE",
  "PTO-SCALAR-MODEL-AMO-SEMANTICS",
  "PTO-SCALAR-CASB",
  "PTO-SCALAR-CASD",
  "PTO-SCALAR-CASH",
  "PTO-SCALAR-CASW",
  "PTO-SCALAR-DMA",
  "PTO-SCALAR-HL-CASB",
  "PTO-SCALAR-HL-CASD",
  "PTO-SCALAR-HL-CASH",
  "PTO-SCALAR-HL-CASW",
  "PTO-SCALAR-LD-ADD",
  "PTO-SCALAR-LD-AND",
  "PTO-SCALAR-LD-OR",
  "PTO-SCALAR-LD-SMAX",
  "PTO-SCALAR-LD-SMIN",
  "PTO-SCALAR-LD-UMAX",
  "PTO-SCALAR-LD-UMIN",
  "PTO-SCALAR-LD-XOR",
  "PTO-SCALAR-LR-B",
  "PTO-SCALAR-LR-D",
  "PTO-SCALAR-LR-H",
  "PTO-SCALAR-LR-W",
  "PTO-SCALAR-LW-ADD",
  "PTO-SCALAR-LW-AND",
  "PTO-SCALAR-LW-OR",
  "PTO-SCALAR-LW-SMAX",
  "PTO-SCALAR-LW-SMIN",
  "PTO-SCALAR-LW-UMAX",
  "PTO-SCALAR-LW-UMIN",
  "PTO-SCALAR-LW-XOR",
  "PTO-SCALAR-SC-B",
  "PTO-SCALAR-SC-D",
  "PTO-SCALAR-SC-H",
  "PTO-SCALAR-SC-W",
  "PTO-SCALAR-SD-ADD",
  "PTO-SCALAR-SD-AND",
  "PTO-SCALAR-SD-OR",
  "PTO-SCALAR-SD-SMAX",
  "PTO-SCALAR-SD-SMIN",
  "PTO-SCALAR-SD-UMAX",
  "PTO-SCALAR-SD-UMIN",
  "PTO-SCALAR-SD-XOR",
  "PTO-SCALAR-SW-ADD",
  "PTO-SCALAR-SW-AND",
  "PTO-SCALAR-SW-OR",
  "PTO-SCALAR-SW-SMAX",
  "PTO-SCALAR-SW-SMIN",
  "PTO-SCALAR-SW-UMAX",
  "PTO-SCALAR-SW-UMIN",
  "PTO-SCALAR-SW-XOR",
  "PTO-SCALAR-SWAPB",
  "PTO-SCALAR-SWAPD",
  "PTO-SCALAR-SWAPH",
  "PTO-SCALAR-SWAPW"
]
Open generated traceability record
{
  "classification": [
    "model",
    "dispatch",
    "amo"
  ],
  "documentation": "docs/scalar/model/dispatch/amo.md",
  "id": "PTO-SCALAR-MODEL-DISPATCH-AMO",
  "mnemonic": null,
  "readiness_subjects": [],
  "semantic_tests": [
    "PTO-AVS-SCALAR-AMO-ALIASES-001",
    "PTO-AVS-SCALAR-AMO-EFFECTS-001",
    "PTO-AVS-SCALAR-AMO-TOTALITY-001"
  ],
  "source": "asl/scalar/model/dispatch/amo.asl",
  "surface": "scalar",
  "tests": [
    "PTO-AVS-SCALAR-AMO-ALIASES-001",
    "PTO-AVS-SCALAR-AMO-EFFECTS-001",
    "PTO-AVS-SCALAR-AMO-TOTALITY-001",
    "PTO-AVS-SCALAR-MODEL-DISPATCH-AMO-STATIC-001"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
6c1cbff9ffb76d530083ce68fc0b2b288475080ba5713b28d363f3fb23ea2666
生成文档
docs/scalar/model/dispatch/amo.md · 已融合到当前页面
文档 SHA-256
2b4894acc4e69dd07784b99634d76d68ffe7da2542f9d92dd56511038726ac71

精确所有者