| PO | RT | RA | RB |sm | XO |Rc |
```
+```
+Pseudo-code (shadd):
+ shift <- sm & 0x3 # Ensure sm is 2-bit
+ shift <- shift + 1 # Shift is between 1-4
+ sum[0:63] <- ((RB) << shift) + (RA) # Shift RB, add RA
+ RT <- sum # Result stored in RT
+```
+
+Is Rc used to indicate the two modes?
+```
+Pseudo-code (shadduw):
+ shift <- sm & 0x3 # Ensure sm is 2-bit
+ shift <- shift + 1 # Shift is between 1-4
+ n <- (RB) & 0xFFFFFFFF # Limit RB to upper word (32-bits)
+ sum[0:63] <- (n << shift) + (RA) # Shift n, add RA
+ RT <- sum # Result stored in RT
+```
+
```
uint_xlen_t shadd(uint_xlen_t RA, uint_xlen_t RB, uint8_t sm) {
sm = sm & 0x3;