Skip to content

Commit

Permalink
added base64rvv m4 version
Browse files Browse the repository at this point in the history
  • Loading branch information
vogma committed Oct 29, 2024
1 parent 55b479b commit a83bb54
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ aux_source_directory(./src/boost CTR_SOURCES)
include_directories(libs/base64rvv/lib/include)
aux_source_directory(./src/base64rvv_m1 CTR_SOURCES)
aux_source_directory(./src/base64rvv_m2 CTR_SOURCES)
aux_source_directory(./src/base64rvv_m4 CTR_SOURCES)

set_source_files_properties( ${CTR_SOURCES} PROPERTIES LANGUAGE CXX )
set_source_files_properties( ${C_SOURCES} PROPERTIES LANGUAGE C )
Expand Down
51 changes: 51 additions & 0 deletions src/base64rvv_m4/test_base64rvv.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include <gtest/gtest.h>
#include "../Base64SurveyRegistry.hpp"
#include "base64rvv/lib/include/libb64rvv.h"

struct BASE64RVV_Adapt
{

static constexpr inline size_t GetDecodeExpectedLen(size_t inLen) noexcept
{
return ((inLen + 3) / 4) * 3;
}

static constexpr inline size_t GetEncodeLen(size_t inLen) noexcept
{
return ((inLen + 2) / 3) * 4;
}

static std::string encode(void (*func)(uint8_t *in, char *out, size_t inlen), const std::string &bytes)
{
size_t encLen = GetEncodeLen(bytes.length());
std::string encoded;
encoded.resize(encLen);
func((uint8_t *)&bytes[0], &encoded[0], bytes.length());
return encoded;
}

static std::string decode(size_t (*func)(const char *in, int8_t *out, size_t inlen), const std::string &encoded)
{
std::string decoded;
decoded.resize(GetDecodeExpectedLen(encoded.length()));
size_t dLen = func((const char *)&encoded[0], (int8_t *)&decoded[0], (size_t)encoded.length());
decoded.resize(dLen);
return decoded;
}
};

struct Base64rvv_m4
{
std::string encode(const std::string &bytes)
{
return BASE64RVV_Adapt::encode(base64_encode_rvv_m4, bytes);
}

std::string decode(const std::string &base64)
{
return BASE64RVV_Adapt::decode(base64_decode_rvv_m4, base64);
}
};

BASE64_REGISTER_ENCODER(Base64rvv_m4);
BASE64_REGISTER_DECODER(Base64rvv_m4);

0 comments on commit a83bb54

Please sign in to comment.