FastLED 3.10.9
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 1291 of file AutoResearchSimd.h.

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

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 runSimdTests().

+ Here is the caller graph for this function: