aboutsummaryrefslogtreecommitdiff
path: root/src/base64/bun-base64.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base64/bun-base64.c')
-rw-r--r--src/base64/bun-base64.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/base64/bun-base64.c b/src/base64/bun-base64.c
new file mode 100644
index 000000000..e11f88da5
--- /dev/null
+++ b/src/base64/bun-base64.c
@@ -0,0 +1,46 @@
+
+#include "bun-base64.h"
+
+#if defined(__GNUC__) && defined(__ARM_NEON__)
+
+int neon_base64_decode(char *out, const char *src, size_t srclen,
+ size_t *outlen);
+
+#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
+
+#include "fastavxbase64.h"
+
+#endif
+
+#if defined(__GNUC__) && defined(__ARM_NEON__)
+size_t bun_base64_decode(char *dest, const char *src, size_t len,
+ size_t *outlen) {
+ // neon base64 is decode only
+ return neon_base64_decode(dest, src, len, outlen);
+}
+size_t bun_base64_encode(char *dest, const char *src, size_t len) {
+ return chromium_base64_encode(dest, src, len);
+}
+
+#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
+
+size_t bun_base64_decode(char *dest, const char *src, size_t len,
+ size_t *outlen) {
+ return fast_avx2_base64_decode(dest, src, len, outlen);
+}
+size_t bun_base64_encode(char *dest, const char *src, size_t len) {
+
+ return fast_avx2_base64_encode(dest, src, len);
+}
+
+#else
+
+size_t bun_base64_decode(char *dest, const char *src, size_t len,
+ size_t *outlen) {
+ return chromium_base64_decode(dest, src, len, outlen);
+}
+size_t bun_base64_encode(char *dest, const char *src, size_t len) {
+ return chromium_base64_encode(dest, src, len);
+}
+
+#endif \ No newline at end of file