sum[0:63] <- ((RB) << shift) + (RA) # Shift RB, add RA
RT <- sum # Result stored in RT
-`shift` is determined by the 2-bit bitfield `sm`+1.
-The minimum shift as 1, maximum 4.
-The result is shifted (RB) + (RA), and is stored in register RT.
+When `sm` is zero, the contents of register RB are multiplied by 2,
+added to the contents of register RA, and the result stored in RT.
+
+`sm` is a 2-bit bitfield, and allows multiplication of RB by 2, 4, 8, 16.
Operands RA and RB, and the result RT are all 64-bit, unsigned integers.
Pseudocode:
- shift <- shift + 1 # Shift is between 1-4
+ shift <- sm + 1 # Shift is between 1-4
n <- (RB)[XLEN/2:XLEN-1] # Limit RB to upper word (32-bits)
sum[0:63] <- (n << shift) + (RA) # Shift n, add RA
RT <- sum # Result stored in RT
-`shift` is determined by the 2-bit bitfield `sm`+1.
-Mask (RB) to only use the upper word (32-bits).
-The minimum shift as 1, maximum 4.
-The result is shifted `n` + (RA), and is stored in register RT.
+When `sm` is zero, the upper word contents of register RB are multiplied by 2,
+added to the contents of register RA, and the result stored in RT.
+
+`sm` is a 2-bit bitfield, and allows multiplication of RB by 2, 4, 8, 16.
Operands RA and RB, and the result RT are all 64-bit, unsigned integers.