用途:该技能引导代理处理 SIMD 向量化任务,包括读取自动向量化输出、编写 SSE2/AVX2/NEON intrinsics、运行时 CPU 特性检测,以及判断应使用编译器自动向量化还是手写 intrinsics。
主要能力:检查循环是否被自动向量化(GCC 用 -fopt-info-vec、-fopt-info-vec-missed、-fopt-info-vec-optimized;Clang 用 -Rpass=loop-vectorize、-Rpass-missed=loop-vectorize、-Rpass-analysis=loop-vectorize);识别常见阻碍(循环携带依赖、数据相关提前退出、非连续内存、别名、未知迭代次数、循环体内函数调用)并给出修复方式(重构、加 restrict、内联等);运行时特性检测(__builtin_cpu_supports 检查 sse2/sse4.1/sse4.2/avx/avx2/avx512f/bmi/bmi2/fma,或用 CPUID leaf 7 判断 AVX2);编写 SSE2/SSE4.2、AVX2(含 FMA)与 NEON intrinsics;对齐与性能建议(aligned_alloc、attribute((aligned(32)))、对齐与非对齐加载)。
使用方式:按工作流先检查自动向量化,再决定是否手写 intrinsics。x86 编译示例:gcc -O2 -mavx2 -mfma src/simd.c;ARM 编译示例:gcc -O2 -march=armv8-a+simd src/simd.c。选择策略:优先让编译器自动向量化,必要时用编译器 builtins,仅在手工 shuffle、gather/scatter、水平操作等场景使用 SIMD intrinsics。
适用场景:性能敏感的数值循环、数组逐元素运算、需要跨 x86 与 ARM 平台优化的低层代码。
限制:资料未提供具体性能数据、支持平台版本或收费信息;实际效果取决于编译器、CPU 与代码结构。