我目前正在使用AVX / SSE库,并且想制定一个运行时决策程序来评估哪些指令在给定的体系结构和OS上可用,并使用适当的重载功能。在该库中,已经有一种机制,但是存在缺陷。
我在这里不做详细介绍,但是提到的机制使用__attribute__(__target __())语法,该语法允许使用与程序其余部分不同的标志来编译该函数。但是,试图找出如何正确地使用它来编译基于SIMD指令的函数非常困难,这主要是因为在官方手册(https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#x86-Function-Attributes)上__attribute__(__target __())的选项列表不完整。至少,缺少选项“ avx”和“ avx2”。
实际上,比较此处https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/x86-Function-Attributes.html#x86-Function-Attributes和https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html中的内容似乎并没有太大不同。
所以我的问题是,在哪里可以找到gcc-v7.2.0 x86-64编译器提供的__attribute__(__target __())选项的完整列表和其他重要信息?