操作数与参数
SrcL- left absolute GPR source
SrcR- right absolute GPR source
SrcRType- right-source modifier selector
SETC.LT - Compare scalar operands and update the bundle commit condition.
PTO-SCALAR-SETC-LTsetc.lt SrcL, SrcR<{.sw, .uw}>| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
SrcL | 5 | encoding-defined | left absolute GPR source | Encoded zero names the architectural zero GPR. |
SrcR | 5 | encoding-defined | right absolute GPR source | Encoded zero names the architectural zero GPR. |
SrcRType | 2 | encoding-defined | right-source modifier selector | Encoded zero selects value zero of the right-source modifier selector. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:27 | 5'b00000 |
| SrcRType | 26:25 | variable |
| SrcR | 24:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:0 | 15'b100000001100101 |
{
"reg": [
{
"bits": 15,
"name": "15'b100000001100101"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 2,
"name": "SrcRType"
},
{
"bits": 5,
"name": "5'b00000"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}setc.lt SrcL, SrcR<{.sw, .uw}>
SrcLSrcRSrcRType下面是该指令所有者中的 Operation;页面没有重写这段行为。
readonly func InstructionContractOperation_SETC_LT() => ScalarOperationbegin return ScalarOperation_SETC_LT;end;readonly func InstructionContractHandler_SETC_LT() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteSetCommit;end;
pure func InstructionContractCondition_SETC_LT() => ScalarConditionbegin return ScalarCondition_LT;end;
pure func InstructionContractCommitResult_SETC_LT( left: Word, right: Word) => booleanbegin return ConditionHolds( InstructionContractCondition_SETC_LT(), left, right);end;// PTO-INSTRUCTION: {"assembly":["setc.lt SrcL, SrcR<{.sw, .uw}>"],"block":[],"catalog_indices":[406],"catalog_records":[{"asm":"setc.lt SrcL, SrcR<{.sw, .uw}>","constraints":[],"encoding":[{"index":0,"mask":"0xf8007fff","match":"0x00004065","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"SrcL","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcR","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcRType","pieces":[{"instruction_lsb":25,"value_lsb":0,"width":2}],"signedness":"encoding-defined","width":2}],"form_id":"setc_lt_32_10de99f3ad6a","length_bits":32,"mnemonic":"SETC.LT","semantic_family":"BRU","semantic_group":"BRU","semantic_handler":"ExecuteSetCommit","semantic_summary":"SETC.LT - Compare scalar operands and update the bundle commit condition.","status":"accepted"}],"classification":["bru"],"contract":{"block_composition":["Applicable only in the body of an active block whose BARG.TYPE is Conditional. Across the entire SETC condition-setting family, at most one occurrence may complete successfully in that block."],"canonical_assembly":["setc.lt SrcL, SrcR<{.sw, .uw}>"],"defaults":["The selected assembly form determines which fields are present; every present field carries its encoded value and no encoded zero means omission."],"encoding_class":"standalone-encoded","examples":["setc.lt SrcL, SrcR<{.sw, .uw}>"],"exceptions":["Wrong block placement or a second successful SETC condition setter raises Illegal Block Exception before scalar source readiness or any architectural or pending-block effect.","A fixed-bit mismatch or unavailable selected relative source raises Fault_IllegalInstruction before commit state, BARG, queues, or TPC effects."],"field_contracts":{},"field_zero_meanings":{"SrcL":"Encoded zero names the architectural zero GPR.","SrcR":"Encoded zero names the architectural zero GPR.","SrcRType":"Encoded zero selects value zero of the right-source modifier selector."},"legality":["All SETC condition setters share one block-private successful-occurrence marker; a failed first occurrence does not consume it."],"memory_effects":["none"],"operands":[{"field":"SrcL","role":"left absolute GPR source"},{"field":"SrcR","role":"right absolute GPR source"},{"field":"SrcRType","role":"right-source modifier selector"}],"ordering":["Check Conditional-block applicability and the shared occurrence marker before scalar source readiness or reads.","Snapshot all sources, compute the canonical zero-or-one condition, then atomically update the commit argument, BARG.TAKEN, and the occurrence marker."],"standalone_opcode":true,"state_effects":["Compute SETC.LT's local comparison or logical condition from source snapshots and canonicalize it to zero or one.","Atomically write that value to the commit argument and BARG.TAKEN, then mark the block condition as set. Preserve BARG.BPC, BARG.BPCN, BARG.BlockType, and BARG.TYPE.","No memory, reservation, descriptor, numeric-status, or destination-register effect occurs. Successful execution advances TPC by the encoded instruction length."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-SETC-LT","mnemonic":"SETC.LT","summary":"SETC.LT - Compare scalar operands and update the bundle commit condition.","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-SETC-LT-CONDITIONAL-SETTER-001// ndf: kind=contract level=L1 layer=scalar status=accepted// SETC.LT MUST be applicable only in one active Conditional block.// Across all SETC condition setters, only the first successful occurrence in// that block may snapshot sources and atomically update CommitArgument and// BARG.TAKEN. A rejected occurrence MUST NOT consume the shared marker.// NDF-END: PTO-SETC-LT-CONDITIONAL-SETTER-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_SETC_LT() => ScalarOperationbegin return ScalarOperation_SETC_LT;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_SETC_LT() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteSetCommit;end;
pure func InstructionContractCondition_SETC_LT() => ScalarConditionbegin return ScalarCondition_LT;end;
pure func InstructionContractCommitResult_SETC_LT( left: Word, right: Word) => booleanbegin return ConditionHolds( InstructionContractCondition_SETC_LT(), left, right);end;// DOC-END: operation
SETC.LT 判断有符号小于,并把结果发布为当前条件指令束的提交判定。
在检查源就绪状态或读取源之前,先检查放置和单次设置规则。
指令对源取快照,判断有符号小于,再规范化为 XLEN 一或零。
SrcL 提供左侧标量源。SrcR 提供右侧标量源。SrcRType 选择右源变换。规范化条件会原子写入 _CommitArgument 和 BARG.TAKEN,同时置位条件已设置标记。
成功时,SETC.LT 让 TPC 前进 4 字节;它没有标量目的位置,也不产生内存或保留状态效果。
该指令只在适用的条件指令束上下文中合法,并且只能有一个条件设置操作成功。
放置错误或重复设置会在读取源之前引发非法指令束异常;编码或源不可用会在提交状态或 TPC 效果前引发 Fault_IllegalInstruction。
下面的示例只帮助理解当前所有者,不构成第二份语义定义。
setc.lt SrcL, SrcR<{.sw, .uw}> 按上述规则计算条件,把规范化判定写入提交状态,并且只在更新完成后推进 TPC。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
SETC.LT MUST be applicable only in one active Conditional block. Across all SETC condition setters, only the first successful occurrence in that block may snapshot sources and atomically update CommitArgument and BARG.TAKEN. A rejected occurrence MUST NOT consume the shared marker.
PTO-SETC-LT-CONDITIONAL-SETTER-001asl/scalar/bru/SETC.LT.asl54e8e77d31f369c2e631e1321b0ef0bf43074ecdf918f5ec466a0098f1deabd81fd475914b3d0826c00c0740a70139d1205fe34a23c0ba89d918c198287a249911 matching entries
PTO-AVS-BRU-SETC-LT-BOUND-001tests/asl/scalar/bru/SETC.LT/scalar-bound-setc-lt-fields-001.aslf23f5126b9404a755f7250402e748be08ac8758aa3f9955db494d7b29af8224fPTO-AVS-BRU-SETC-LT-EXEC-001tests/asl/scalar/bru/SETC.LT/scalar-exec-setc-lt-direct-001.asl2d362d21c30e93dc2036d67faf6c6448e48d2375b96b45c9fd5911dd630eae1bPTO-AVS-SCALAR-SETC-LT-DECODE-001tests/asl/scalar/bru/SETC.LT/scalar-decode-setc-lt-canonical-001.asl2495f3cf0c0362fb6c8a376cb5969a2453893c97402fc44402ed251145378db9PTO-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-0027…
ADR-0027docs/status/decisions/0027-scalar-bru-totality-and-target-legality.md9289112d250e31f4222dcd27d20bda791be7a1b57764af7ed9b187e767b7acedLoading 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": [
"bru"
],
"documentation": "docs/scalar/bru/SETC.LT.md",
"id": "PTO-SCALAR-SETC-LT",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "SETC.LT",
"ndf_clause": "PTO-INST-SCALAR-SETC-LT"
},
"mnemonic": "SETC.LT",
"readiness_subjects": [
"ADR-0027",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-BRU-SETC-LT-BOUND-001",
"PTO-AVS-BRU-SETC-LT-EXEC-001"
],
"source": "asl/scalar/bru/SETC.LT.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-BRU-SETC-LT-BOUND-001",
"PTO-AVS-BRU-SETC-LT-EXEC-001",
"PTO-AVS-SCALAR-SETC-LT-DECODE-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd8681254e8e77d31f369c2e631e1321b0ef0bf43074ecdf918f5ec466a0098f1deabd891e9107b32ab71968f0dc632de11f1cb6c9a94d32156dc6730a2ee768b6494c4asl/scalar/bru/SETC.LT.aslasl/scalar/bru/SETC.LT.aslasl/scalar/bru/SETC.LT.asl