Support proper scaling and other MATRIX operations

This commit is contained in:
2024-04-23 23:04:17 +02:00
parent b4099a7f97
commit 0d16995895
5 changed files with 133 additions and 32 deletions

View File

@@ -22,4 +22,43 @@ size_t strlen(const char *str) {
for(; *end; ++end);
return(end - str);
}
template<typename T>
static void* core_memset(T* dst, int val, size_t &len) {
while(len >= sizeof(T)) {
*dst++ = val;
len -= sizeof(T);
}
return dst;
}
static void* simple_memset(void* dest, int val, size_t len) {
core_memset(static_cast<uint8_t*>(dest), val, len);
return dest;
}
static void* cplx_memset(void* dst, int val, size_t len) {
void*const org_dst = dst;
if(reinterpret_cast<uintptr_t>(dst) & 0x2 == 0) {
dst = core_memset(static_cast<uint32_t*>(dst), val, len);
}
if(reinterpret_cast<uintptr_t>(dst) & 0x1 == 0) {
dst = core_memset(static_cast<uint16_t*>(dst), val, len);
}
if(len > 0) {
simple_memset(dst, val, len);
}
return org_dst;
}
extern "C" {
// TODO: Speed measure
void* memset(void* dest, int val, size_t len) {
return simple_memset(dest, val, len);
}
}