__attribute__ vector_size(16) 的含义是什么?
当我第一次看到 __attribute__
关键字时,我得到了一个 C 程序。看起来它是一个 GNU 关键字。在 GCC 的此页面中,他们用 ( 解释了它的用法vector_size(16))
属性,表示:
<块引用>
int foo __attribute__ ((vector_size (16)));
使编译器将 foo 的模式设置为 16 字节,分为 int 大小的单元。假设是一个32位int(4个单位4个字节的向量),foo对应的模式将是V4SI。
这意味着什么? foo
现在声明为 4 元素整数数组吗? 有什么问题吗
如果是这样,那么: int foo[4];
?
I got a C program were I saw the __attribute__
keyword for the 1st time. It seems like it is a GNU keyword. In GCC's this page, they explain its use with the (vector_size(16))
attribute, saying:
int foo __attribute__ ((vector_size (16)));
causes the compiler to set the mode for foo, to be 16 bytes, divided into int sized units. Assuming a 32-bit int (a vector of 4 units of 4 bytes), the corresponding mode of foo will be V4SI.
What does this mean? Is foo
now declared as a 4-element array of ints? If so, what is wrong with just:
int foo[4];
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它与 SIMD 矢量化一起使用。 (不,它不会使 foo 成为数组。)
它已记录在案 此处,或 gcc 手册的“通过内置函数使用向量指令”部分(gcc 的第 6.52 节) 13.2.0)。
It's for use with SIMD vectorization. (No, it doesn't make
foo
an array.)It's documented here, or in "Using Vector Instructions through Built-in Functions" section of the gcc manual (section 6.52 as of gcc 13.2.0).
不, foo 没有被声明为数组。在此语句中,int 类型指定基本类型,而属性指定变量的向量大小(以字节为单位)。
No, foo isn't be declared as an array. In this statement the int type specifies the base type, while the attribute specifies the vector size for the variable, measured in bytes.