read all inputs before writing to any outputs
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 18 Mar 2022 02:46:44 +0000 (19:46 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Fri, 18 Mar 2022 02:46:44 +0000 (19:46 -0700)
in case an input overlaps with an output register.

openpower/sv/bitmanip.mdwn

index 548d487bce2fbf3cfcfd18a19ae1ac09944cec68..ab2c7e2a90c564f480252db741ccfc76ef547ba1 100644 (file)
@@ -594,9 +594,13 @@ cltmadd RT, RA, RB, RC
 
 TODO: add link to explanation for where `RS` comes from.
 
-``` 
-(RT) = RC ^ clmul((RA), (RB))
-(RS) = RA ^ RC
+```
+a = (RA)
+c = (RC)
+# read all inputs before writing to any outputs in case
+# an input overlaps with an output register.
+(RT) = clmul(a, (RB)) ^ c
+(RS) = a ^ c
 ```
 
 ## `cldivrem` Carry-less Division and Remainder
@@ -691,9 +695,13 @@ gfbtmadd RT, RA, RB, RC
 
 TODO: add link to explanation for where `RS` comes from.
 
-``` 
-(RT) = gfbmadd((RA), (RB), (RC))
-(RS) = RA ^ RC
+```
+a = (RA)
+c = (RC)
+# read all inputs before writing to any outputs in case
+# an input overlaps with an output register.
+(RT) = gfbmadd(a, (RB), c)
+(RS) = a ^ c
 ```
 
 ## `gfbinv` -- Binary Galois Field `GF(2^m)` Inverse