我编写了一个库,在其中使用 CMake 来验证 MMX、SSE、SSE2、SSE4、AVX、AVX2 和 AVX-512 的标头是否存在。除此之外,我检查指令是否存在,如果存在,我添加必要的编译器标志,-msse2 -mavx -mfma 等。
这一切都很好,但我想部署一个二进制文件,它适用于多代处理器。
问题:是否可以告诉编译器 (GCC),每当它使用 SIMD 优化函数时,它必须为体系结构列表生成代码?当然还要引入高层分支
我的想法类似于编译器如何为函数生成代码,其中输入指针是 4 或 8 字节对齐的。为了防止这种情况,我使用__builtin_assume_aligned
宏。
什么是最佳实践?多个二进制文件?命名?