moar changes

mac implementation had _mm_div (x86 intrinsic)
This commit is contained in:
marauder2k7 2026-02-26 16:40:01 +00:00
parent ea5442a6c6
commit 25ccdde085
9 changed files with 248 additions and 16 deletions

View file

@ -1,4 +1,8 @@
#pragma once
#ifndef _FLOAT4_DISPATCH_H_
#define _FLOAT4_DISPATCH_H_
#include <cstdint>
namespace math_backend::float4::dispatch
@ -32,3 +36,5 @@ namespace math_backend::float4::dispatch
// Centralized installer (engine calls this once)
void install_preferred();
}
#endif // !_FLOAT4_DISPATCH_H_

View file

@ -0,0 +1,53 @@
#pragma once
#include "math/public/math_backend.h"
math_backend::backend math_backend::choose_backend(U32 cpu_flags)
{
#if defined(__x86_64__) || defined(_M_X64) || defined(_M_IX86)
if (cpu_flags & CPU_PROP_AVX2) return backend::avx2;
if (cpu_flags & CPU_PROP_AVX) return backend::avx;
if (cpu_flags & CPU_PROP_SSE4_1) return backend::sse41;
if (cpu_flags & CPU_PROP_SSE2) return backend::sse2;
#elif defined(__aarch64__) || defined(__ARM_NEON)
if (cpu_flags & CPU_NEON) return backend::neon;
#endif
return backend::scalar;
}
void math_backend::install_from_cpu_flags(uint32_t cpu_flags)
{
{
g_backend = choose_backend(cpu_flags);
switch (g_backend)
{
case backend::avx2:
float4::dispatch::install_avx2();
break;
case backend::avx:
//float4::dispatch::install_avx();
break;
case backend::sse41:
float4::dispatch::install_sse41();
break;
case backend::sse2:
float4::dispatch::install_sse2();
break;
case backend::neon:
float4::dispatch::install_neon();
break;
default:
float4::dispatch::install_scalar();
break;
}
}
}

View file

@ -0,0 +1,27 @@
#pragma once
#ifndef _MCONSTANTS_H_
#include "math/mConstants.h"
#endif
#ifndef _PLATFORMASSERT_H_
#include "platform/platformAssert.h"
#endif
#ifndef _FLOAT4_DISPATCH_H_
#include "math/public/float4_dispatch.h"
#endif
namespace math_backend
{
enum class backend
{
scalar,
sse2,
sse41,
avx,
avx2,
neon
};
static backend g_backend = backend::scalar;
backend choose_backend(U32 cpu_flags);
void install_from_cpu_flags(uint32_t cpu_flags);
}