操作数与参数
SrcL- Reg5 load address source
SrcZero- ignored 5-bit alias field
RegDst- Reg5 loaded-value destination
aq- acquire ordering bit
rl- release ordering bit
far- flat-address routing hint
LR.D loads one doubleword, establishes a 64-byte-line reservation, and publishes the prior value.
PTO-SCALAR-LR-Dlr.d [SrcL], ->Rdlr.d.aq [SrcL], ->Rdlr.d.rl [SrcL], ->Rdlr.d.f [SrcL], ->Rdlr.d.aqrl [SrcL], ->Rdlr.d.aqf [SrcL], ->Rdlr.d.rlf [SrcL], ->Rdlr.d.aqrlf [SrcL], ->Rd| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
RegDst | 5 | encoding-defined | Reg5 loaded-value destination | Encoded zero discards the loaded value. |
SrcL | 5 | encoding-defined | Reg5 load address source | Encoded zero reads the architectural zero register as the load address. |
SrcZero | 5 | encoding-defined | ignored 5-bit alias field | Encoded zero is one of 32 ignored aliases and supplies no operand. |
aq | 1 | encoding-defined | acquire ordering bit | Encoded zero disables acquire ordering. |
far | 1 | encoding-defined | flat-address routing hint | Encoded zero selects the default flat-address route. |
rl | 1 | encoding-defined | release ordering bit | Encoded zero disables release ordering. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:28 | 4'b0011 |
| far | 27 | variable |
| aq | 26 | variable |
| rl | 25 | variable |
| SrcZero | 24:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:12 | 3'b000 |
| RegDst | 11:7 | variable |
| Constant | 6:0 | 7'b0001011 |
{
"reg": [
{
"bits": 7,
"name": "7'b0001011"
},
{
"bits": 5,
"name": "RegDst"
},
{
"bits": 3,
"name": "3'b000"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcZero"
},
{
"bits": 1,
"name": "rl"
},
{
"bits": 1,
"name": "aq"
},
{
"bits": 1,
"name": "far"
},
{
"bits": 4,
"name": "4'b0011"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}lr.d<.{aq, rl, f, aqrl, aqf, rlf, aqrlf}> [SrcL], {->t, ->u, ->Rd}
SrcLSrcZeroRegDstaqrlfar下面是该指令所有者中的 Operation;页面没有重写这段行为。
readonly func InstructionContractOperation_LR_D() => ScalarOperationbegin return ScalarOperation_LR_D;end;readonly func InstructionContractHandler_LR_D() => ScalarSemanticHandlerbegin return ScalarHandler_LoadReserved;end;
pure func InstructionContractLoadSizeBytes_LR_D() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractIgnoresSrcZero_LR_D() => booleanbegin return TRUE;end;
pure func InstructionContractZeroExtendsResult_LR_D() => booleanbegin return FALSE;end;
pure func InstructionContractSignExtendsResult_LR_D() => booleanbegin return FALSE;end;
pure func InstructionContractReservationGranuleBytes_LR_D() => integer {1..262144}begin return PTO_RESERVATION_GRANULE_BYTES;end;// PTO-INSTRUCTION: {"assembly":["lr.d [SrcL], ->Rd","lr.d.aq [SrcL], ->Rd","lr.d.rl [SrcL], ->Rd","lr.d.f [SrcL], ->Rd","lr.d.aqrl [SrcL], ->Rd","lr.d.aqf [SrcL], ->Rd","lr.d.rlf [SrcL], ->Rd","lr.d.aqrlf [SrcL], ->Rd"],"block":[],"catalog_indices":[335],"catalog_records":[{"asm":"lr.d<.{aq, rl, f, aqrl, aqf, rlf, aqrlf}> [SrcL], {->t, ->u, ->Rd}","constraints":[],"encoding":[{"index":0,"mask":"0xf000707f","match":"0x3000000b","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"RegDst","pieces":[{"instruction_lsb":7,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcL","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcZero","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"aq","pieces":[{"instruction_lsb":26,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1},{"name":"far","pieces":[{"instruction_lsb":27,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1},{"name":"rl","pieces":[{"instruction_lsb":25,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1}],"form_id":"lr_d_32_84d21a553dc1","length_bits":32,"mnemonic":"LR.D","semantic_family":"AMO","semantic_group":"AMO","semantic_handler":"LoadReserved","semantic_summary":"LR.D loads one doubleword, establishes a 64-byte-line reservation, and publishes the prior value.","status":"accepted"}],"classification":["amo"],"contract":{"block_composition":["none"],"canonical_assembly":["lr.d [SrcL], ->Rd","lr.d.aq [SrcL], ->Rd","lr.d.rl [SrcL], ->Rd","lr.d.f [SrcL], ->Rd","lr.d.aqrl [SrcL], ->Rd","lr.d.aqf [SrcL], ->Rd","lr.d.rlf [SrcL], ->Rd","lr.d.aqrlf [SrcL], ->Rd"],"defaults":["SrcL and RegDst are required Reg5 fields. Encoded source zero reads the architectural zero register; encoded destination zero discards the loaded value.","SrcZero is an ignored alias field. Every encoding 0..31 selects the same operation and no register or queue is read through SrcZero.","aq=0 and rl=0 select relaxed ordering. aq=1 selects acquire, rl=1 selects release, and aq=1 with rl=1 selects acquire-release.","far=0 selects the default flat-address route. far=1 is a profile routing hint; the reference profile preserves the same architectural address and reservation behavior."],"encoding_class":"standalone-encoded","examples":["lr.d [a0], ->a1","lr.d.aqrl [t#1], ->u","lr.d.f [sp], ->t"],"exceptions":["The effective address must be aligned to 8 bytes. Alignment, translation, and read permission are checked before effects and report the original address.","On a fault, no destination or queue value is published, no memory event is emitted, the prior reservation is preserved, and TPC does not advance. Trap entry saves the original TPC and recovery restores it for full reissue.","An undecodable fixed-bit pattern raises Fault_IllegalInstruction before effects. SrcZero, aq, rl, far, and all Reg5 values have no reserved encodings."],"field_contracts":{},"field_zero_meanings":{"RegDst":"Encoded zero discards the loaded value.","SrcL":"Encoded zero reads the architectural zero register as the load address.","SrcZero":"Encoded zero is one of 32 ignored aliases and supplies no operand.","aq":"Encoded zero disables acquire ordering.","far":"Encoded zero selects the default flat-address route.","rl":"Encoded zero disables release ordering."},"legality":["All 32 SrcL Reg5 encodings are assigned: 0..23 select absolute GPRs, 24..27 select T#1..T#4, and 28..31 select U#1..U#4.","All 32 RegDst encodings are assigned. Code 0 and codes 24..29 discard, code 30 pushes U, code 31 pushes T, and codes 1..23 write the named absolute GPR.","All 32 SrcZero encodings are ignored aliases. All aq, rl, and far combinations are assigned.","The effective address must be aligned to 8 bytes."],"memory_effects":["Read one 8-byte little-endian doubleword after complete access preflight and record one ordered load event at the translated address.","After a successful load, replace any prior local reservation with the original address and width 8; SC matching uses the containing 64-byte reservation granule.","The 64-bit old value is published unchanged."],"operands":[{"field":"SrcL","role":"Reg5 load address source"},{"field":"SrcZero","role":"ignored 5-bit alias field"},{"field":"RegDst","role":"Reg5 loaded-value destination"},{"field":"aq","role":"acquire ordering bit"},{"field":"rl","role":"release ordering bit"},{"field":"far","role":"flat-address routing hint"}],"ordering":["aq=0,rl=0 records relaxed ordering; aq=1,rl=0 acquire; aq=0,rl=1 release; aq=1,rl=1 acquire-release.","far changes only the route hint in the reference profile and does not change the address, event order, loaded value, or reservation."],"standalone_opcode":true,"state_effects":["Snapshot SrcL before any memory, reservation, or destination effect. SrcZero is not read.","On success, publish the doubleword old value only after the load completes and establish the 64-byte-line reservation.","The 64-bit old value is published unchanged.","Successful execution advances TPC by four bytes. Fault entry saves the original TPC, redirects the live TPC, and recovery restores the saved TPC for full reissue."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-LR-D","mnemonic":"LR.D","summary":"LR.D loads one doubleword, establishes a 64-byte-line reservation, and publishes the prior value.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// DOC-BEGIN: decodereadonly func InstructionContractOperation_LR_D() => ScalarOperationbegin return ScalarOperation_LR_D;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_LR_D() => ScalarSemanticHandlerbegin return ScalarHandler_LoadReserved;end;
pure func InstructionContractLoadSizeBytes_LR_D() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractIgnoresSrcZero_LR_D() => booleanbegin return TRUE;end;
pure func InstructionContractZeroExtendsResult_LR_D() => booleanbegin return FALSE;end;
pure func InstructionContractSignExtendsResult_LR_D() => booleanbegin return FALSE;end;
pure func InstructionContractReservationGranuleBytes_LR_D() => integer {1..262144}begin return PTO_RESERVATION_GRANULE_BYTES;end;// DOC-END: operation
LR.D 载入一个双字,发布其零扩展值,并把本地保留替换为包含该地址的 64 字节缓存行。
ASL DOC 契约选择 ScalarHandler_LoadReserved,访问宽度为 8 字节。
SrcZero 是被忽略的 5 位别名字段:全部 32 个编码选择同一操作,并且不会通过该字段消费源。
SrcL 承载 Reg5 载入地址源;SrcZero 承载被忽略的 5 位别名字段;RegDst 承载 Reg5 载入值目的地;aq 承载获取排序位;rl 承载释放排序位;far 承载平坦地址路由提示。
aq 与 rl 选择宽松、获取、释放或获取-释放排序;far 是配置档路由提示,在参考配置档中不改变架构结果。
载入成功时,会在访问预检完成后发出一个带排序属性的载入事件、发布旧值并建立保留。
载入后,包含该地址的 64 字节缓存行成为本地保留,TPC 前进 4 字节。
有效地址必须按 8 字节对齐。对齐、地址翻译和权限检查都先于架构效果。
预检失败时不会发布目的值、内存事件、保留更新或退役效果;保存的原始 TPC 支持完整重新执行。
本示例只展示一种已接受写法;下方生成的契约仍是权威来源。
初次阅读可从 lr.d [SrcL], ->Rd 开始,再只改变上文说明的排序或路由修饰位。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
12 matching entries
PTO-AVS-SCALAR-LR-D-ALIASES-001tests/asl/scalar/amo/LR.D/scalar-bound-lr-d-aliases-001.aslcf13b9c0f0d15102df5409b34dbd9e47d62c37d8c033001d8b72a1b79e731b0cPTO-AVS-SCALAR-LR-D-DECODE-001tests/asl/scalar/amo/LR.D/scalar-decode-lr-d-canonical-001.aslba98245c23d0cb2a54c65599068eb7b7ce88bd56852e80977ec85e337bf1f69fPTO-AVS-SCALAR-LR-D-PRECISE-001tests/asl/scalar/amo/LR.D/scalar-fault-lr-d-precise-001.asl0955065749fdd64f21d8070a69d0e4d19033432278875746ed27ef7060703f9bPTO-AVS-SCALAR-LR-D-RESERVE-001tests/asl/scalar/amo/LR.D/scalar-exec-lr-d-reserve-001.asl4af73aea3666bcaca3cdf405744696cb5b4d81007487b799aa72fcac0a349968PTO-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-0020…
ADR-0020docs/status/decisions/0020-production-memory-events-and-atomic-corners.md215b18f05d0b53120949373fce6a5ce22f7ab534fb22df24743a9b2b4beb2decLoading ADR-0030…
ADR-0030docs/status/decisions/0030-scalar-amo-totality-and-reservation.md110bd32b3004a8383913ac6053cc7d0a1d0b8e03e3ef7c47d83292c94a6a17ebLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196{
"classification": [
"amo"
],
"documentation": "docs/scalar/amo/LR.D.md",
"id": "PTO-SCALAR-LR-D",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "LR.D",
"ndf_clause": "PTO-INST-SCALAR-LR-D"
},
"mnemonic": "LR.D",
"readiness_subjects": [
"ADR-0020",
"ADR-0030",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-SCALAR-LR-D-ALIASES-001",
"PTO-AVS-SCALAR-LR-D-PRECISE-001",
"PTO-AVS-SCALAR-LR-D-RESERVE-001"
],
"source": "asl/scalar/amo/LR.D.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-LR-D-ALIASES-001",
"PTO-AVS-SCALAR-LR-D-DECODE-001",
"PTO-AVS-SCALAR-LR-D-PRECISE-001",
"PTO-AVS-SCALAR-LR-D-RESERVE-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd868123d4a848b0fbebcddf27cfad791a09d7fba244738ebee5f370038628c0e64dcaed8805979f20beea842de5e3912c170b7ca19a29c872a291e3e3f11d15b2d0a4casl/scalar/amo/LR.D.aslasl/scalar/amo/LR.D.asl