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

发布于 2024-12-11 03:35:57 字数 542 浏览 0 评论 0原文

当我第一次看到 __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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Oo萌小芽oO 2024-12-18 03:35:57

它与 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).

离鸿 2024-12-18 03:35:57

不, 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文