(no commit message)
authorlkcl <lkcl@web>
Sat, 30 Apr 2022 17:53:09 +0000 (18:53 +0100)
committerIkiWiki <ikiwiki.info>
Sat, 30 Apr 2022 17:53:09 +0000 (18:53 +0100)
openpower/sv/svp64/appendix.mdwn

index d8638460fad7650f6d6a7e796a848352d32fc1dd..37bfcd006adaeaa9836006f76a839549fe487e09 100644 (file)
@@ -1053,7 +1053,7 @@ is best illustrated in pseudocode:
            src2 = get_polymorphed_reg(RC, srcwid, irs3)
            result = src1*src2 + src2
            destmask = (2<<destwid)-1
-           # store two halves of result
+           # store two halves of result, both start from RT.
            set_polymorphed_reg(RT, destwid, ird      , result&destmask)
            set_polymorphed_reg(RT, destwid, ird+MAXVL, result>>destwid)
            if (!RT.isvec) break
@@ -1064,7 +1064,20 @@ is best illustrated in pseudocode:
 
 The significant part here is that the second half is stored
 starting not from RT+MAXVL at all: it is the *element* index
-that is offset by MAXVL, both starting from RT.
+that is offset by MAXVL, both halves actually starting from RT.
+If VL is 3, MAXVL is 5, RT is 1, and dest elwidth is 32 then the elements
+RT0 to RT2 are stored:
+
+         0..31     32..63
+     r0  unchanged unchanged
+     r1  RT0.lo    RT1.lo
+     r2  RT2.lo    unchanged
+     r3  unchanged RT0.hi
+     r4  RT1.hi    RT2.hi
+     r5 unchanged  unchanged
+
+Additional DRAFT Scalar instructions in 3-in 2-out form
+with an implicit 2nd destination:
 
 * [[isa/svfixedarith]]
 * [[isa/svfparith]]