Operands and parameters
RegSrc0- absolute GPR containing destination byte address
RegSrc1- absolute GPR containing source byte address
RegSrc2- absolute GPR containing complete unsigned XLEN byte count
Copies a non-overlapping byte range in restartable forward memory steps.
PTO-BLOCK-MCOPYMCOPY [RegSrc0, RegSrc1, RegSrc2]| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
RegSrc0 | 5 | encoding-defined | absolute GPR containing destination byte address | Encoded zero reads destination byte address zero. |
RegSrc1 | 5 | encoding-defined | absolute GPR containing source byte address | Encoded zero reads source byte address zero. |
RegSrc2 | 5 | encoding-defined | absolute GPR containing complete unsigned XLEN byte count | Encoded zero reads length zero and selects the legal memory-free no-op. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| RegSrc2 | 31:27 | variable |
| Constant | 26:25 | 2'b00 |
| RegSrc1 | 24:20 | variable |
| RegSrc0 | 19:15 | variable |
| Constant | 14:0 | 15'b000000000110001 |
{
"reg": [
{
"bits": 15,
"name": "15'b000000000110001"
},
{
"bits": 5,
"name": "RegSrc0"
},
{
"bits": 5,
"name": "RegSrc1"
},
{
"bits": 2,
"name": "2'b00"
},
{
"bits": 5,
"name": "RegSrc2"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}MCOPY [RegSrc0, RegSrc1, RegSrc2]
RegSrc0RegSrc1RegSrc2Decode and Operation come directly from the instruction owner and remain separated by execution phase.
readonly func InstructionContractMatches_MCOPY(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_mcopy_32_4fc4a803e995);end;readonly func InstructionContractHandler_MCOPY() => CommandSemanticHandlerbegin return CommandHandler_ExecuteMemoryCopy;end;
pure func InstructionContractMemoryStepRestartable_MCOPY() => booleanbegin return TRUE;end;
pure func InstructionContractForbidsOverlap_MCOPY() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["MCOPY [RegSrc0, RegSrc1, RegSrc2]"],"block":[],"catalog_indices":[69],"catalog_records":[{"asm":"MCOPY [RegSrc0, RegSrc1, RegSrc2]","constraints":[{"field":"RegSrc0","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},{"field":"RegSrc1","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},{"field":"RegSrc2","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}],"encoding":[{"index":0,"mask":"0x06007fff","match":"0x00000031","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"RegSrc0","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegSrc1","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegSrc2","pieces":[{"instruction_lsb":27,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5}],"form_id":"mcopy_32_4fc4a803e995","length_bits":32,"mnemonic":"MCOPY","semantic_family":"CMD","semantic_group":"Bundle Split","semantic_handler":"ExecuteMemoryCopy","semantic_summary":"Copies a non-overlapping byte range in restartable forward memory steps.","status":"accepted"}],"classification":["lifecycle"],"contract":{"block_composition":["MCOPY is one standalone template block. It retires only after the complete byte range has copied or after a legal zero-length no-op."],"canonical_assembly":["MCOPY [RegSrc0, RegSrc1, RegSrc2]"],"defaults":["No operand is omitted. RegSrc0, RegSrc1, and RegSrc2 are absolute GPR selectors 0..23; selector zero reads architectural zero.","RegSrc2 supplies the complete unsigned XLEN byte count. Zero length is legal and performs no memory access."],"encoding_class":"standalone-encoded","examples":["MCOPY [a0, a1, a2]"],"exceptions":["Selector codes 24..31, a wrapping source or destination interval, or overlapping nonempty intervals raise Fault_IllegalInstruction before register-dependent memory, event, reservation, progress, last-command, or TPC effects.","A source or destination access fault is precise to the current memory step. Earlier completed steps remain visible; the rejected step has no read, write, event, reservation, or progress effect."],"field_contracts":{},"field_zero_meanings":{"RegSrc0":"Encoded zero reads destination byte address zero.","RegSrc1":"Encoded zero reads source byte address zero.","RegSrc2":"Encoded zero reads length zero and selects the legal memory-free no-op."},"legality":["Each RegSrc field accepts exactly absolute GPR selectors 0..23. Relative T/U selector codes 24..31 are reserved for MCOPY.","For nonzero length, both half-open intervals must be non-wrapping and disjoint."],"memory_effects":["Copy forward from source to destination in 8-, 4-, 2-, or 1-byte steps. Each step probes source and destination before reading, then records the source load and destination store in program order.","The step write invalidates an overlapping local reservation. A successful zero-length command performs no access and does not change reservation state."],"operands":[{"field":"RegSrc0","role":"absolute GPR containing destination byte address"},{"field":"RegSrc1","role":"absolute GPR containing source byte address"},{"field":"RegSrc2","role":"absolute GPR containing complete unsigned XLEN byte count"}],"ordering":["Each source read precedes its corresponding destination write. The write and progress advance commit together at one restart boundary.","On recovery the template resumes from its saved operand snapshot and first uncommitted byte without rereading GPRs or repeating earlier memory events."],"standalone_opcode":true,"state_effects":["At accepted start, snapshot destination, source, length, instruction PC, and zero progress into trap-preserved MemoryCopyTemplateState.","After the final step, clear active progress, record the original destination and full length as the last memory command, and retire exactly once."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-BLOCK-MCOPY","mnemonic":"MCOPY","summary":"Copies a non-overlapping byte range in restartable forward memory steps.","surface":"block"}// NDF-BEGIN: PTO-MCOPY-RESTART-001// ndf: kind=contract level=L1 layer=block status=accepted// MCOPY MUST snapshot absolute GPR destination, source, and complete XLEN// length, reject wrapping or overlapping nonempty ranges, and copy forward.// Each memory step MUST be an exact restart boundary and MUST NOT be repeated.// NDF-END: PTO-MCOPY-RESTART-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_MCOPY(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_mcopy_32_4fc4a803e995);end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_MCOPY() => CommandSemanticHandlerbegin return CommandHandler_ExecuteMemoryCopy;end;
pure func InstructionContractMemoryStepRestartable_MCOPY() => booleanbegin return TRUE;end;
pure func InstructionContractForbidsOverlap_MCOPY() => booleanbegin return TRUE;end;// DOC-END: operation// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}
MCOPY is a standalone restartable memory command whose operand snapshot and progress state define precise completion and recovery.
MCOPY executes as a standalone 32-bit command and does not require placement inside a BSTART/BSTOP body.
The accepted carrier uses the L32 encoding class and resolves every displayed field before the command reads bindings or changes state.
The command snapshots every required source before its first visible effect, then follows the owner-defined commit or restart boundary.
RegSrc0 — absolute GPR containing destination byte address; RegSrc1 — absolute GPR containing source byte address; RegSrc2 — absolute GPR containing complete unsigned XLEN byte count.Source validation and snapshot precede every register, queue, frame, memory, event, or control-flow effect.
The command commits at the restart boundaries named by its memory contract; earlier committed steps remain visible only where the owner explicitly permits restart progress.
Fixed bits, reserved values, selector domains, and required Block placement are checked before architectural effects.
The current owner reports invalid schema, state, address, or continuation conditions through Fault_IllegalInstruction; no prose on this page creates an additional fault rule.
Rejection occurs before effects unless the current owner explicitly defines a restart boundary with retained progress; completion order remains the ASL order.
This example demonstrates placement and carrier flow only; exact behavior remains in the current ASL and instruction contract.
MCOPY [a0, a1, a2]The shown accepted spelling resolves its fields from the current carrier, snapshots required sources, and then follows the owner-defined state and ordering transition.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
MCOPY MUST snapshot absolute GPR destination, source, and complete XLEN length, reject wrapping or overlapping nonempty ranges, and copy forward. Each memory step MUST be an exact restart boundary and MUST NOT be repeated.
PTO-MCOPY-RESTART-001asl/block/lifecycle/MCOPY.asldb49373a481ffb30922c7a852a3f01e4bdb0442c39292fe8d48375f55cb520b906e3dc2ee6ebe4264371613a62f05321f4ccce45b26436df93800a3eac43803815 matching entries
PTO-AVS-BLOCK-MCOPY-DECODE-001tests/asl/block/lifecycle/MCOPY/block-decode-mcopy-canonical-001.aslcd46d630486a3ce97decadf3d1119d99c1117834d1033d73059184b8444ac23aPTO-AVS-BLOCK-MCOPY-GPR-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-gpr-001.asl052cc6b0cd601edcf044689d0d7372b5bad0249bc1cec167538976e2ca962605PTO-AVS-BLOCK-MCOPY-OVERLAP-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-overlap-001.asl8d40efb47749d5102e8d082c6e15016b8d85c2a448840f78fcd63124e8a8a951PTO-AVS-BLOCK-MCOPY-RANGE-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-range-001.asl8a2ad3ddd5c6c5f7f40b03146ae2276ad43f0eaac3886a4586d85750e4986b71PTO-AVS-BLOCK-MCOPY-RESTART-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-restart-001.asl42cd0eb95bcfdbb5b5843c31abec30ce12de5ba09be386ea3bc2ee26442018faPTO-AVS-BLOCK-MCOPY-XLEN-001tests/asl/block/lifecycle/MCOPY/block-exec-mcopy-xlen-001.asld4e40724d0a5048297842bdd6ad766f964f5bcaf2f86f96e8a83cab7ae44027aPTO-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.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0032…
ADR-0032docs/status/decisions/0032-bundle-command-totality-and-profile-boundaries.mde1f91826817343c0977a565a91e495a15397b83fa2af227124f225821ffa54aeLoading ADR-0052…
ADR-0052docs/status/decisions/0052-direct-tile-and-bundle-catalog-closure.md5fdb38bf480e37affe5075f93b35a57d32803018c986bfe05160f188a19ccaf6Loading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0084…
ADR-0084docs/status/decisions/0084-scalar-system-and-queue-operations.mde068992fa81e2c4ac46e492391a2f784141d68e041bf0b9e0586c37217d1e08c{
"classification": [
"lifecycle"
],
"documentation": "docs/block/lifecycle/MCOPY.md",
"id": "PTO-BLOCK-MCOPY",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "MCOPY",
"ndf_clause": "PTO-INST-BLOCK-MCOPY"
},
"mnemonic": "MCOPY",
"readiness_subjects": [
"ADR-0032",
"ADR-0052",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-BLOCK-MCOPY-GPR-001",
"PTO-AVS-BLOCK-MCOPY-OVERLAP-001",
"PTO-AVS-BLOCK-MCOPY-RANGE-001",
"PTO-AVS-BLOCK-MCOPY-RESTART-001",
"PTO-AVS-BLOCK-MCOPY-XLEN-001"
],
"source": "asl/block/lifecycle/MCOPY.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-MCOPY-DECODE-001",
"PTO-AVS-BLOCK-MCOPY-GPR-001",
"PTO-AVS-BLOCK-MCOPY-OVERLAP-001",
"PTO-AVS-BLOCK-MCOPY-RANGE-001",
"PTO-AVS-BLOCK-MCOPY-RESTART-001",
"PTO-AVS-BLOCK-MCOPY-XLEN-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd86812db49373a481ffb30922c7a852a3f01e4bdb0442c39292fe8d48375f55cb520b904780dd1cb12e9df66f9496e39eaafeb53b55b9520485731cfcdba95d50c8ddaasl/block/lifecycle/MCOPY.aslasl/block/lifecycle/MCOPY.aslasl/block/lifecycle/MCOPY.asl