Operands and parameters
uimm5- unsigned return-address displacement from the embedded high halfword
Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.
PTO-BLOCK-BSTART-ICALLBSTART.ICALL <rt_label>, ->ra| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
uimm5 | 5 | unsigned | unsigned return-address displacement from the embedded high halfword | Encoded zero selects P+2 as the return target. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:27 | 5'b01010 |
| uimm5 | 26:22 | variable |
| Constant | 21:0 | 22'b0101100110000000000001 |
{
"reg": [
{
"bits": 22,
"name": "22'b0101100110000000000001"
},
{
"bits": 5,
"name": "uimm5"
},
{
"bits": 5,
"name": "5'b01010"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}BSTART.ICALL <rt_label>, ->ra
uimm5Decode and Operation come directly from the instruction owner and remain separated by execution phase.
readonly func InstructionContractMatches_BSTART_ICALL(operation: CommandOperation) => booleanbegin return operation == CommandOperation_bstart_icall_32_50166001;end;readonly func InstructionContractHandler_BSTART_ICALL() => CommandSemanticHandlerbegin return CommandHandler_ExecuteBundleStart;end;
readonly func InstructionContractTransfer_BSTART_ICALL() => BundleTransferbegin return BundleTransfer_IndirectCall;end;
pure func InstructionContractWritesReturnAddress_BSTART_ICALL() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["BSTART.ICALL <rt_label>, ->ra"],"block":[],"catalog_indices":[16],"catalog_records":[{"asm":"BSTART.ICALL <rt_label>, ->ra","constraints":[],"encoding":[{"index":0,"mask":"0xf83fffff","match":"0x50166001","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"uimm5","pieces":[{"instruction_lsb":22,"value_lsb":0,"width":5}],"signedness":"unsigned","width":5}],"form_id":"bstart_icall_32_50166001","length_bits":32,"mnemonic":"BSTART.ICALL","semantic_family":"BBD","semantic_group":"BSTART","semantic_handler":"ExecuteBundleStart","semantic_summary":"Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.","status":"accepted"}],"classification":["execution"],"contract":{"block_composition":["BSTART.ICALL retires one active Standard or Floating block whose BARG.BPCN supplies the call target, then atomically opens a new Standard indirect-call block and writes ra."],"canonical_assembly":["BSTART.ICALL <rt_label>, ->ra"],"defaults":["Encoded uimm5 zero is a real zero displacement from the embedded C.SETRET halfword."],"encoding_class":"standalone-encoded","examples":["BSTART.ICALL <rt_label>, ->ra"],"exceptions":["No active retiring Standard or Floating block raises Fault_BundleControl before target or return-address effects.","An odd retiring BARG.BPCN raises Fault_InstructionPC before retiring-block effects.","Decode, applicability, target, or retiring-commit failure preserves ra and the retiring BARG and installs no candidate BARG."],"field_contracts":{},"field_zero_meanings":{"uimm5":"Encoded zero selects P+2 as the return target."},"legality":["This fused form is the only accepted indirect-call spelling; bare BSTART.* ICALL forms are deleted.","The retiring block must be Standard or Floating because System BARG has no selecting BPCN."],"memory_effects":["Any memory effects of the retiring block complete before the indirect-call BARG and ra are published; BSTART.ICALL itself performs no memory access."],"operands":[{"field":"uimm5","role":"unsigned return-address displacement from the embedded high halfword"}],"ordering":["Snapshot and validate retiring BARG.BPCN, successfully commit the retiring block, then atomically install the new STD BARG and write ra."],"standalone_opcode":true,"state_effects":["Installs BARG.BPC=P, BlockType=STD, BPCN=the retiring BARG.BPCN snapshot, TYPE=ICALL, TAKEN=1, and writes return_target to ra.","The indirect target is selected only when the new block later commits."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-BLOCK-BSTART-ICALL","mnemonic":"BSTART.ICALL","summary":"Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.","surface":"block"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-BSTART-ICALL-DECISION-BINDING-001// ndf: kind=contract level=L1 layer=block status=accepted// BSTART.ICALL MUST implement the mnemonic-local canonical assembly, encoded// legality, defaults, state and memory effects, ordering, and fault boundaries// declared in this owner. The operation region below is the executable binding// for every accepted decision that names this mnemonic.// NDF-END: PTO-BSTART-ICALL-DECISION-BINDING-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_BSTART_ICALL(operation: CommandOperation) => booleanbegin return operation == CommandOperation_bstart_icall_32_50166001;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_BSTART_ICALL() => CommandSemanticHandlerbegin return CommandHandler_ExecuteBundleStart;end;
readonly func InstructionContractTransfer_BSTART_ICALL() => BundleTransferbegin return BundleTransfer_IndirectCall;end;
pure func InstructionContractWritesReturnAddress_BSTART_ICALL() => booleanbegin return TRUE;end;// DOC-END: operation
BSTART.ICALL is a 32-bit block-start command for the ICALL form. It establishes the pending block identity and selectors; the completed block, not the start command alone, owns body execution and result commitment.
Header commands execute sequentially after the start, while BSTOP or the next BSTART is the boundary that validates and retires the completed block. The current owner gives this exact composition checklist:
BSTART.ICALL retires one active Standard or Floating block whose BARG.BPCN supplies the call target, then atomically opens a new Standard indirect-call block and writes ra.After any active predecessor is retired successfully, the command initializes the new pending BARG or operation descriptor and continues header execution at the sequential PC. No block destination or memory result becomes visible merely because the start decoded. The return-address result is published only when start applicability, target checks, and predecessor retirement all succeed.
uimm5 supplies the encoded offset or addend; its exact assigned domain remains in the generated contract below.The start transition is all-or-nothing with predecessor retirement for applicability and target checks. After the start succeeds, the later completion boundary validates the full composition before any body result can commit.
Reserved selectors, invalid targets, malformed completed composition, or failed predecessor retirement are rejected before new-block or body effects.
This worked example is illustrative; it illustrates the current owner without replacing it.
BSTART.ICALL <rt_label>, ->raAssume predecessor retirement and target checks succeed. BSTART.ICALL <rt_label>, ->ra opens the pending BSTART.ICALL form; subsequent header/body commands remain provisional until BSTOP or the next BSTART validates the complete composition.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
BSTART.ICALL MUST implement the mnemonic-local canonical assembly, encoded legality, defaults, state and memory effects, ordering, and fault boundaries declared in this owner. The operation region below is the executable binding for every accepted decision that names this mnemonic.
PTO-BSTART-ICALL-DECISION-BINDING-001asl/block/execution/BSTART.ICALL.asl5bc8047a23da2ba23a5834959d1219a3a38a4a50b8ab9174a4b96d8b93c28f7f164eafd40dabc9b622119581651d78426f238a0d4340522ad988785a34d0af3815 matching entries
PTO-AVS-BLOCK-BSTART-ICALL-BARG-001tests/asl/block/execution/BSTART.ICALL/block-state-bstart-icall-barg-001.aslbbae7d673d1b2b7553b48457e69bdab799882f3e1bac33872bc6cd80f279aa70PTO-AVS-BLOCK-BSTART-ICALL-DECODE-001tests/asl/block/execution/BSTART.ICALL/block-decode-bstart-icall-canonical-001.asla9e6821f84e6dead81f6ef06c8bfb5c7ab351f5dc0a2c45431f89e7eebda04bdPTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001tests/asl/block/execution/BSTART.ICALL/block-fault-bstart-icall-rollback-001.aslf37357ba984f779b29808919e401ca09b05674735ba7d619cdc94ca51bfced78PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001tests/asl/block/execution/BSTART.ICALL/block-bound-bstart-icall-standalone-reject-001.asl99aa0ea116e98147a0f19f72a0bce1cffb36c273228accf10f887c52f8eabfd3PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001tests/asl/block/execution/BSTART.ICALL/block-fault-bstart-icall-sys-source-001.aslf0308b27a44e9b398b0fee76c5d74b7128d5f981b5987e3171d8af6a24911b19PTO-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-0055…
ADR-0055docs/status/decisions/0055-complete-bundle-bior-schema-and-defaults.mdd84224ee1980cb16a6c4efb6ce3c5c2649d5db27002e7e6429850da189a2cdffLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0077…
ADR-0077docs/status/decisions/0077-block-start-and-extension-reservations.md20e19c71c2c967447a115e353f5e3673fc14276dabbcf9a96922f54507536973{
"classification": [
"execution"
],
"documentation": "docs/block/execution/BSTART.ICALL.md",
"id": "PTO-BLOCK-BSTART-ICALL",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "BSTART.ICALL",
"ndf_clause": "PTO-INST-BLOCK-BSTART-ICALL"
},
"mnemonic": "BSTART.ICALL",
"readiness_subjects": [
"ADR-0032",
"ADR-0052",
"ADR-0055",
"ADR-0059",
"ADR-0077"
],
"semantic_tests": [
"PTO-AVS-BLOCK-BSTART-ICALL-BARG-001",
"PTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001",
"PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001",
"PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001"
],
"source": "asl/block/execution/BSTART.ICALL.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-BSTART-ICALL-BARG-001",
"PTO-AVS-BLOCK-BSTART-ICALL-DECODE-001",
"PTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001",
"PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001",
"PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868125bc8047a23da2ba23a5834959d1219a3a38a4a50b8ab9174a4b96d8b93c28f7f7773d64b02e0e9adb77f19314e74c411db4a08adc8956dd37354ea9b9f40d89aasl/block/execution/BSTART.ICALL.aslasl/block/execution/BSTART.ICALL.aslasl/block/execution/BSTART.ICALL.asl