__attribute__ vector_size(16) 的含义是什么?

ysa*_*sap 7 attributes gcc

当我__attribute__第一次看到这个关键字时,我得到了一个 C 程序。看起来它是一个 GNU 关键字。在 GCC 的this page中,他们用该(vector_size(16))属性解释了它的用法,说:

int foo __attribute__ ((vector_size (16)));

导致编译器将 foo 的模式设置为 16 字节,分为 int 大小的单元。假设是一个32位int(4个单位4个字节的向量),foo对应的模式将是V4SI。

这是什么意思?foo现在声明为 4 元素整数数组吗?如果是这样,那么有什么问题:

int foo[4];

Kei*_*son 7

它与 SIMD 矢量化一起使用。(不,它不会创建foo数组。)

它记录在此处或 gcc 手册的“通过内置函数使用向量指令”部分(gcc 13.2.0 的第 6.52 节)。