FastLED 3.10.8
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 1290 of file AutoResearchSimd.h.

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

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: