(no commit message)
authorlkcl <lkcl@web>
Fri, 25 Dec 2020 22:25:41 +0000 (22:25 +0000)
committerIkiWiki <ikiwiki.info>
Fri, 25 Dec 2020 22:25:41 +0000 (22:25 +0000)
openpower/sv/bitmanip.mdwn

index 4b75b5d05b8ade1071eb147828e92414ef8197e8..947c856a266de6a0bbc24deb4babd5a9d4951f93 100644 (file)
@@ -111,3 +111,20 @@ based on RV bitmanip
 uint_xlen_t cmix(uint_xlen_t rs1, uint_xlen_t rs2, uint_xlen_t rs3) { return (rs1 & rs2) | (rs3 & ~rs2);
 }
 ```
+
+# carryless mul
+
+```
+uint_xlen_t clmul(uint_xlen_t rs1, uint_xlen_t rs2) { uint_xlen_t x = 0;
+}
+for (int i = 0; i < XLEN; i++) if ((rs2 >> i) & 1)
+x ^= rs1 << i; return x;
+uint_xlen_t clmulh(uint_xlen_t rs1, uint_xlen_t rs2) { uint_xlen_t x = 0;
+}
+for (int i = 1; i < XLEN; i++) if ((rs2 >> i) & 1)
+x ^= rs1 >> (XLEN-i); return x;
+uint_xlen_t clmulr(uint_xlen_t rs1, uint_xlen_t rs2) { uint_xlen_t x = 0;
+}
+for (int i = 0; i < XLEN; i++) if ((rs2 >> i) & 1)
+x ^= rs1 >> (XLEN-i-1); return x;
+```