FastLED 3.9.15
Loading...
Searching...
No Matches

◆ getTests()

void autoresearch::simd_check::getTests ( const SimdTestEntry ** out_tests,
int * out_count )
inline

Get the static test table. Used by both runSimdTests() and the RPC handler.

Definition at line 1282 of file AutoResearchSimd.h.

1282 {
1283 static const SimdTestEntry tests[] = {
1284 // Load/Store u8x16
1285 {"load/store u8x16", test_load_store_u8_16},
1286 {"load/store u8x16 boundary", test_load_store_u8_16_boundary},
1287 // Load/Store u32x4
1288 {"load/store u32x4", test_load_store_u32_4},
1289 {"load/store u32x4 boundary", test_load_store_u32_4_boundary},
1290 {"load/store u32x4 aligned", test_load_store_u32_4_aligned},
1291 // Load/Store f32x4
1292 {"load/store f32x4", test_load_store_f32_4},
1293 {"load/store f32x4 special", test_load_store_f32_4_special},
1294 // Saturating Arithmetic u8x16
1295 {"add_sat u8x16", test_add_sat_u8_16},
1296 {"add_sat u8x16 full saturate", test_add_sat_u8_16_full_saturate},
1297 {"sub_sat u8x16", test_sub_sat_u8_16},
1298 {"sub_sat u8x16 full clamp", test_sub_sat_u8_16_full_clamp},
1299 // Scale / Blend u8x16
1300 {"scale u8x16", test_scale_u8_16},
1301 {"scale u8x16 zero", test_scale_u8_16_zero},
1302 {"scale u8x16 full", test_scale_u8_16_full},
1303 {"blend u8x16", test_blend_u8_16},
1304 {"blend u8x16 endpoints", test_blend_u8_16_endpoints},
1305 // Comparison u8x16
1306 {"min u8x16", test_min_u8_16},
1307 {"max u8x16", test_max_u8_16},
1308 {"avg u8x16", test_avg_u8_16},
1309 {"avg_round u8x16", test_avg_round_u8_16},
1310 // Bitwise u8x16
1311 {"and u8x16", test_and_u8_16},
1312 {"or u8x16", test_or_u8_16},
1313 {"xor u8x16", test_xor_u8_16},
1314 {"andnot u8x16", test_andnot_u8_16},
1315 // Broadcast / Construct u32x4
1316 {"set1 u32x4", test_set1_u32_4},
1317 {"set1 u32x4 zero", test_set1_u32_4_zero},
1318 {"set u32x4", test_set_u32_4},
1319 {"set1 f32x4", test_set1_f32_4},
1320 // Extract u32x4
1321 {"extract u32x4", test_extract_u32_4},
1322 // Bitwise u32x4
1323 {"xor u32x4", test_xor_u32_4},
1324 {"and u32x4", test_and_u32_4},
1325 {"or u32x4", test_or_u32_4},
1326 // Arithmetic i32x4
1327 {"add i32x4", test_add_i32_4},
1328 {"sub i32x4", test_sub_i32_4},
1329 // Shift u32x4 / i32x4
1330 {"srl u32x4", test_srl_u32_4},
1331 {"sll u32x4", test_sll_u32_4},
1332 {"sra i32x4", test_sra_i32_4},
1333 // Min/Max i32x4 (signed)
1334 {"min i32x4", test_min_i32_4},
1335 {"max i32x4", test_max_i32_4},
1336 // Fixed-Point Multiply
1337 {"mulhi i32x4 (Q16.16)", test_mulhi_i32_4},
1338 {"mulhi u32x4 (Q16.16)", test_mulhi_u32_4},
1339 {"mulhi su32x4 (Q16.16)", test_mulhi_su32_4},
1340 {"mulhi32 i32x4 (>>32)", test_mulhi32_i32_4},
1341 // Interleave / Unpack
1342 {"unpacklo u32x4", test_unpacklo_u32_4},
1343 {"unpackhi u32x4", test_unpackhi_u32_4},
1344 {"unpacklo u64 as u32x4", test_unpacklo_u64_as_u32_4},
1345 {"unpackhi u64 as u32x4", test_unpackhi_u64_as_u32_4},
1346 // Float Arithmetic
1347 {"add f32x4", test_add_f32_4},
1348 {"add f32x4 negative", test_add_f32_4_negative},
1349 {"sub f32x4", test_sub_f32_4},
1350 {"mul f32x4", test_mul_f32_4},
1351 {"mul f32x4 negative", test_mul_f32_4_negative},
1352 {"div f32x4", test_div_f32_4},
1353 {"sqrt f32x4", test_sqrt_f32_4},
1354 {"sqrt f32x4 zero", test_sqrt_f32_4_zero},
1355 {"min f32x4", test_min_f32_4},
1356 {"max f32x4", test_max_f32_4},
1357 // Cross-AutoResearch: SIMD vs Scalar Reference (adversarial patterns)
1358 {"crossval scale u8x16", test_crossval_scale_u8_16},
1359 {"crossval add_sat u8x16", test_crossval_add_sat_u8_16},
1360 {"crossval sub_sat u8x16", test_crossval_sub_sat_u8_16},
1361 {"crossval aligned load/store", test_crossval_aligned_load_store},
1362 {"crossval AND u8x16", test_crossval_and_u8_16},
1363 {"crossval OR u8x16", test_crossval_or_u8_16},
1364 {"crossval XOR u8x16", test_crossval_xor_u8_16},
1365 {"crossval ANDNOT u8x16", test_crossval_andnot_u8_16},
1366 {"crossval XOR u32x4", test_crossval_xor_u32_4},
1367 {"crossval AND u32x4", test_crossval_and_u32_4},
1368 {"crossval OR u32x4", test_crossval_or_u32_4},
1369 {"crossval broadcast u32x4", test_crossval_set1_u32_4},
1370 // Cross-AutoResearch: i32 arithmetic, shifts, min/max, multiply, u8 min/max, float
1371 {"crossval add i32x4", test_crossval_add_i32_4},
1372 {"crossval sub i32x4", test_crossval_sub_i32_4},
1373 {"crossval srl u32x4", test_crossval_srl_u32_4},
1374 {"crossval sll u32x4", test_crossval_sll_u32_4},
1375 {"crossval sra i32x4", test_crossval_sra_i32_4},
1376 {"crossval min i32x4", test_crossval_min_i32_4},
1377 {"crossval max i32x4", test_crossval_max_i32_4},
1378 {"crossval mulhi i32x4", test_crossval_mulhi_i32_4},
1379 {"crossval mulhi u32x4", test_crossval_mulhi_u32_4},
1380 {"crossval mulhi32 i32x4", test_crossval_mulhi32_i32_4},
1381 {"crossval min u8x16", test_crossval_min_u8_16},
1382 {"crossval max u8x16", test_crossval_max_u8_16},
1383 {"crossval float ops", test_crossval_float_ops},
1384 // Pipeline / Chained Operation Tests
1385 {"pipeline u8 scale+add+clamp", test_u8_pipeline_scale_add_clamp},
1386 {"pipeline i32 shift+add+mask", test_i32_pipeline_shift_add_mask},
1387 {"pipeline f32 mul+add+clamp", test_f32_pipeline_mul_add_clamp},
1388 };
1389 *out_tests = tests;
1390 *out_count = sizeof(tests) / sizeof(tests[0]);
1391}

