}
```
+# shift-and-add
+
+Power ISA is missing LD/ST with shift, which is present in both ARM and x86.
+Too complex to add more LD/ST, a compromise is to add shift-and-add.
+Replaces a pair of explicit instructions in hot-loops.
+
+```
+uint_xlen_t shadd(uint_xlen_t rs1, uint_xlen_t rs2, uint8_t sh) {
+ return (rs1 << sh) + rs2;
+}
+
+uint_xlen_t shadduw(uint_xlen_t rs1, uint_xlen_t rs2, uint8_t sh) {
+ uint_xlen_t rs1z = rs1 & 0xFFFFFFFF;
+ return (rs1z << sh) + rs2;
+}
+```
+
# cmix
based on RV bitmanip, covered by ternlog bitops