(no commit message)
authorlkcl <lkcl@web>
Mon, 16 May 2022 10:55:51 +0000 (11:55 +0100)
committerIkiWiki <ikiwiki.info>
Mon, 16 May 2022 10:55:51 +0000 (11:55 +0100)
openpower/sv/bitmanip.mdwn

index 4205e94795cdb529591abad809befb8fc6eac59c..e4fabde9491787e88ae8faab7fb8d4c3157132ec 100644 (file)
@@ -201,7 +201,7 @@ For binlut:
 For bincrlut, `BFA` selects the 4-bit CR Field as the LUT2:
 
     for i in range(64): 
-        RT[i] = lut2(CR{BFA}, RB[i], RA[i]) 
+        RT[i] = lut2(CRs{BFA}, RB[i], RA[i]) 
 
 *Programmer's note: a dynamic ternary lookup may be synthesised from
 a pair of `binlut` instructions followed by a `ternlogi` to select which
@@ -223,6 +223,9 @@ another mode selection would be CRs not Ints.
 
 ## crbinlog
 
+With ternary (LUT3) dynamic instructions being very costly,
+and CR Fields being only 4 bit, a binary (LUT2) variant is better
+
 | 0.5|6.8 | 9.11|12.14|15.17|18.22|23...30  |31|
 | -- | -- | --- | --- | --- |-----| --------|--|
 | NN | BT | BA  | BB  | BC  |m0-m2|00101110 |m3|
@@ -232,6 +235,11 @@ another mode selection would be CRs not Ints.
         a,b = CRs[BA][i], CRs[BB][i])
         if mask[i] CRs[BT][i] = lut2(CRs[BC], a, b)
 
+*Programmer's note: just as with binlut and ternlogi, a pair
+ of crbinlog instructions followed by a merging crternlogi may
+ be deployed to synthesise dynamic ternary (LUT3) CR Field
+ manipulation*
+
 # int ops
 
 ## min/m