FastLED 3.9.15
Loading...
Searching...
No Matches
autoresearch::simd_check Namespace Reference

Classes

struct  BenchmarkResult
 
struct  OpAdd
 
struct  OpDivFloat
 
struct  OpDivS16x16
 
struct  OpDivS8x8
 
struct  OpDivU16x16
 
struct  OpMul
 
struct  OpSub
 
struct  SimdTestEntry
 

Functions

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

Variables

static volatile uint32_t g_bench_sink