操作数与参数
RegDst- Reg5 updated-base destination or discard
SrcD- Reg5 first store-data source
SrcL- Reg5 address-base source
SrcR- Reg5 register-offset source
SrcRType- register-offset transformation selector
HL.SH.UPO snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 2-byte value.
PTO-SCALAR-HL-SH-UPOhl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
RegDst | 5 | encoding-defined | Reg5 updated-base destination or discard | Encoded zero discards this result without suppressing the instruction's other effects. |
SrcD | 5 | encoding-defined | Reg5 first store-data source | Encoded zero reads the architectural zero GPR. |
SrcL | 5 | encoding-defined | Reg5 address-base source | Encoded zero reads the architectural zero GPR. |
SrcR | 5 | encoding-defined | Reg5 register-offset source | Encoded zero reads the architectural zero GPR. |
SrcRType | 2 | encoding-defined | register-offset transformation selector | Encoded zero leaves the complete PTO_XLEN register-offset value unchanged. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| SrcD | 47:43 | variable |
| SrcRType | 42:41 | variable |
| SrcR | 40:36 | variable |
| SrcL | 35:31 | variable |
| Constant | 30:16 | 15'b101000001001001 |
| RegDst | 15:11 | variable |
| Constant | 10:0 | 11'b00000111110 |
{
"reg": [
{
"bits": 11,
"name": "11'b00000111110"
},
{
"bits": 5,
"name": "RegDst"
},
{
"bits": 15,
"name": "15'b101000001001001"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 2,
"name": "SrcRType"
},
{
"bits": 5,
"name": "SrcD"
}
],
"config": {
"bits": 48,
"fontsize": 13,
"hspace": 900,
"lanes": 2,
"offset": 0
}
}hl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}
RegDstSrcDSrcLSrcRSrcRType下面是该指令所有者中的 Operation;页面没有重写这段行为。
readonly func InstructionContractOperation_HL_SH_UPO() => ScalarOperationbegin return ScalarOperation_HL_SH_UPO;end;readonly func InstructionContractHandler_HL_SH_UPO() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStore;end;
pure func InstructionContractAGUAction_HL_SH_UPO() => ScalarAGUActionbegin return ScalarAGU_Store;end;
pure func InstructionContractAGUAddressKind_HL_SH_UPO() => ScalarAGUAddressKindbegin return ScalarAGU_Register;end;
pure func InstructionContractAGUSizeBytes_HL_SH_UPO() => integer {1,2,4,8}begin return 2;end;
pure func InstructionContractAGUOffsetScale_HL_SH_UPO() => integer {0..3}begin return 0;end;
pure func InstructionContractAGUUpdateMode_HL_SH_UPO() => AddressUpdateModebegin return AddressUpdate_PostIndex;end;
pure func InstructionContractAGUSignedLoad_HL_SH_UPO() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_HL_SH_UPO() => booleanbegin return FALSE;end;// PTO-INSTRUCTION: {"assembly":["hl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}"],"block":[],"catalog_indices":[271],"catalog_records":[{"agu":{"action":"Store","address_kind":"Register","offset_scale":0,"prefetch_returns_address":false,"signed_load":false,"size_bytes":2,"update_mode":"PostIndex"},"asm":"hl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}","constraints":[],"encoding":[{"index":0,"mask":"0x00007fff07ff","match":"0x00005049003e","width_bits":48}],"encoding_kind":"HL48","fields":[{"name":"RegDst","pieces":[{"instruction_lsb":11,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcD","pieces":[{"instruction_lsb":43,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcL","pieces":[{"instruction_lsb":31,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcR","pieces":[{"instruction_lsb":36,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcRType","pieces":[{"instruction_lsb":41,"value_lsb":0,"width":2}],"signedness":"encoding-defined","width":2}],"form_id":"hl_sh_upo_48_5bfb8ea0c992","length_bits":48,"mnemonic":"HL.SH.UPO","semantic_family":"AGU","semantic_group":"STA/POST_INDEX","semantic_handler":"ExecuteScalarStore","semantic_summary":"HL.SH.UPO snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 2-byte value.","status":"accepted"}],"classification":["agu"],"contract":{"block_composition":["none"],"canonical_assembly":["hl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}"],"defaults":["Every displayed operand field is encoded explicitly; encoded zero is a value and never denotes omission.","SrcRType=0 leaves SrcR unchanged, SrcRType=1 sign-extends SrcR[31:0], SrcRType=2 zero-extends SrcR[31:0], and SrcRType=3 negates the full PTO_XLEN value. Encoded shamt zero performs no shift."],"encoding_class":"standalone-encoded","examples":["hl.sh.upo SrcD, [SrcL, SrcR<{.sw,.uw,.neg}>], ->{t, u, Rd}"],"exceptions":["A fixed-bit mismatch, reserved field value, or unavailable selected T/U source raises Fault_IllegalInstruction before instruction effects.","A misaligned 2-byte address raises Fault_DataAlignment before translation or permission. A later permission or bounded-memory failure raises Fault_DataPage at the original address.","A fault emits no successful memory event, performs no partial memory or destination effect, preserves pending writeback, and leaves TPC at the faulting instruction.","Recovery performs a full reissue: every address, source snapshot, preflight, memory operation, and destination is recomputed with no retained progress."],"field_contracts":{},"field_zero_meanings":{"RegDst":"Encoded zero discards this result without suppressing the instruction's other effects.","SrcD":"Encoded zero reads the architectural zero GPR.","SrcL":"Encoded zero reads the architectural zero GPR.","SrcR":"Encoded zero reads the architectural zero GPR.","SrcRType":"Encoded zero leaves the complete PTO_XLEN register-offset value unchanged."},"legality":["Every encoded Reg5 source uses the complete domain: codes 0..23 select absolute GPRs, codes 24..27 select T#1..T#4, and codes 28..31 select U#1..U#4 without consumption.","Every Reg5 destination is assigned: codes 1..23 write GPRs, code 30 pushes U, code 31 pushes T, and codes 0 and 24..29 discard only that result.","All four SrcRType values and all shamt values 0..31 are assigned; apply the modifier before the shift.","Each memory address must be aligned to the 2-byte access size; a 2-byte access is the complete transfer unit."],"memory_effects":["After complete preflight, perform one little-endian 2-byte store and record one relaxed store event.","A successful overlapping store invalidates the overlapping reservation; a nonoverlapping reservation remains valid."],"operands":[{"field":"RegDst","role":"Reg5 updated-base destination or discard"},{"field":"SrcD","role":"Reg5 first store-data source"},{"field":"SrcL","role":"Reg5 address-base source"},{"field":"SrcR","role":"Reg5 register-offset source"},{"field":"SrcRType","role":"register-offset transformation selector"}],"ordering":["Snapshot all explicit and implicit scalar sources before destination or memory effects; duplicate and source/destination aliases observe pre-instruction values.","Complete the relaxed 2-byte memory operation, publish any result or writeback, and then advance TPC."],"standalone_opcode":true,"state_effects":["Form offset = LSL(Modify(SrcR, SrcRType), 0) and add it modulo 2^PTO_XLEN to the SrcL base.","Post-index mode accesses the original base and publishes base plus offset only after successful memory completion.","Snapshot every store-data source before any memory effect or destination publication.","Successful execution advances TPC by 6 bytes; a rejected or faulting attempt does not retire."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-HL-SH-UPO","mnemonic":"HL.SH.UPO","summary":"HL.SH.UPO snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 2-byte value.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-HL-SH-UPO-DECISION-BINDING-001// ndf: kind=contract level=L1 layer=scalar status=accepted// HL.SH.UPO 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-HL-SH-UPO-DECISION-BINDING-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_HL_SH_UPO() => ScalarOperationbegin return ScalarOperation_HL_SH_UPO;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_HL_SH_UPO() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStore;end;
pure func InstructionContractAGUAction_HL_SH_UPO() => ScalarAGUActionbegin return ScalarAGU_Store;end;
pure func InstructionContractAGUAddressKind_HL_SH_UPO() => ScalarAGUAddressKindbegin return ScalarAGU_Register;end;
pure func InstructionContractAGUSizeBytes_HL_SH_UPO() => integer {1,2,4,8}begin return 2;end;
pure func InstructionContractAGUOffsetScale_HL_SH_UPO() => integer {0..3}begin return 0;end;
pure func InstructionContractAGUUpdateMode_HL_SH_UPO() => AddressUpdateModebegin return AddressUpdate_PostIndex;end;
pure func InstructionContractAGUSignedLoad_HL_SH_UPO() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_HL_SH_UPO() => booleanbegin return FALSE;end;// DOC-END: operation
HL.SH.UPO 是一条独立的 48 位 AGU 指令;它形成寄存器偏移地址,并存储一个对齐的小端 2 字节值。
HL.SH.UPO 按 SrcRType 转换 SrcR,不再缩放,并将结果按 2^PTO_XLEN 取模后加到快照中的 SrcL 基址。
完成全部预检后,该指令从已快照的存储数据源执行一次小端 2 字节存储。
后索引模式访问原始基址,并且只在内存操作成功完成后发布基址加偏移量。
SrcL 提供基址;SrcR 提供寄存器偏移量;SrcRType 提供偏移量转换方式。其中的 Reg5 源 SrcD、SrcL、SrcR 使用完整编码域:0..23 选择 GPR,24..27 选择 T#1..T#4,28..31 选择 U#1..U#4,且读取不会消费队列项。SrcD 提供存储数据;RegDst 接收更新后基址;目的端编码 1..23 写 GPR,30 压入 U,31 压入 T,0 与 24..29 只丢弃该结果。SrcRType 的 0..3 均已分配;先执行所选转换,再执行该形式的固定缩放。所有显式和隐式标量源都在内存或目的端效果之前完成快照,因此别名观察到的是指令执行前的值。
成功执行会记录一个 relaxed 存储事件,使重叠保留失效但保留不重叠的保留,并将 TPC 前移 6 字节。
每个有效地址都必须满足 2 字节对齐。未对齐会在地址转换前引发 Fault_DataAlignment;之后的权限或有界内存失败会在原始地址引发 Fault_DataPage。
发生故障时不会记录成功的内存事件,也不会产生部分内存、目的端或回写效果;待处理回写保持不变,故障 TPC 保留以供完整重发。
固定比特不匹配、字段取保留值或所选 T/U 源不可用,都会在指令效果之前引发 Fault_IllegalInstruction。
该示例只演示地址计算;精确行为仍由当前 ASL 与指令契约定义。
若基址为 0x100、偏移源为不经转换的 2,并采用固定左移 0 位,偏移量就是 2,基址加偏移量为 0x102。内存访问使用 0x100,计算出的和值只在成功后发布。若地址对齐且权限允许,指令在该地址存储 2 字节。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
HL.SH.UPO 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-HL-SH-UPO-DECISION-BINDING-001asl/scalar/agu/HL.SH.UPO.asl32bbd3bba9ae43cfae0a08cf71455439575403491860900c0c0267918d64412b3693e27d6e25c78cc2c406626c2dbcae21c558d2af36f08c76563c3ba7750b4514 matching entries
PTO-AVS-AGU-HL-SH-UPO-ALIAS-001tests/asl/scalar/agu/HL.SH.UPO/scalar-exec-hl-sh-upo-registers-001.asl5bdf4f1422e5b4b9a0582b91c468348bb95ee3d5e84ff915bce5e63b3b950b45PTO-AVS-AGU-HL-SH-UPO-BOUND-001tests/asl/scalar/agu/HL.SH.UPO/scalar-bound-hl-sh-upo-address-001.asldfe91ef19668acaa4d34fe0ba6a186c00274b2ca491bfa2f464fb51bf7328b40PTO-AVS-AGU-HL-SH-UPO-EXEC-001tests/asl/scalar/agu/HL.SH.UPO/scalar-exec-hl-sh-upo-direct-001.asla1fe99cdeeb5d072006b1954fc9a875f9b5a79e2c55aa1c5e73b7eb2d2c7e821PTO-AVS-AGU-HL-SH-UPO-FAULT-001tests/asl/scalar/agu/HL.SH.UPO/scalar-fault-hl-sh-upo-precise-001.asl6d4582e2ca0aa12683723072b58d009e9264732d3a131fc4714681e727bf40bdPTO-AVS-SCALAR-HL-SH-UPO-DECODE-001tests/asl/scalar/agu/HL.SH.UPO/scalar-decode-hl-sh-upo-canonical-001.asl6f508f138907d9e4cf69d2bbc30e3e5c0bd69c77317025b10fd2878021e8d669PTO-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-0024…
ADR-0024docs/status/decisions/0024-pc-relative-and-unscaled-agu-addressing.md36dc4f1fbe1714d4eb522f69ccca4216e7a233f55a44cc3f03cb36346911445eLoading ADR-0029…
ADR-0029docs/status/decisions/0029-scalar-agu-totality-and-restart.md778e7bc53a5ae6487c051d66d0f84b6d697d6302628716bf5c745166ce982eefLoading 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": [
"agu"
],
"documentation": "docs/scalar/agu/HL.SH.UPO.md",
"id": "PTO-SCALAR-HL-SH-UPO",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "HL.SH.UPO",
"ndf_clause": "PTO-INST-SCALAR-HL-SH-UPO"
},
"mnemonic": "HL.SH.UPO",
"readiness_subjects": [
"ADR-0024",
"ADR-0029",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-AGU-HL-SH-UPO-ALIAS-001",
"PTO-AVS-AGU-HL-SH-UPO-BOUND-001",
"PTO-AVS-AGU-HL-SH-UPO-EXEC-001",
"PTO-AVS-AGU-HL-SH-UPO-FAULT-001"
],
"source": "asl/scalar/agu/HL.SH.UPO.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-AGU-HL-SH-UPO-ALIAS-001",
"PTO-AVS-AGU-HL-SH-UPO-BOUND-001",
"PTO-AVS-AGU-HL-SH-UPO-EXEC-001",
"PTO-AVS-AGU-HL-SH-UPO-FAULT-001",
"PTO-AVS-SCALAR-HL-SH-UPO-DECODE-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd8681232bbd3bba9ae43cfae0a08cf71455439575403491860900c0c0267918d64412bec6f787da3356e7346c36f44b5d56b0bac59ea984c5a86dfa176c951fcdac409asl/scalar/agu/HL.SH.UPO.aslasl/scalar/agu/HL.SH.UPO.aslasl/scalar/agu/HL.SH.UPO.asl