References test_add_f32_4(), test_add_f32_4_negative(), test_add_i32_4(), test_add_sat_u8_16(), test_add_sat_u8_16_full_saturate(), test_and_u32_4(), test_and_u8_16(), test_andnot_u8_16(), test_avg_round_u8_16(), test_avg_u8_16(), test_blend_u8_16(), test_blend_u8_16_endpoints(), test_crossval_add_i32_4(), test_crossval_add_sat_u8_16(), test_crossval_aligned_load_store(), test_crossval_and_u32_4(), test_crossval_and_u8_16(), test_crossval_andnot_u8_16(), test_crossval_float_ops(), test_crossval_max_i32_4(), test_crossval_max_u8_16(), test_crossval_min_i32_4(), test_crossval_min_u8_16(), test_crossval_mulhi32_i32_4(), test_crossval_mulhi_i32_4(), test_crossval_mulhi_u32_4(), test_crossval_or_u32_4(), test_crossval_or_u8_16(), test_crossval_scale_u8_16(), test_crossval_set1_u32_4(), test_crossval_sll_u32_4(), test_crossval_sra_i32_4(), test_crossval_srl_u32_4(), test_crossval_sub_i32_4(), test_crossval_sub_sat_u8_16(), test_crossval_xor_u32_4(), test_crossval_xor_u8_16(), test_div_f32_4(), test_extract_u32_4(), test_f32_pipeline_mul_add_clamp(), test_i32_pipeline_shift_add_mask(), test_load_store_f32_4(), test_load_store_f32_4_special(), test_load_store_u32_4(), test_load_store_u32_4_aligned(), test_load_store_u32_4_boundary(), test_load_store_u8_16(), test_load_store_u8_16_boundary(), test_max_f32_4(), test_max_i32_4(), test_max_u8_16(), test_min_f32_4(), test_min_i32_4(), test_min_u8_16(), test_mul_f32_4(), test_mul_f32_4_negative(), test_mulhi32_i32_4(), test_mulhi_i32_4(), test_mulhi_su32_4(), test_mulhi_u32_4(), test_or_u32_4(), test_or_u8_16(), test_scale_u8_16(), test_scale_u8_16_full(), test_scale_u8_16_zero(), test_set1_f32_4(), test_set1_u32_4(), test_set1_u32_4_zero(), test_set_u32_4(), test_sll_u32_4(), test_sqrt_f32_4(), test_sqrt_f32_4_zero(), test_sra_i32_4(), test_srl_u32_4(), test_sub_f32_4(), test_sub_i32_4(), test_sub_sat_u8_16(), test_sub_sat_u8_16_full_clamp(), test_u8_pipeline_scale_add_clamp(), test_unpackhi_u32_4(), test_unpackhi_u64_as_u32_4(), test_unpacklo_u32_4(), test_unpacklo_u64_as_u32_4(), test_xor_u32_4(), and test_xor_u8_16().

Referenced by AutoResearchRemoteControl::registerFunctions(), and runSimdTests().

+ Here is the caller graph for this function: