```
maddedu - Multiply-Add Extended Double Unsigned
+ maddedus - Multiply-Add Extended Double Unsigned/Signed
divmod2du - Divide/Modulo Quad-Double Unsigned
dsld - Double Shift Left Doubleword
dsrd - Double Shift Right Doubleword
\newpage{}
+# Multiply-Add Extended Double Unsigned/Signed
+
+`maddedus RT, RA, RB, RC`
+
+| 0-5 | 6-10 | 11-15 | 16-20 | 21-25 | 26-31 | Form |
+|-------|------|-------|-------|-------|-------|---------|
+| EXT04 | RT | RA | RB | RC | XO | VA-Form |
+
+Pseudocode:
+
+```
+if (RB)[0] != 0 then # workaround no unsigned-signed mul op
+ prod[0:127] <- -((RA) * -(RB))
+else
+ prod[0:127] <- (RA) * (RB)
+sum[0:127] <- prod + EXTS128((RC))
+RT <- sum[64:127] # Store low half in RT
+RS <- sum[0:63] # RS implicit register, equal to RC
+```
+
+Special registers altered:
+
+ None
+
+The 64-bit operands are (RA), (RB), and (RC).
+(RC) is sign-extended to 128-bits and then summed with the
+128-bit product of zero-extended (RA) and sign-extended (RB).
+The low-order 64 bits of the 128-bit sum are
+placed into register RT.
+The high-order 64 bits of the 128-bit sum are
+placed into register RS.
+RS is implicitly defined as the same register as RC.
+
+*Programmer's Note:
+To achieve a big-integer rolling-accumulation effect:
+assuming the signed scalar to multiply is in r0, and r3 is
+used (effectively) as a 64-bit carry,
+the unsigned vector to multiply by starts at r4 and the signed result vector
+in r20, instructions may be issued `maddedus r20,r4,r0,r3`
+`maddedus r21,r5,r0,r3` etc. where the first `maddedus` will have
+stored the upper half of the 128-bit multiply into r3, such
+that it may be picked up by the second `maddedus`. Repeat inline
+to construct a larger bigint scalar-vector multiply,
+as Scalar GPR register file space permits. If register
+spill is required then r3, as the effective 64-bit carry,
+continues the chain.*
+
+Examples:
+
+```
+# (r0 * r1) + r2, store lower in r4, upper in r2
+maddedus r4, r0, r1, r2
+
+# Chaining together for larger bigint (see Programmer's Note above)
+# r3 starts with zero (no carry-in)
+maddedus r20,r4,r0,r3
+maddedus r21,r5,r0,r3
+maddedus r22,r6,r0,r3
+```
+
+----------
+
+\newpage{}
+
# Divide/Modulo Quad-Double Unsigned
**Should name be Divide/Module Double Extended Unsigned?**
|Form| Book | Page | Version | mnemonic | Description |
|----|------|------|---------|----------|-------------|
|VA | I | # | 3.2B |maddedu | Multiply-Add Extend Double Unsigned |
+|VA | I | # | 3.2B |maddedus | Multiply-Add Extend Double Unsigned Signed |
|VA | I | # | 3.2B |divmod2du | Divide/Modulo Quad-Double Unsigned |
|VA2 | I | # | 3.2B |dsld | Double-Shift Left Doubleword |
|VA2 | I | # | 3.2B |dsrd | Double-Shift Right Doubleword |