diff options
Diffstat (limited to 'src/base64/bun-base64.c')
-rw-r--r-- | src/base64/bun-base64.c | 46 |
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 |