FastLED 3.9.15
Loading...
Searching...
No Matches
AutoResearchSimd.h File Reference
+ Include dependency graph for AutoResearchSimd.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  autoresearch::simd_check::BenchmarkResult
 
struct  autoresearch::simd_check::OpAdd
 
struct  autoresearch::simd_check::OpDivFloat
 
struct  autoresearch::simd_check::OpDivS16x16
 
struct  autoresearch::simd_check::OpDivS8x8
 
struct  autoresearch::simd_check::OpDivU16x16
 
struct  autoresearch::simd_check::OpMul
 
struct  autoresearch::simd_check::OpSub
 
struct  autoresearch::simd_check::SimdTestEntry
 

Namespaces

namespace  autoresearch
 
namespace  autoresearch::simd_check
 

Functions

int32_t autoresearch::simd_check::as_i32 (uint32_t v)
 
uint32_t autoresearch::simd_check::as_u32 (int32_t v)
 
template<typename Op>
int64_t autoresearch::simd_check::benchFloat4 (int iters, Op op)
 
template<typename Op>
int64_t autoresearch::simd_check::benchS16x16_4 (int iters, Op op)
 
template<typename Op>
int64_t autoresearch::simd_check::benchS8x8_4 (int iters, Op op)
 
template<typename Op>
int64_t autoresearch::simd_check::benchSimd4 (int iters, Op op)
 
template<typename Op>
int64_t autoresearch::simd_check::benchU16x16_4 (int iters, Op op)
 
bool autoresearch::simd_check::compare_f32 (const float *a, const float *b, size_t n, float eps=0.001f)
 
bool autoresearch::simd_check::compare_u32 (const uint32_t *a, const uint32_t *b, size_t n)
 
bool autoresearch::simd_check::compare_u8 (const uint8_t *a, const uint8_t *b, size_t n)
 
void autoresearch::simd_check::getTests (const SimdTestEntry **out_tests, int *out_count)
 Get the static test table. Used by both runSimdTests() and the RPC handler.
 
void autoresearch::simd_check::ref_add_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_add_sat_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_and_u32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_and_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_andnot_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_max_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_max_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_min_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_min_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_mulhi32_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_mulhi_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_mulhi_u32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_or_u32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_or_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_scale_u8_16 (const uint8_t *v, uint8_t scale, uint8_t *out)
 
void autoresearch::simd_check::ref_sll_u32_4 (const uint32_t *v, int shift, uint32_t *out)
 
void autoresearch::simd_check::ref_sra_i32_4 (const uint32_t *v, int shift, uint32_t *out)
 
void autoresearch::simd_check::ref_srl_u32_4 (const uint32_t *v, int shift, uint32_t *out)
 
void autoresearch::simd_check::ref_sub_i32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_sub_sat_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
void autoresearch::simd_check::ref_xor_u32_4 (const uint32_t *a, const uint32_t *b, uint32_t *out)
 
void autoresearch::simd_check::ref_xor_u8_16 (const uint8_t *a, const uint8_t *b, uint8_t *out)
 
BenchmarkResult autoresearch::simd_check::runMultiplyBenchmark (int iters=10000)
 
int autoresearch::simd_check::runSimdTests ()
 Run the full SIMD test suite. Returns the number of failures.
 
bool autoresearch::simd_check::test_add_f32_4 ()
 
bool autoresearch::simd_check::test_add_f32_4_negative ()
 
bool autoresearch::simd_check::test_add_i32_4 ()
 
bool autoresearch::simd_check::test_add_sat_u8_16 ()
 
bool autoresearch::simd_check::test_add_sat_u8_16_full_saturate ()
 
bool autoresearch::simd_check::test_and_u32_4 ()
 
bool autoresearch::simd_check::test_and_u8_16 ()
 
bool autoresearch::simd_check::test_andnot_u8_16 ()
 
bool autoresearch::simd_check::test_avg_round_u8_16 ()
 
bool autoresearch::simd_check::test_avg_u8_16 ()
 
bool autoresearch::simd_check::test_blend_u8_16 ()
 
bool autoresearch::simd_check::test_blend_u8_16_endpoints ()
 
bool autoresearch::simd_check::test_crossval_add_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_add_sat_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_aligned_load_store ()
 
bool autoresearch::simd_check::test_crossval_and_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_and_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_andnot_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_float_ops ()
 
bool autoresearch::simd_check::test_crossval_max_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_max_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_min_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_min_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_mulhi32_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_mulhi_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_mulhi_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_or_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_or_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_scale_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_set1_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_sll_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_sra_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_srl_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_sub_i32_4 ()
 
bool autoresearch::simd_check::test_crossval_sub_sat_u8_16 ()
 
bool autoresearch::simd_check::test_crossval_xor_u32_4 ()
 
bool autoresearch::simd_check::test_crossval_xor_u8_16 ()
 
bool autoresearch::simd_check::test_div_f32_4 ()
 
bool autoresearch::simd_check::test_extract_u32_4 ()
 
bool autoresearch::simd_check::test_f32_pipeline_mul_add_clamp ()
 
bool autoresearch::simd_check::test_i32_pipeline_shift_add_mask ()
 
bool autoresearch::simd_check::test_load_store_f32_4 ()
 
bool autoresearch::simd_check::test_load_store_f32_4_special ()
 
bool autoresearch::simd_check::test_load_store_u32_4 ()
 
bool autoresearch::simd_check::test_load_store_u32_4_aligned ()
 
bool autoresearch::simd_check::test_load_store_u32_4_boundary ()
 
bool autoresearch::simd_check::test_load_store_u8_16 ()
 
bool autoresearch::simd_check::test_load_store_u8_16_boundary ()
 
bool autoresearch::simd_check::test_max_f32_4 ()
 
bool autoresearch::simd_check::test_max_i32_4 ()
 
bool autoresearch::simd_check::test_max_u8_16 ()
 
bool autoresearch::simd_check::test_min_f32_4 ()
 
bool autoresearch::simd_check::test_min_i32_4 ()
 
bool autoresearch::simd_check::test_min_u8_16 ()
 
bool autoresearch::simd_check::test_mul_f32_4 ()
 
bool autoresearch::simd_check::test_mul_f32_4_negative ()
 
bool autoresearch::simd_check::test_mulhi32_i32_4 ()
 
bool autoresearch::simd_check::test_mulhi_i32_4 ()
 
bool autoresearch::simd_check::test_mulhi_su32_4 ()
 
bool autoresearch::simd_check::test_mulhi_u32_4 ()
 
bool autoresearch::simd_check::test_or_u32_4 ()
 
bool autoresearch::simd_check::test_or_u8_16 ()
 
bool autoresearch::simd_check::test_scale_u8_16 ()
 
bool autoresearch::simd_check::test_scale_u8_16_full ()
 
bool autoresearch::simd_check::test_scale_u8_16_zero ()
 
bool autoresearch::simd_check::test_set1_f32_4 ()
 
bool autoresearch::simd_check::test_set1_u32_4 ()
 
bool autoresearch::simd_check::test_set1_u32_4_zero ()
 
bool autoresearch::simd_check::test_set_u32_4 ()
 
bool autoresearch::simd_check::test_sll_u32_4 ()
 
bool autoresearch::simd_check::test_sqrt_f32_4 ()
 
bool autoresearch::simd_check::test_sqrt_f32_4_zero ()
 
bool autoresearch::simd_check::test_sra_i32_4 ()
 
bool autoresearch::simd_check::test_srl_u32_4 ()
 
bool autoresearch::simd_check::test_sub_f32_4 ()
 
bool autoresearch::simd_check::test_sub_i32_4 ()
 
bool autoresearch::simd_check::test_sub_sat_u8_16 ()
 
bool autoresearch::simd_check::test_sub_sat_u8_16_full_clamp ()
 
bool autoresearch::simd_check::test_u8_pipeline_scale_add_clamp ()
 
bool autoresearch::simd_check::test_unpackhi_u32_4 ()
 
bool autoresearch::simd_check::test_unpackhi_u64_as_u32_4 ()
 
bool autoresearch::simd_check::test_unpacklo_u32_4 ()
 
bool autoresearch::simd_check::test_unpacklo_u64_as_u32_4 ()
 
bool autoresearch::simd_check::test_xor_u32_4 ()
 
bool autoresearch::simd_check::test_xor_u8_16 ()
 

Variables

static volatile uint32_t autoresearch::simd_check::g_bench_sink
 

Class Documentation

◆ autoresearch::simd_check::BenchmarkResult

struct autoresearch::simd_check::BenchmarkResult
Class Members
int64_t add_float_us
int64_t add_s16x16_us
int64_t add_s8x8_us
int64_t add_simd_us
int64_t add_u16x16_us
int64_t div_float_us
int64_t div_s16x16_us
int64_t div_s8x8_us
int64_t div_u16x16_us
int64_t iterations
int64_t mul_float_us
int64_t mul_s16x16_us
int64_t mul_s8x8_us
int64_t mul_simd_us
int64_t mul_u16x16_us
int64_t sub_float_us
int64_t sub_s16x16_us
int64_t sub_s8x8_us
int64_t sub_simd_us
int64_t sub_u16x16_us

◆ autoresearch::simd_check::SimdTestEntry

struct autoresearch::simd_check::SimdTestEntry
Class Members
bool(*)() func
const char * name