页面框架已切换为简体中文。尚未完成本地化的交互标签暂时使用英文;ASL/NDF 源、稳定标识和证据在所有语言中保持原文。
PTO-SCALAR-MODEL-DISPATCH-AMO
PTO-SCALAR-MODEL-DISPATCH-AMOASL 伪代码
下面直接显示完整的 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.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-DISPATCH-AMO
- categoryEXECUTION
- 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
Covers Canonical Scalar AMO Effects.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-DISPATCH-AMO
- categoryEXECUTION
- 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
Covers Canonical Scalar AMO Totality.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-DISPATCH-AMO
- categoryBOUNDARY
- 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
PTO-SCALAR-MODEL-DISPATCH-AMO compiles as an independent normative unit
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-DISPATCH-AMO
- categorySTATIC-INVARIANT
- 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
Commit-scoped evidence5
spec/evidence/release-traceability-readiness.json · closed
PTO-EVIDENCE-RELEASE-TRACEABILITYSources 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
spec/evidence/instruction-contract-closure.json · closed
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURESources 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
spec/evidence/architecture-readiness.json · open
PTO-EVIDENCE-ARCHITECTURE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-ARCHITECTURE-READINESS- Path
spec/evidence/architecture-readiness.json- Kind / role
- architecture maturity and blockers
- SHA-256
4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
spec/evidence/release-gate-readiness.json · ready-for-exact-head-verification
PTO-EVIDENCE-RELEASE-GATE-READINESSSources 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
spec/release-manifest.json · draft
PTO-EVIDENCE-RELEASE-MANIFESTSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-MANIFEST- Path
spec/release-manifest.json- Kind / role
- release content and encoding fingerprints
- SHA-256
1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
Unit metadata
Open 4 generated metadata fields
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
精确所有者
- ASL PTO-SCALAR-MODEL-DISPATCH-AMO
asl/scalar/model/dispatch/amo.asl