@@ -14920,17 +14920,34 @@ Assembly::
1492014920ld xd, imm(xs1)
1492114921
1492214922Encoding::
14923+ [NOTE]
14924+ This instruction has different encodings in RV32 and RV64
14925+
14926+ RV32::
14927+ [wavedrom, ,svg,subs='attributes',width="100%"]
14928+ ....
14929+ {"reg":[{"bits":7,"name": 0x3,"type":2},{"bits":5,"name": "xd != {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":12,"name": "imm","type":4}]}
14930+ ....
14931+
14932+ RV64::
1492314933[wavedrom, ,svg,subs='attributes',width="100%"]
1492414934....
1492514935{"reg":[{"bits":7,"name": 0x3,"type":2},{"bits":5,"name": "xd","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":12,"name": "imm","type":4}]}
1492614936....
1492714937
1492814938Description::
14929- Load 64 bits of data into register `xd` from an
14939+ For RV64, load 64 bits of data into register `xd` from an
1493014940address formed by adding `xs1` to a signed offset.
14941+ <% if ext?(:Zilsd) %>
14942+ For RV32, Loads a 64-bit value into registers xd and xd+1.
14943+ The effective address is obtained by adding
14944+ register xs1 to the sign-extended 12-bit offset.
14945+ <% end %>
1493114946
1493214947
1493314948Decode Variables::
14949+ *RV32:*
14950+
1493414951[width="100%", cols="1,2", options="header"]
1493514952|===
1493614953|Variable Name |Location
@@ -14939,50 +14956,23 @@ Decode Variables::
1493914956|xd |$encoding[11:7]
1494014957|===
1494114958
14942- Included in::
14943- [options="autowrap,autowidth"]
14944- |===
14945- | Extension | Version
14946-
14947- | *I* | ~> 2.1.0
14948-
14949- |===
14950-
14951-
14952- [#udb:doc:inst:ld]
14953- == ld
14954-
14955- Synopsis::
14956- Load doubleword to even/odd register pair
14957-
14958- Assembly::
14959- ld xd, offset(xs1)
14960-
14961- Encoding::
14962- [wavedrom, ,svg,subs='attributes',width="100%"]
14963- ....
14964- {"reg":[{"bits":7,"name": 0x3,"type":2},{"bits":5,"name": "xd != {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":12,"name": "imm","type":4}]}
14965- ....
14966-
14967- Description::
14968- Loads a 64-bit value into registers xd and xd+1. The effective address is obtained by adding
14969- register xs1 to the sign-extended 12-bit offset.
14970-
14959+ *RV64:*
1497114960
14972- Decode Variables::
1497314961[width="100%", cols="1,2", options="header"]
1497414962|===
1497514963|Variable Name |Location
14976- |xd |$encoding[11:7]
14977- |xs1 |$encoding[19:15]
1497814964|imm |$encoding[31:20]
14965+ |xs1 |$encoding[19:15]
14966+ |xd |$encoding[11:7]
1497914967|===
1498014968
1498114969Included in::
1498214970[options="autowrap,autowidth"]
1498314971|===
1498414972| Extension | Version
1498514973
14974+ | *I* | ~> 2.1.0
14975+
1498614976| *Zilsd* | ~> 1.0
1498714977
1498814978|===
@@ -17237,69 +17227,57 @@ Assembly::
1723717227sd xs2, imm(xs1)
1723817228
1723917229Encoding::
17230+ [NOTE]
17231+ This instruction has different encodings in RV32 and RV64
17232+
17233+ RV32::
17234+ [wavedrom, ,svg,subs='attributes',width="100%"]
17235+ ....
17236+ {"reg":[{"bits":7,"name": 0x23,"type":2},{"bits":5,"name": "imm[4:0]","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":5,"name": "xs2 != {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}","type":4},{"bits":7,"name": "imm[11:5]","type":4}]}
17237+ ....
17238+
17239+ RV64::
1724017240[wavedrom, ,svg,subs='attributes',width="100%"]
1724117241....
1724217242{"reg":[{"bits":7,"name": 0x23,"type":2},{"bits":5,"name": "imm[4:0]","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":5,"name": "xs2","type":4},{"bits":7,"name": "imm[11:5]","type":4}]}
1724317243....
1724417244
1724517245Description::
17246- Store 64 bits of data from register `xs2` to an
17246+ For RV64, store 64 bits of data from register `xs2` to an
1724717247address formed by adding `xs1` to a signed offset.
17248+ <% if ext?(:Zilsd) %>
17249+ For RV32, store doubleword from even/odd register pair.
17250+ <% end %>
1724817251
1724917252
1725017253Decode Variables::
17254+ *RV32:*
17255+
1725117256[width="100%", cols="1,2", options="header"]
1725217257|===
1725317258|Variable Name |Location
17254- |imm |sext({$encoding[31:25], $encoding[11:7]})
17255- |xs1 |$encoding[19:15]
17259+ |imm |{$encoding[31:25], $encoding[11:7]}
1725617260|xs2 |$encoding[24:20]
17261+ |xs1 |$encoding[19:15]
1725717262|===
1725817263
17259- Included in::
17260- [options="autowrap,autowidth"]
17261- |===
17262- | Extension | Version
17263-
17264- | *I* | ~> 2.1.0
17265-
17266- |===
17267-
17268-
17269- [#udb:doc:inst:sd]
17270- == sd
17271-
17272- Synopsis::
17273- Store doubleword from even/odd register pair
17274-
17275- Assembly::
17276- sd xs2, offset(xs1)
17277-
17278- Encoding::
17279- [wavedrom, ,svg,subs='attributes',width="100%"]
17280- ....
17281- {"reg":[{"bits":7,"name": 0x23,"type":2},{"bits":5,"name": "imm[4:0]","type":4},{"bits":3,"name": 0x3,"type":2},{"bits":5,"name": "xs1","type":4},{"bits":5,"name": "xs2 != {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}","type":4},{"bits":7,"name": "imm[11:5]","type":4}]}
17282- ....
17283-
17284- Description::
17285- Stores a 64-bit value from registers xs2 and xs2+1. The effective address is obtained by adding
17286- register xs1 to the sign-extended 12-bit offset.
17287-
17264+ *RV64:*
1728817265
17289- Decode Variables::
1729017266[width="100%", cols="1,2", options="header"]
1729117267|===
1729217268|Variable Name |Location
17293- |xs1 | $encoding[19:15]
17269+ |imm |sext({ $encoding[31:25], $encoding[11:7]})
1729417270|xs2 |$encoding[24:20]
17295- |imm |{ $encoding[31:25], $encoding[11:7]}
17271+ |xs1 | $encoding[19:15]
1729617272|===
1729717273
1729817274Included in::
1729917275[options="autowrap,autowidth"]
1730017276|===
1730117277| Extension | Version
1730217278
17279+ | *I* | ~> 2.1.0
17280+
1730317281| *Zilsd* | ~> 1.0
1730417282
1730517283|===
0 commit comments