summary refs log tree commit diff stats
path: root/include/crypto/clmul.h
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-07-11 10:10:47 +0100
committerRichard Henderson <richard.henderson@linaro.org>2023-09-15 13:57:00 +0000
commit00f463b38aa7cfca0bc65e3af7f2c49e1b9da690 (patch)
tree1a0835b5c4babf3806eb4d3e373691b23efdd254 /include/crypto/clmul.h
parentf56d3c1a140267ae88874d755fa2f24cb71a1572 (diff)
downloadfocaccia-qemu-00f463b38aa7cfca0bc65e3af7f2c49e1b9da690.tar.gz
focaccia-qemu-00f463b38aa7cfca0bc65e3af7f2c49e1b9da690.zip
crypto: Add generic 64-bit carry-less multiply routine
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/crypto/clmul.h')
-rw-r--r--include/crypto/clmul.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/crypto/clmul.h b/include/crypto/clmul.h
index 80de516464..446931fe05 100644
--- a/include/crypto/clmul.h
+++ b/include/crypto/clmul.h
@@ -8,6 +8,9 @@
 #ifndef CRYPTO_CLMUL_H
 #define CRYPTO_CLMUL_H
 
+#include "qemu/int128.h"
+#include "host/crypto/clmul.h"
+
 /**
  * clmul_8x8_low:
  *
@@ -61,4 +64,20 @@ uint64_t clmul_16x2_odd(uint64_t, uint64_t);
  */
 uint64_t clmul_32(uint32_t, uint32_t);
 
+/**
+ * clmul_64:
+ *
+ * Perform a 64x64->128 carry-less multiply.
+ */
+Int128 clmul_64_gen(uint64_t, uint64_t);
+
+static inline Int128 clmul_64(uint64_t a, uint64_t b)
+{
+    if (HAVE_CLMUL_ACCEL) {
+        return clmul_64_accel(a, b);
+    } else {
+        return clmul_64_gen(a, b);
+    }
+}
+
 #endif /* CRYPTO_CLMUL_H */