}
```
+**maddx RT, RA, RB, RC** (RS=RT+VL for SVP64, RS=RT+1 for scalar)
+
+ prod[0:127] = (RA) * (RB)
+ sub[0:127] = EXTZ(RC) + prod
+ RT <- sub[64:127]
+ RS <- sub[0:63]
+
+**weirdaddx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
+
+ cat[0:127] = (RS) || (RB)
+ sum[0:127] = cat + EXTZ(RA)
+ rhi[0:63] = sum[0:63]
+ RA = rhi
+ RT = sum[64:127]
+
+These two combine as, simply:
+
+ # assume VL=8, therefore RS starts at r8.v
+ # q : r16
+ # dividend: r20.v
+ # divisor : r28.v
+ # carry : r40
+ li r17, 0
+ sv.msubx r0.v, r16, r20.v, r28.v
+ # here, RS=RB+VL, therefore again RS starts at r8.v
+ sv.weirdsubx r0.v, r17, r0.v
+
# big integer division
links
RT <- sub[64:127]
RS <- sub[0:63]
-**weirdaddx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
+**weirdsubx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
cat[0:127] = (RS) || (RB)
- sum[0:127] = cat - EXTZ(RA)
+ sum[0:127] = cat - EXTS(RA)
rhi[0:63] = sum[0:63]
RA = ~rhi + 1
RT = sum[64:127]
li r17, 0
sv.msubx r0.v, r16, r20.v, r28.v
# here, RS=RB+VL, therefore again RS starts at r8.v
- sv.weirdaddx r0.v, r17, r0.v
+ sv.weirdsubx r0.v, r17, r0.v
As a result, a big-integer subtract and multiply may be carried out
in only 3 instructions, one of which is setting a scalar integer to