Operands and parameters
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.B loads one byte, establishes a 64-byte-line reservation, and publishes the prior value.
PTO-SCALAR-LR-Blr.b [SrcL], ->Rdlr.b.aq [SrcL], ->Rdlr.b.rl [SrcL], ->Rdlr.b.f [SrcL], ->Rdlr.b.aqrl [SrcL], ->Rdlr.b.aqf [SrcL], ->Rdlr.b.rlf [SrcL], ->Rdlr.b.aqrlf [SrcL], ->Rd| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
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'b0000 |
| 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'b0000"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}lr.b<.{aq, rl, f, aqrl, aqf, rlf, aqrlf}> [SrcL], {->t, ->u, ->Rd}
SrcLSrcZeroRegDstaqrlfarThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_LR_B() => ScalarOperationbegin return ScalarOperation_LR_B;end;readonly func InstructionContractHandler_LR_B() => ScalarSemanticHandlerbegin return ScalarHandler_LoadReserved;end;
pure func InstructionContractLoadSizeBytes_LR_B() => integer {1,2,4,8}begin return 1;end;
pure func InstructionContractIgnoresSrcZero_LR_B() => booleanbegin return TRUE;end;
pure func InstructionContractZeroExtendsResult_LR_B() => booleanbegin return TRUE;end;
pure func InstructionContractSignExtendsResult_LR_B() => booleanbegin return FALSE;end;
pure func InstructionContractReservationGranuleBytes_LR_B() => integer {1..262144}begin return PTO_RESERVATION_GRANULE_BYTES;end;// PTO-INSTRUCTION: {"assembly":["lr.b [SrcL], ->Rd","lr.b.aq [SrcL], ->Rd","lr.b.rl [SrcL], ->Rd","lr.b.f [SrcL], ->Rd","lr.b.aqrl [SrcL], ->Rd","lr.b.aqf [SrcL], ->Rd","lr.b.rlf [SrcL], ->Rd","lr.b.aqrlf [SrcL], ->Rd"],"block":[],"catalog_indices":[334],"catalog_records":[{"asm":"lr.b<.{aq, rl, f, aqrl, aqf, rlf, aqrlf}> [SrcL], {->t, ->u, ->Rd}","constraints":[],"encoding":[{"index":0,"mask":"0xf000707f","match":"0x0000000b","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_b_32_cf80903a761a","length_bits":32,"mnemonic":"LR.B","semantic_family":"AMO","semantic_group":"AMO","semantic_handler":"LoadReserved","semantic_summary":"LR.B loads one byte, establishes a 64-byte-line reservation, and publishes the prior value.","status":"accepted"}],"classification":["amo"],"contract":{"block_composition":["none"],"canonical_assembly":["lr.b [SrcL], ->Rd","lr.b.aq [SrcL], ->Rd","lr.b.rl [SrcL], ->Rd","lr.b.f [SrcL], ->Rd","lr.b.aqrl [SrcL], ->Rd","lr.b.aqf [SrcL], ->Rd","lr.b.rlf [SrcL], ->Rd","lr.b.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.b [a0], ->a1","lr.b.aqrl [t#1], ->u","lr.b.f [sp], ->t"],"exceptions":["Every byte address is naturally aligned. 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.","Every byte address is naturally aligned."],"memory_effects":["Read one 1-byte little-endian byte 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 1; SC matching uses the containing 64-byte reservation granule.","The 8-bit old value is zero-extended to XLEN."],"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 byte old value only after the load completes and establish the 64-byte-line reservation.","The 8-bit old value is zero-extended to XLEN.","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-B","mnemonic":"LR.B","summary":"LR.B loads one byte, 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_B() => ScalarOperationbegin return ScalarOperation_LR_B;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_LR_B() => ScalarSemanticHandlerbegin return ScalarHandler_LoadReserved;end;
pure func InstructionContractLoadSizeBytes_LR_B() => integer {1,2,4,8}begin return 1;end;
pure func InstructionContractIgnoresSrcZero_LR_B() => booleanbegin return TRUE;end;
pure func InstructionContractZeroExtendsResult_LR_B() => booleanbegin return TRUE;end;
pure func InstructionContractSignExtendsResult_LR_B() => booleanbegin return FALSE;end;
pure func InstructionContractReservationGranuleBytes_LR_B() => integer {1..262144}begin return PTO_RESERVATION_GRANULE_BYTES;end;// DOC-END: operation
LR.B loads one byte, publishes its zero-extended value, and replaces the local reservation with the containing 64-byte line.
The ASL DOC contract selects ScalarHandler_LoadReserved with an access width of 1 byte.
SrcZero is an ignored five-bit alias field: all 32 encodings select the same operation and consume no source through that field.
SrcL carries the Reg5 load address source; SrcZero carries the ignored 5-bit alias field; RegDst carries the Reg5 loaded-value destination; aq carries the acquire ordering bit; rl carries the release ordering bit; far carries the flat-address routing hint.
aq and rl select relaxed, acquire, release, or acquire-release ordering; far is a profile routing hint and does not change the architectural result in the reference profile.
A successful load emits one ordered load event, publishes the old value, and establishes the reservation only after access preflight completes.
After the load, the containing 64-byte line becomes the local reservation and TPC advances by 4 bytes.
Every byte address is naturally aligned. Alignment, translation, and permission checks precede architectural effects.
A failing preflight publishes no destination, memory event, reservation update, or retirement effect; the saved original TPC supports full reissue.
This example only shows one accepted spelling; the generated contract below remains authoritative.
For a first reading, use lr.b [SrcL], ->Rd and then vary only the ordering or route modifiers described above.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
12 matching entries
PTO-AVS-SCALAR-LR-B-ALIASES-001tests/asl/scalar/amo/LR.B/scalar-bound-lr-b-aliases-001.asl723e0c25b34a89ed527fea93af07498e7e9c3f551f8fe3d59559c6dd81dce1ebPTO-AVS-SCALAR-LR-B-DECODE-001tests/asl/scalar/amo/LR.B/scalar-decode-lr-b-canonical-001.asl714b2caf478aa5552d5c0caa492a37e7026eb2e6d825399a22b8b84b6d417d0aPTO-AVS-SCALAR-LR-B-PRECISE-001tests/asl/scalar/amo/LR.B/scalar-fault-lr-b-precise-001.asl06397423e52c91e652dee40a34aebd90038f15c7abb0ca347b8c1d2af9171f7bPTO-AVS-SCALAR-LR-B-RESERVE-001tests/asl/scalar/amo/LR.B/scalar-exec-lr-b-reserve-001.aslb97fc2b8af5cfbbe58caf17ce44131ca14cb02fb6a80dc10894c5396104b85d0PTO-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.B.md",
"id": "PTO-SCALAR-LR-B",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "LR.B",
"ndf_clause": "PTO-INST-SCALAR-LR-B"
},
"mnemonic": "LR.B",
"readiness_subjects": [
"ADR-0020",
"ADR-0030",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-SCALAR-LR-B-ALIASES-001",
"PTO-AVS-SCALAR-LR-B-PRECISE-001",
"PTO-AVS-SCALAR-LR-B-RESERVE-001"
],
"source": "asl/scalar/amo/LR.B.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-LR-B-ALIASES-001",
"PTO-AVS-SCALAR-LR-B-DECODE-001",
"PTO-AVS-SCALAR-LR-B-PRECISE-001",
"PTO-AVS-SCALAR-LR-B-RESERVE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd8681276353762b7f4f9da94f1d76d14706df4a8f6f00c6aeef1d0e793560fb1853124c0c9149a499d5b70f80c42ead44161d12ffb5629ff21e01489d1516de50469ecasl/scalar/amo/LR.B.aslasl/scalar/amo/LR.B.asl