aboutsummaryrefslogtreecommitdiff
path: root/src/base64/bun-base64.c
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-04-25 07:09:18 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-04-25 07:09:18 -0700
commit2c6e5c3fc4a7255eb29f7ae618d2826dd9a7d5e5 (patch)
tree1de65b5cc11b7a479f92f853980d6a8ee640c9e6 /src/base64/bun-base64.c
parent4b4df5095ea756388df4c26683ab0bb222750ed3 (diff)
downloadbun-2c6e5c3fc4a7255eb29f7ae618d2826dd9a7d5e5.tar.gz
bun-2c6e5c3fc4a7255eb29f7ae618d2826dd9a7d5e5.tar.zst
bun-2c6e5c3fc4a7255eb29f7ae618d2826dd9a7d5e5.zip
some of buffer
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